From 2f770c91d21c6fc58f29f55782ce22472bba05bc Mon Sep 17 00:00:00 2001 From: "davi@skynet.(none)" <> Date: Mon, 19 May 2008 13:39:31 -0300 Subject: [PATCH] Bug#27430 Crash in subquery code when in PS and table DDL changed after PREPARE Add test target to the makefile that will cause all statements to be re-prepared before execution. --- Makefile.am | 7 ++++++- sql/sql_base.cc | 7 ++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index ad94c9ea325..5cf4fa9ba49 100644 --- a/Makefile.am +++ b/Makefile.am @@ -66,7 +66,7 @@ tags: test-pl test-force-pl test-full-pl test-force-full-pl test-force-pl-mem \ test-unit test-ps test-nr test-pr test-ns test-binlog-statement \ test-ext-funcs test-ext-rpl test-ext-partitions test-ext-jp \ - test-ext-stress test-ext test-embedded \ + test-ext-stress test-ext test-embedded test-reprepare \ test-fast test-fast-cursor test-fast-view test-fast-prepare \ test-full-qa @@ -111,6 +111,11 @@ test-embedded: echo "no program found for 'embedded' tests - skipped testing" ; \ fi +test-reprepare: + cd mysql-test ; \ + @PERL@ ./mysql-test-run.pl $(force) $(mem) --ps-protocol \ + --mysqld=--debug=+d,reprepare_each_statement + test: test-unit test-ns test-pr test-full: test test-nr test-ps diff --git a/sql/sql_base.cc b/sql/sql_base.cc index d7c4d899b0e..29f97cf37ce 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -3770,16 +3770,17 @@ check_and_update_table_version(THD *thd, /* Always maintain the latest version and type */ tables->set_metadata_id(table_share); } -#if 0 + #ifndef DBUG_OFF /* Spuriously reprepare each statement. */ - if (thd->m_metadata_observer && thd->stmt_arena->is_reprepared == FALSE) + if (_db_strict_keyword_("reprepare_each_statement") && + thd->m_metadata_observer && thd->stmt_arena->is_reprepared == FALSE) { thd->m_metadata_observer->report_error(thd); return TRUE; } #endif -#endif + return FALSE; }