List:Commits« Previous MessageNext Message »
From:Konstantin Osipov Date:October 13 2009 7:07pm
Subject:bzr push into mysql-5.5.0-next-mr-runtime branch (kostja:2913 to 2914)
Bug#27430
View as plain text  
 2914 Konstantin Osipov	2009-10-13
      Backport of:
      -----------------------------------------------------------
      revno: 2630.2.4
      committer: Konstantin Osipov <konstantin@stripped>
      branch nick: mysql-6.0-runtime
      timestamp: Fri 2008-05-23 02:42:32 +0400
      message:
        Bug#27430 "Crash in subquery code when in PS and table DDL changed after
        PREPARE"
        Add a test case for the situation with small TDC and many merge children.
      
      from 6.0-codebase.
     @ mysql-test/r/merge.result
        Update results (Bug#27430)
     @ mysql-test/t/merge.test
        Add test case (Bug#27430)

    modified:
      mysql-test/r/merge.result
      mysql-test/t/merge.test
 2913 Konstantin Osipov	2009-10-13
      Backport of the following revision from 6.0-codebase:
      ----------------------------------------------------------
      revno: 2617.1.12
      committer: kostja@bodhi.(none)
      timestamp: Sun 2008-04-20 11:18:52 +0400
      message:
        A fix for Bug#32771 "events_bugs.test fails randomly".
        In Event_scheduler::stop(), which may be called from destructor,
        wait synchronously for the parallel Event_scheduler::stop() to
        complete before returning. This fixes a race between
        MySQL shutdown thread and the scheduler thread who could call
        stop() in parallel.
     @ sql/event_scheduler.cc
        There was a race condition between the shutdown thread and
        the scheduler thread: the shutdown thread could delete the scheduler
        mutex before the sheduler has stopped.

    modified:
      sql/event_scheduler.cc
=== modified file 'mysql-test/r/merge.result'
--- a/mysql-test/r/merge.result	2009-09-10 09:18:29 +0000
+++ b/mysql-test/r/merge.result	2009-10-13 19:04:58 +0000
@@ -2220,3 +2220,39 @@ tr1		CREATE DEFINER=`root`@`localhost` T
 DROP TRIGGER tr1;
 DROP TABLE t1, t2, t3;
 End of 5.1 tests
+#
+# An additional test case for Bug#27430 Crash in subquery code
+# when in PS and table DDL changed after PREPARE
+#
+# Test merge table with too many merge children.
+#
+drop table if exists t_parent;
+set @save_table_definition_cache=@@global.table_definition_cache;
+#
+# Set @@global.table_definition_cache to minimum
+#
+set @@global.table_definition_cache=400;
+set @a=null;
+#
+# Create 400 merge children
+#
+set @a=concat("create table t_parent (a int) union(", @a,
+") insert_method=first engine=mrg_myisam");
+prepare stmt from @a;
+execute stmt;
+prepare stmt from "select * from t_parent";
+execute stmt;
+ERROR HY000: Prepared statement needs to be re-prepared
+execute stmt;
+ERROR HY000: Prepared statement needs to be re-prepared
+execute stmt;
+ERROR HY000: Prepared statement needs to be re-prepared
+deallocate prepare stmt;
+#
+# Create merge parent 
+#
+#
+# Cleanup
+#
+drop table t_parent;
+set @@global.table_definition_cache=@save_table_definition_cache;

=== modified file 'mysql-test/t/merge.test'
--- a/mysql-test/t/merge.test	2009-08-13 19:49:28 +0000
+++ b/mysql-test/t/merge.test	2009-10-13 19:04:58 +0000
@@ -1634,3 +1634,63 @@ DROP TRIGGER tr1;
 DROP TABLE t1, t2, t3;
 
 --echo End of 5.1 tests
+
+--echo #
+--echo # An additional test case for Bug#27430 Crash in subquery code
+--echo # when in PS and table DDL changed after PREPARE
+--echo #
+--echo # Test merge table with too many merge children.
+--echo #
+--disable_warnings
+drop table if exists t_parent;
+--enable_warnings
+set @save_table_definition_cache=@@global.table_definition_cache;
+--echo #
+--echo # Set @@global.table_definition_cache to minimum
+--echo #
+set @@global.table_definition_cache=400;
+set @a=null;
+let $1 = 400;
+--echo #
+--echo # Create 400 merge children
+--echo #
+--disable_query_log
+while ($1)
+{
+--disable_warnings
+  eval drop table if exists t$1;
+--enable_warnings
+  eval create table t$1 (a int) engine=myisam;
+  eval set @a=ifnull(concat(@a, ", ", "t$1"), "t$1");
+  dec $1;
+}
+--enable_query_log
+set @a=concat("create table t_parent (a int) union(", @a,
+              ") insert_method=first engine=mrg_myisam");
+prepare stmt from @a;
+execute stmt;
+prepare stmt from "select * from t_parent";
+--error ER_NEED_REPREPARE
+execute stmt;
+--error ER_NEED_REPREPARE
+execute stmt;
+--error ER_NEED_REPREPARE
+execute stmt;
+deallocate prepare stmt;
+--echo #
+--echo # Create merge parent 
+--echo #
+
+--echo #
+--echo # Cleanup
+--echo #
+let $1 = 400;
+--disable_query_log
+while ($1)
+{
+  eval drop table t$1;
+  dec $1;
+}
+--enable_query_log
+drop table t_parent;
+set @@global.table_definition_cache=@save_table_definition_cache;


Attachment: [text/bzr-bundle] bzr/kostja@sun.com-20091013190458-zys02qqwuavm9k2f.bundle
Thread
bzr push into mysql-5.5.0-next-mr-runtime branch (kostja:2913 to 2914)Bug#27430Konstantin Osipov13 Oct