Description:
The output of:
shell> mysqlbinlog binlog.000193
delivers wrong or at least inconsisten/missleading information:
# at 120
#141008 17:26:18 server id 15614 end_log_pos 192 CRC32 0x7ef0e34d Query thread_id=29 exec_time=0 error_code=0
the thread_id (like in Performance Schema) is in fact not the thread_id but the processlist_id, process_id or connection_id.
How to repeat:
mysql> INSERT INTO test VALUES (NULL, 'P_S test', NULL);
Query OK, 1 row affected (0.02 sec)
mysql> SELECT CONNECTION_ID();
+-----------------+
| connection_id() |
+-----------------+
| 29 |
+-----------------+
mysql> SELECT * FROM threads WHERE processlist_id = 29;
+-----------+---------------------------+------------+----------------+------------------+------------------+--------------------+---------------------+------------------+-------------------+-------------------------------------------------+------------------+------+--------------+
| THREAD_ID | NAME | TYPE | PROCESSLIST_ID | PROCESSLIST_USER | PROCESSLIST_HOST | PROCESSLIST_DB | PROCESSLIST_COMMAND | PROCESSLIST_TIME | PROCESSLIST_STATE | PROCESSLIST_INFO | PARENT_THREAD_ID | ROLE | INSTRUMENTED |
+-----------+---------------------------+------------+----------------+------------------+------------------+--------------------+---------------------+------------------+-------------------+-------------------------------------------------+------------------+------+--------------+
| 48 | thread/sql/one_connection | FOREGROUND | 29 | root | localhost | performance_schema | Query | 0 | Sending data | select * from threads where processlist_id = 29 | NULL | NULL | YES |
+-----------+---------------------------+------------+----------------+------------------+------------------+--------------------+---------------------+------------------+-------------------+-------------------------------------------------+------------------+------+--------------+
shell> grep ' 29 ' general_test.log
Time Id Command Argument
141008 17:26:18 29 Query insert into test values (null, 'P_S test', null)
141008 17:26:25 29 Query select process_id()
141008 17:26:31 29 Query select connection_id()
141008 17:27:11 29 Query SELECT DATABASE()
29 Init DB performance_schema
141008 17:27:43 29 Query select * from threads where processlist_id = 29
141008 17:28:39 29 Quit
shell> mysqlbinlog binlog.000193
# at 120
#141008 17:26:18 server id 15614 end_log_pos 192 CRC32 0x7ef0e34d Query thread_id=29 exec_time=0 error_code=0
Suggested fix:
A consistent naming of the values should be used over the whole instance: Either connection_id or process_id or processlist_id but it IS NOT the thread_id according to the performance_schema naming conventions!!!