summaryrefslogtreecommitdiff
path: root/sql/sql_parse.cc
diff options
context:
space:
mode:
authorunknown <guilhem@mysql.com>2003-12-04 22:42:18 +0100
committerunknown <guilhem@mysql.com>2003-12-04 22:42:18 +0100
commit66927c51fa8e25f9d8a9d818f4ff7ed2a64c5ecb (patch)
treeca8ac74120edb9722c802f5ad77a4b4ecdae17d2 /sql/sql_parse.cc
parent0a9ae10f9e3087ace610b2cfa508eb280f3dd7ad (diff)
downloadmariadb-git-66927c51fa8e25f9d8a9d818f4ff7ed2a64c5ecb.tar.gz
- Fix for BUG#1858 "SQL-Thread stops working when using optimize table":
we change THD::system_thread from a 'bool' to a bitmap to be able to distinguish between delayed-insert threads and slave threads. - Fix for BUG#1701 "Update from multiple tables" (one line in sql_parse.cc, plus a new test rpl_multi_update.test). That's just adding an initialization. sql/repl_failsafe.cc: comment to warn about this unused code sql/slave.cc: Now thd->system_thread is a bitmap, not a bool. sql/sql_class.h: 'bool' for THD::system_thread is not accurate enough; sometimes we need to distinguish between delayed-insert threads and slave threads; so changing THD::system_thread to a bitmap (uint). sql/sql_insert.cc: thd.system_thread is now a bitmap sql/sql_parse.cc: We need to initialize thd->lex.select_lex.options in mysql_init_query(); it's already initialized in dispatch_command() but replication calls mysql_parse() directly, thus bypassing dispatch_command(). Not initing it here leads to a query influencing the next query, in the slave SQL thread. The initialization in dispatch_command() must be kept as this command uses the variable in tests, even when the command was not a query (i.e. when mysql_init_query() was not called).
Diffstat (limited to 'sql/sql_parse.cc')
-rw-r--r--sql/sql_parse.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 0789a1768d1..2d40d6fcf36 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -2902,6 +2902,12 @@ mysql_init_query(THD *thd)
thd->lex.select_lex.table_list.first=0;
thd->lex.select_lex.table_list.next= (byte**) &thd->lex.select_lex.table_list.first;
thd->lex.select_lex.next=0;
+ /*
+ select_lex.options is also inited in dispatch_command(), but for
+ replication (which bypasses dispatch_command() and calls mysql_parse()
+ directly) we must do it here.
+ */
+ thd->lex.select_lex.options=0;
thd->lex.olap=0;
thd->lex.select->olap= UNSPECIFIED_OLAP_TYPE;
thd->fatal_error=0; // Safety