From: Georgi Kodinov Date: December 3 2009 3:52pm Subject: bzr commit into mysql-5.0-bugteam branch (joro:2859) Bug#48709 List-Archive: http://lists.mysql.com/commits/92706 X-Bug: 48709 Message-Id: <200912031552.nB3FqcCQ000921@magare.gmz> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0328324702874119923==" --===============0328324702874119923== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/kgeorge/mysql/work/B48709-5.0-bugteam/ based on revid:epotemkin@stripped 2859 Georgi Kodinov 2009-12-03 Bug #48709: Assertion failed in sql_select.cc:11782: int join_read_key(JOIN_TAB*) The eq_ref access method TABLE_REF (accessed through JOIN_TAB) to save state and to track if this is the first row it finds or not. This state was not reset on subquery re-execution causing an assert. Fixed by resetting the state before the subquery re-execution. modified: mysql-test/mysql-test-run.pl mysql-test/r/subselect.result mysql-test/t/subselect.test sql/sql_select.cc === modified file 'mysql-test/mysql-test-run.pl' --- a/mysql-test/mysql-test-run.pl 2009-09-02 13:36:52 +0000 +++ b/mysql-test/mysql-test-run.pl 2009-12-03 15:52:32 +0000 @@ -5109,7 +5109,6 @@ sub valgrind_arguments { else { mtr_add_arg($args, "--tool=memcheck"); # From >= 2.1.2 needs this option - mtr_add_arg($args, "--alignment=8"); mtr_add_arg($args, "--leak-check=yes"); mtr_add_arg($args, "--num-callers=16"); mtr_add_arg($args, "--suppressions=%s/valgrind.supp", $glob_mysql_test_dir) === modified file 'mysql-test/r/subselect.result' --- a/mysql-test/r/subselect.result 2009-10-30 09:40:44 +0000 +++ b/mysql-test/r/subselect.result 2009-12-03 15:52:32 +0000 @@ -4502,4 +4502,29 @@ WHERE a = 230; MAX(b) (SELECT COUNT(*) FROM st1,st2 WHERE st2.b <= t1.b) NULL 0 DROP TABLE t1, st1, st2; +# +# Bug #48709: Assertion failed in sql_select.cc:11782: +# int join_read_key(JOIN_TAB*) +# +CREATE TABLE t1 (pk int PRIMARY KEY, int_key int); +INSERT INTO t1 VALUES (10,1), (14,1); +CREATE TABLE t2 (pk int PRIMARY KEY, int_key int); +INSERT INTO t2 VALUES (3,3), (5,NULL), (7,3); +# should have eq_ref for t1 +EXPLAIN +SELECT * FROM t2 outr +WHERE outr.int_key NOT IN (SELECT t1.pk FROM t1, t2) +ORDER BY outr.pk; +id select_type table type possible_keys key key_len ref rows Extra +x x outr ALL x x x x x x +x x t1 eq_ref x x x x x x +x x t2 index x x x x x x +# should not crash on debug binaries +SELECT * FROM t2 outr +WHERE outr.int_key NOT IN (SELECT t1.pk FROM t1, t2) +ORDER BY outr.pk; +pk int_key +3 3 +7 3 +DROP TABLE t1,t2; End of 5.0 tests. === modified file 'mysql-test/t/subselect.test' --- a/mysql-test/t/subselect.test 2009-10-30 09:40:44 +0000 +++ b/mysql-test/t/subselect.test 2009-12-03 15:52:32 +0000 @@ -3481,4 +3481,30 @@ WHERE a = 230; DROP TABLE t1, st1, st2; +--echo # +--echo # Bug #48709: Assertion failed in sql_select.cc:11782: +--echo # int join_read_key(JOIN_TAB*) +--echo # + +CREATE TABLE t1 (pk int PRIMARY KEY, int_key int); +INSERT INTO t1 VALUES (10,1), (14,1); + +CREATE TABLE t2 (pk int PRIMARY KEY, int_key int); +INSERT INTO t2 VALUES (3,3), (5,NULL), (7,3); + +--echo # should have eq_ref for t1 +--replace_column 1 x 2 x 5 x 6 x 7 x 8 x 9 x 10 x +EXPLAIN +SELECT * FROM t2 outr +WHERE outr.int_key NOT IN (SELECT t1.pk FROM t1, t2) +ORDER BY outr.pk; + +--echo # should not crash on debug binaries +SELECT * FROM t2 outr +WHERE outr.int_key NOT IN (SELECT t1.pk FROM t1, t2) +ORDER BY outr.pk; + +DROP TABLE t1,t2; + + --echo End of 5.0 tests. === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2009-11-12 17:13:08 +0000 +++ b/sql/sql_select.cc 2009-12-03 15:52:32 +0000 @@ -1553,6 +1553,11 @@ JOIN::reinit() if (join_tab_save) memcpy(join_tab, join_tab_save, sizeof(JOIN_TAB) * tables); + /* need to reset ref access state (see join_read_key) */ + if (join_tab) + for (int i= 0; i < tables; i++) + join_tab->ref.key_err= TRUE; + if (tmp_join) restore_tmp(); --===============0328324702874119923== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/joro@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: joro@stripped # target_branch: file:///home/kgeorge/mysql/work/B48709-5.0-bugteam/ # testament_sha1: 7428bd30bf0d7432894c807edb02034896f49ef2 # timestamp: 2009-12-03 17:52:38 +0200 # base_revision_id: epotemkin@stripped\ # 4muwnr152xqkcwm7 # # Begin bundle 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 JOyg --===============0328324702874119923==--