mysql in语句产生的奇怪的bug

mysql in语句产生一个奇怪的bug,在将performance_schema.events_statements_history_long和performance_schema.threads c通过thread_id列使用in连接时,出不来结果,但是用exists可以出来。

mysql> (select  c.thread_id  from information_schema.innodb_lock_waits w,information_schema.innodb_trx b,performance_schema.threads c where w.blocking_trx_id = b.trx_id and b.trx_mysql_thread_id = c.PROCESSLIST_ID ) ;
+-----------+
| thread_id |
+-----------+
|        66 |
+-----------+
1 row in set, 1 warning (0.00 sec)

上面这个有一个66的结果

 

 

mysql>  select  THREAD_ID,EVENT_ID,EVENT_NAME,CURRENT_SCHEMA,SQL_TEXT from performance_schema.events_statements_history_long cn  where cn.thread_id in  (select  c.thread_id  from information_schema.innodb_lock_waits w,information_schema.innodb_trx b,performance_schema.threads c where w.blocking_trx_id = b.trx_id and b.trx_mysql_thread_id = c.PROCESSLIST_ID ) order by THREAD_ID,EVENT_ID;
Empty set (0.01 sec)

 

上面这个没有内容输出

mysql> select  THREAD_ID,EVENT_ID,EVENT_NAME,CURRENT_SCHEMA,SQL_TEXT from performance_schema.events_statements_history_long cn  where exists (select  1  from information_schema.innodb_lock_waits w,information_schema.innodb_trx b,performance_schema.threads c where w.blocking_trx_id = b.trx_id and b.trx_mysql_thread_id = c.PROCESSLIST_ID and  cn.THREAD_ID = c.THREAD_ID );
+-----------+----------+------------------------------+----------------+----------------------------------+
| THREAD_ID | EVENT_ID | EVENT_NAME                   | CURRENT_SCHEMA | SQL_TEXT                         |
+-----------+----------+------------------------------+----------------+----------------------------------+
|        66 |        1 | statement/sql/select         | NULL           | select @@version_comment limit 1 |
|        66 |        2 | statement/sql/show_databases | NULL           | show databases                   |
|        66 |        3 | statement/sql/error          | NULL           | creat database wftest            |
|        66 |        4 | statement/sql/create_db      | NULL           | create database wftest           |
|        66 |        5 | statement/sql/select         | NULL           | SELECT DATABASE()                |
|        66 |        6 | statement/com/Init DB        | NULL           | NULL                             |
|        66 |        7 | statement/sql/show_databases | wftest         | show databases                   |
|        66 |        8 | statement/sql/show_tables    | wftest         | show tables                      |
|        66 |        9 | statement/sql/create_table   | wftest         | create table t(id int)           |
|        66 |       10 | statement/sql/insert         | wftest         | insert into t values(1)          |
|        66 |       11 | statement/sql/commit         | wftest         | commit                           |
|        66 |       12 | statement/sql/begin          | wftest         | start transaction                |
|        66 |       13 | statement/sql/update         | wftest         | update t set id = 2 where id=1   |
+-----------+----------+------------------------------+----------------+----------------------------------+
13 rows in set, 289 warnings (0.02 sec)

上面这个有结果。奇怪。

反馈给mysql团队了,等等看后续如何。
https://bugs.mysql.com/bug.php?id=100795

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值