Bug #54734 | assert in Diagnostics_area::set_ok_status | ||
---|---|---|---|
Submitted: | 23 Jun 2010 11:33 | Modified: | 15 Oct 2010 13:29 |
Reporter: | Matthias Leich | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Errors | Severity: | S3 (Non-critical) |
Version: | 5.5.5-m3,5.1.49 | OS: | Any |
Assigned to: | Jon Olav Hauglid | CPU Architecture: | Any |
[23 Jun 2010 11:33]
Matthias Leich
[23 Jun 2010 11:36]
Matthias Leich
Archive with log and RQG grammars
Attachment: problem.tgz (application/x-compressed-tar, text), 48.79 KiB.
[1 Jul 2010 17:39]
Matthias Leich
Simplified test for MTR: CREATE TABLE t1 (PRIMARY KEY(pk)) ENGINE = MyISAM PARTITION BY KEY (pk) PARTITIONS 2 AS SELECT 1 AS pk; CREATE FUNCTION f1() RETURNS INTEGER RETURN (SELECT 1 FROM not_exists); CREATE ALGORITHM = UNDEFINED VIEW v1 AS SELECT pk FROM t1 A WHERE f1() = 13; UPDATE v1 SET pk = 7 WHERE pk > 0;
[1 Jul 2010 17:53]
Matthias Leich
Result on 1. 5.1.49-log mysql-5.1 revno: 3410 2010-06-03 ----------------------------------- CREATE TABLE t1 (PRIMARY KEY(pk)) ENGINE = MyISAM PARTITION BY KEY (pk) PARTITIONS 2 AS SELECT 1 AS pk; CREATE FUNCTION f1() RETURNS INTEGER RETURN (SELECT 1 FROM not_exists); CREATE ALGORITHM = UNDEFINED VIEW v1 AS SELECT pk FROM t1 A WHERE f1() = 13; UPDATE v1 SET pk = 7 WHERE pk > 0; ERROR HY000: View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them <==== OK 2. 5.1.49-debug-log mysql-5.1 revno: 3410 2010-06-03 ----------------------------------- Thread 1 (process 29124): #0 0x00007f9ab0404ce6 in pthread_kill () from /lib64/libpthread.so.0 #1 0x0000000000b21a1f in my_write_core (sig=6) at stacktrace.c:329 #2 0x00000000006bd0ed in handle_segfault (sig=6) at mysqld.cc:2571 #3 <signal handler called> #4 0x00007f9aaf60d5c5 in raise () from /lib64/libc.so.6 #5 0x00007f9aaf60ebb3 in abort () from /lib64/libc.so.6 #6 0x00007f9aaf6061e9 in __assert_fail () from /lib64/libc.so.6 #7 0x00000000006a30f2 in Diagnostics_area::set_ok_status (this=0x11c5050, thd=0x11c3998, affected_rows_arg=0, last_insert_id_arg=0, message_arg=0x419c7040 "Rows matched: 0 Changed: 0 Warnings: 0") at sql_class.cc:499 #8 0x00000000005cf8d6 in my_ok (thd=0x11c3998, affected_rows=0, id=0, message=0x419c7040 "Rows matched: 0 Changed: 0 Warnings: 0") at sql_class.h:2366 #9 0x0000000000787395 in mysql_update (thd=0x11c3998, table_list=0x12512e8, fields=@0x11c59b8, values=@0x11c5d98, conds=0x1236a50, order_num=0, order=0x0, limit=18446744073709551615, handle_duplicates=DUP_ERROR, ignore=false) at sql_update.cc:837 #10 0x00000000006d1b30 in mysql_execute_command (thd=0x11c3998) at sql_parse.cc:3090 #11 0x00000000006d81ac in mysql_parse (thd=0x11c3998, inBuf=0x12511f8 "UPDATE v1 SET pk = 7 WHERE pk > 0", length=33, found_semicolon=0x419c8ee0) at sql_parse.cc:5994 #12 0x00000000006d9034 in dispatch_command (command=COM_QUERY, thd=0x11c3998, packet=0x1218269 "UPDATE v1 SET pk = 7 WHERE pk > 0", packet_length=33) at sql_parse.cc:1241 #13 0x00000000006da502 in do_command (thd=0x11c3998) at sql_parse.cc:882 #14 0x00000000006c688c in handle_one_connection (arg=0x11c3998) at sql_connect.cc:1134 #15 0x00007f9ab0400040 in start_thread () from /lib64/libpthread.so.0 #16 0x00007f9aaf6ae08d in clone () from /lib64/libc.so.6 #17 0x0000000000000000 in ?? ()
[2 Jul 2010 8:29]
Jon Olav Hauglid
Partitioned tables not needed: CREATE TABLE t1 (PRIMARY KEY(pk)) AS SELECT 1 AS pk; CREATE FUNCTION f1() RETURNS INTEGER RETURN (SELECT 1 FROM not_exists); CREATE VIEW v1 AS SELECT pk FROM t1 WHERE f1() = 13; UPDATE v1 SET pk = 7 WHERE pk > 0;
[2 Jul 2010 10:16]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/112727 3456 Jon Olav Hauglid 2010-07-02 Bug #54734 assert in Diagnostics_area::set_ok_status This assert checks that the server does not try to send OK to the client if there has been some error during processing. This to make sure that the error is in fact sent to the client. The problem was that view errors during processing of WHERE conditions in UPDATE statements where not detected by the update code. It therefore tried to send OK to the client, triggering the assert. The bug was only noticeable in debug builds. This patch fixes the problem by making sure that the update code checks for errors during condition processing and acts accordingly.
[5 Jul 2010 13:54]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/112896 3465 Jon Olav Hauglid 2010-07-05 Bug #54734 assert in Diagnostics_area::set_ok_status This assert checks that the server does not try to send OK to the client if there has been some error during processing. This to make sure that the error is in fact sent to the client. The problem was that view errors during processing of WHERE conditions in UPDATE statements where not detected by the update code. It therefore tried to send OK to the client, triggering the assert. The bug was only noticeable in debug builds. This patch fixes the problem by making sure that the update code checks for errors during condition processing and acts accordingly.
[15 Jul 2010 6:41]
Anitha Gopi
Also seen on mysql-next-mr-wl5136-stage # 2010-07-15T08:07:23 #0 0x000000382860bd02 in pthread_kill () from /lib64/libpthread.so.0 # 2010-07-15T08:07:23 #1 0x0000000000b4904d in my_write_core (sig=6) at stacktrace.c:326 # 2010-07-15T08:07:23 #2 0x00000000006985c5 in handle_segfault (sig=6) at mysqld.cc:2789 # 2010-07-15T08:07:23 #3 <signal handler called> # 2010-07-15T08:07:23 #4 0x0000003827a30265 in raise () from /lib64/libc.so.6 # 2010-07-15T08:07:23 #5 0x0000003827a31d10 in abort () from /lib64/libc.so.6 # 2010-07-15T08:07:23 #6 0x0000003827a296e6 in __assert_fail () from /lib64/libc.so.6 # 2010-07-15T08:07:23 #7 0x0000000000762dbe in Diagnostics_area::set_ok_status (this=0x135b95c0, thd=0x135b68d8, affected_rows_arg=0, # 2010-07-15T08:07:23 last_insert_id_arg=0, message_arg=0x4909eb40 "Rows matched: 0 Changed: 0 Warnings: 2") at sql_error.cc:360 # 2010-07-15T08:07:23 #8 0x00000000005a2c9a in my_ok (thd=0x135b68d8, affected_rows=0, id=0, # 2010-07-15T08:07:23 message=0x4909eb40 "Rows matched: 0 Changed: 0 Warnings: 2") at sql_class.h:2845 # 2010-07-15T08:07:23 #9 0x000000000076cc05 in mysql_update (thd=0x135b68d8, table_list=0x133f9120, fields=..., values=..., # 2010-07-15T08:07:23 conds=0x2aaab8174170, order_num=0, order=0x0, limit=1, handle_duplicates=DUP_ERROR, ignore=false, # 2010-07-15T08:07:23 found_return=0x4909fce0, updated_return=0x4909fcd8) at sql_update.cc:850 # 2010-07-15T08:07:23 #10 0x00000000006ac9ab in mysql_execute_command (thd=0x135b68d8) at sql_parse.cc:3080 # 2010-07-15T08:07:23 #11 0x00000000006b1d12 in mysql_parse (thd=0x135b68d8, # 2010-07-15T08:07:23 inBuf=0x133f8fa8 "UPDATE testdb_S . t1_view2_N SET `pk` = 7 WHERE SLEEP( 0.5 * 0.7 * 1 ) = 0 LIMIT 1", length=85, # 2010-07-15T08:07:23 parser_state=0x490a0610) at sql_parse.cc:5816 # 2010-07-15T08:07:23 #12 0x00000000006b326e in dispatch_command (command=COM_QUERY, thd=0x135b68d8, # 2010-07-15T08:07:23 packet=0x134fe699 "UPDATE testdb_S . t1_view2_N SET `pk` = 7 WHERE SLEEP( 0.5 * 0.7 * 1 ) = 0 LIMIT 1", # 2010-07-15T08:07:23 packet_length=85) at sql_parse.cc:1085 # 2010-07-15T08:07:23 #13 0x00000000006b47a0 in do_command (thd=0x135b68d8) at sql_parse.cc:771 # 2010-07-15T08:07:23 #14 0x00002aaaaabc3738 in tp_process_event (my_thread_data=0x2aaaaadc65e0) at thread_pool.cc:858 # 2010-07-15T08:07:23 #15 0x00002aaaaabc3ae9 in tp_group_low_level_wait_for_events (tp_group_low_level_cntx=0x132f7668, # 2010-07-15T08:07:23 my_tp_group=0x2aaaaadc6300, my_thread_data=0x2aaaaadc65e0, next_events=0x490a0f90, wait=true) at epoll.ic:237 # 2010-07-15T08:07:23 #16 0x00002aaaaabc3d29 in handle_waiting_thread (my_tp_group=0x2aaaaadc6300, my_thread_data=0x2aaaaadc65e0, wait=true) # 2010-07-15T08:07:23 at thread_pool.cc:1176 # 2010-07-15T08:07:23 #17 0x00002aaaaabc3dff in high_concurrency_algorithm (my_tp_group=0x2aaaaadc6300, my_thread_data=0x2aaaaadc65e0) # 2010-07-15T08:07:23 at thread_pool.cc:1318 # 2010-07-15T08:07:23 #18 0x00002aaaaabc3fec in tp_worker_thread_main (arg=0x2aaaaadc65e0) at thread_pool.cc:1466 # 2010-07-15T08:07:23 #19 0x000000382860673d in start_thread () from /lib64/libpthread.so.0 # 2010-07-15T08:07:23 #20 0x0000003827ad3d1d in clone () from /lib64/libc.so.6
[16 Jul 2010 9:03]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/113739 3488 Jon Olav Hauglid 2010-07-16 Bug #54734 assert in Diagnostics_area::set_ok_status This assert checks that the server does not try to send OK to the client if there has been some error during processing. This to make sure that the error is in fact sent to the client. The problem was that view errors during processing of WHERE conditions in UPDATE statements where not detected by the update code. It therefore tried to send OK to the client, triggering the assert. The bug was only noticeable in debug builds. This patch fixes the problem by making sure that the update code checks for errors during condition processing and acts accordingly.
[19 Jul 2010 9:05]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/113834 3491 Jon Olav Hauglid 2010-07-19 Bug #54734 assert in Diagnostics_area::set_ok_status This assert checks that the server does not try to send OK to the client if there has been some error during processing. This is done to make sure that the error is in fact sent to the client. The problem was that view errors during processing of WHERE conditions in UPDATE statements where not detected by the update code. It therefore tried to send OK to the client, triggering the assert. The bug was only noticeable in debug builds. This patch fixes the problem by making sure that the update code checks for errors during condition processing and acts accordingly.
[19 Jul 2010 9:23]
Jon Olav Hauglid
Pushed to mysql-5.1-bugteam (5.1.49) and merged to mysql-trunk-merge.
[23 Jul 2010 12:22]
Bugs System
Pushed into mysql-trunk 5.5.6-m3 (revid:alik@sun.com-20100723121820-jryu2fuw3pc53q9w) (version source revid:vasil.dimov@oracle.com-20100531152341-x2d4hma644icamh1) (merge vers: 5.5.5-m3) (pib:18)
[23 Jul 2010 12:29]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100723121929-90e9zemk3jkr2ocy) (version source revid:vasil.dimov@oracle.com-20100531152341-x2d4hma644icamh1) (pib:18)
[30 Jul 2010 3:10]
Paul DuBois
Noted in 5.1.50, 5.5.6 changelogs. In debug builds, an assertion could be raised when the server tried to send an OK packet to the client after having failed to detect errors during processing of the WHERE condition of an UPDATE statement.
[19 Aug 2010 15:41]
Bugs System
Pushed into mysql-5.1 5.1.51 (revid:build@mysql.com-20100819151858-muaaor6jojb5ouzj) (version source revid:build@mysql.com-20100819151858-muaaor6jojb5ouzj) (merge vers: 5.1.51) (pib:20)
[14 Oct 2010 8:36]
Bugs System
Pushed into mysql-5.1-telco-7.0 5.1.51-ndb-7.0.20 (revid:martin.skold@mysql.com-20101014082627-jrmy9xbfbtrebw3c) (version source revid:martin.skold@mysql.com-20101014082627-jrmy9xbfbtrebw3c) (merge vers: 5.1.51-ndb-7.0.20) (pib:21)
[14 Oct 2010 8:51]
Bugs System
Pushed into mysql-5.1-telco-6.3 5.1.51-ndb-6.3.39 (revid:martin.skold@mysql.com-20101014083757-5qo48b86d69zjvzj) (version source revid:martin.skold@mysql.com-20101014083757-5qo48b86d69zjvzj) (merge vers: 5.1.51-ndb-6.3.39) (pib:21)
[14 Oct 2010 9:07]
Bugs System
Pushed into mysql-5.1-telco-6.2 5.1.51-ndb-6.2.19 (revid:martin.skold@mysql.com-20101014084420-y54ecj85j5we27oa) (version source revid:martin.skold@mysql.com-20101014084420-y54ecj85j5we27oa) (merge vers: 5.1.51-ndb-6.2.19) (pib:21)
[15 Oct 2010 13:29]
Jon Stephens
Already documented in the 5.1.50 changelog. Reverting to Closed state.