diff options
author | istruewing@stella.local <> | 2007-11-05 16:25:40 +0100 |
---|---|---|
committer | istruewing@stella.local <> | 2007-11-05 16:25:40 +0100 |
commit | 3eaf82a17504158aa29b1f39360f365428943de4 (patch) | |
tree | d8c7de38aaf2b0bbe66f0db7225e675e17f08454 /sql/sql_servers.cc | |
parent | 5777cc29982b664b653a02d412f1cf6f56bda1b7 (diff) | |
download | mariadb-git-3eaf82a17504158aa29b1f39360f365428943de4.tar.gz |
Bug#31210 - INSERT DELAYED crashes server when used on
partitioned table
Trying INSERT DELAYED on a partitioned table, that has not been
used right before, crashes the server. When a table is used for
select or update, it is kept open for some time. This period I
mean with "right before".
Information about partitioning of a table is stored in form of
a string in the .frm file. Parsing of this string requires a
correctly set up lexical analyzer (lex). The partitioning code
uses a new temporary instance of a lex. But it does still refer
to the previously active lex. The delayd insert thread does not
initialize its lex though...
Added initialization for thd->lex before open table in the delayed
thread and at all other places where it is necessary to call
lex_start() if all tables would be partitioned and need to parse
the .frm file.
Diffstat (limited to 'sql/sql_servers.cc')
-rw-r--r-- | sql/sql_servers.cc | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/sql_servers.cc b/sql/sql_servers.cc index a780c561ffe..d1d7801538c 100644 --- a/sql/sql_servers.cc +++ b/sql/sql_servers.cc @@ -140,6 +140,7 @@ bool servers_init(bool dont_read_servers_table) DBUG_RETURN(TRUE); thd->thread_stack= (char*) &thd; thd->store_globals(); + lex_start(thd); /* It is safe to call servers_reload() since servers_* arrays and hashes which will be freed there are global static objects and thus are initialized |