List:Commits« Previous MessageNext Message »
From:Oystein Grovlen Date:November 4 2010 10:37am
Subject:bzr commit into mysql-5.5-bugteam branch (oystein.grovlen:3258) Bug#57704
View as plain text  
#At file:///home/og136792/mysql/mysql-5.5-bugteam/ based on revid:davi.arnaut@stripped

 3258 Oystein Grovlen	2010-11-04
      Bug#57704 Cleanup code dies with void TABLE::set_keyread(bool): Assertion `file' failed.
      
      This bug was introduced in this revision: 
      kostja@stripped
      ("A pre-requisite patch for the fix for Bug#52044.")
      
      It happens because close_thread_tables() is now called in
      open_and_lock_tables upon failure.  Hence, table is no longer
      open when optimizer tries to do cleanup.
      
      Fix: Make sure to do cleanup in st_select_lex_unit::prepare()
      upon failure. This way, cleanup() is called before tables are
      released.
     @ mysql-test/r/subselect.result
        Added test case for Bug#57704.
     @ mysql-test/t/subselect.test
        Added test case for Bug#57704.
     @ sql/sql_union.cc
        st_select_lex_unit::prepare():  On failure, make sure cleanup()
        is called.

    modified:
      mysql-test/r/subselect.result
      mysql-test/t/subselect.test
      sql/sql_union.cc
=== modified file 'mysql-test/r/subselect.result'
--- a/mysql-test/r/subselect.result	2010-09-09 15:00:33 +0000
+++ b/mysql-test/r/subselect.result	2010-11-04 10:36:24 +0000
@@ -5005,3 +5005,15 @@ SELECT * FROM t2 UNION SELECT * FROM t2
 ORDER BY (SELECT * FROM t1 WHERE MATCH(a) AGAINST ('+abc' IN BOOLEAN MODE));
 DROP TABLE t1,t2;
 End of 5.1 tests
+#
+# Bug #57704: Cleanup code dies with void TABLE::set_keyread(bool): 
+#             Assertion `file' failed.
+#
+CREATE TABLE t1 (a INT);
+SELECT 1 FROM 
+(SELECT ROW(
+(SELECT 1 FROM t1 RIGHT JOIN 
+(SELECT 1 FROM t1, t1 t2) AS d ON 1),
+1) FROM t1) AS e;
+ERROR 21000: Operand should contain 1 column(s)
+DROP TABLE t1;

=== modified file 'mysql-test/t/subselect.test'
--- a/mysql-test/t/subselect.test	2010-06-25 13:32:47 +0000
+++ b/mysql-test/t/subselect.test	2010-11-04 10:36:24 +0000
@@ -3946,3 +3946,21 @@ DROP TABLE t1,t2;
 --enable_result_log
 
 --echo End of 5.1 tests
+
+--echo #
+--echo # Bug #57704: Cleanup code dies with void TABLE::set_keyread(bool): 
+--echo #             Assertion `file' failed.
+--echo #
+
+CREATE TABLE t1 (a INT);
+
+--error 1241
+SELECT 1 FROM 
+  (SELECT ROW(
+    (SELECT 1 FROM t1 RIGHT JOIN 
+      (SELECT 1 FROM t1, t1 t2) AS d ON 1),
+    1) FROM t1) AS e;
+
+DROP TABLE t1;
+
+

=== modified file 'sql/sql_union.cc'
--- a/sql/sql_union.cc	2010-07-27 12:42:36 +0000
+++ b/sql/sql_union.cc	2010-11-04 10:36:24 +0000
@@ -443,6 +443,7 @@ bool st_select_lex_unit::prepare(THD *th
 
 err:
   thd_arg->lex->current_select= lex_select_save;
+  cleanup();
   DBUG_RETURN(TRUE);
 }
 


Attachment: [text/bzr-bundle] bzr/oystein.grovlen@oracle.com-20101104103624-qb71grlewtq3gm7s.bundle
Thread
bzr commit into mysql-5.5-bugteam branch (oystein.grovlen:3258) Bug#57704Oystein Grovlen4 Nov
Re: bzr commit into mysql-5.5-bugteam branch (oystein.grovlen:3258)Bug#57704Olav Sandstaa8 Nov
  • Re: bzr commit into mysql-5.5-bugteam branch (oystein.grovlen:3258)Bug#57704Øystein Grøvlen10 Nov