Commit 6000fd23 authored by MySQL Build Team's avatar MySQL Build Team

Backport into build-200909221805-5.1.37sp1

> ------------------------------------------------------------
> revno: 3019.1.3
> revision-id: ramil@mysql.com-20090714150729-xqv7aicsnoz6epy6
> parent: jimw@mysql.com-20090713191116-c8qxsrjagzbvbytj
> committer: Ramil Kalimullin <ramil@mysql.com>
> branch nick: b45998-5.1-bugteam
> timestamp: Tue 2009-07-14 20:07:29 +0500
> message:
>   Fix for bug#45998: database crashes when running
>   "create as select" (innodb table)
>   
>   Problem: code constructing "CREATE TABLE..." statement
>   doesn't take into account that current database is not set
>   in some cases. That may lead to a server crash.
>   
>   Fix: check if current database is set.
parent afa6e7a4
...@@ -258,3 +258,15 @@ dec $it; ...@@ -258,3 +258,15 @@ dec $it;
} }
show master status /* must show new binlog index after rotating */; show master status /* must show new binlog index after rotating */;
drop table t3; drop table t3;
--echo #
--echo # Bug #45998: database crashes when running "create as select"
--echo #
CREATE DATABASE test1;
USE test1;
DROP DATABASE test1;
CREATE TABLE test.t1(a int);
INSERT INTO test.t1 VALUES (1), (2);
CREATE TABLE test.t2 SELECT * FROM test.t1;
USE test;
DROP TABLES t1, t2;
...@@ -1298,3 +1298,14 @@ show master status /* must show new binlog index after rotating */; ...@@ -1298,3 +1298,14 @@ show master status /* must show new binlog index after rotating */;
File Position Binlog_Do_DB Binlog_Ignore_DB File Position Binlog_Do_DB Binlog_Ignore_DB
master-bin.000002 106 master-bin.000002 106
drop table t3; drop table t3;
#
# Bug #45998: database crashes when running "create as select"
#
CREATE DATABASE test1;
USE test1;
DROP DATABASE test1;
CREATE TABLE test.t1(a int);
INSERT INTO test.t1 VALUES (1), (2);
CREATE TABLE test.t2 SELECT * FROM test.t1;
USE test;
DROP TABLES t1, t2;
...@@ -1151,7 +1151,7 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet, ...@@ -1151,7 +1151,7 @@ int store_create_info(THD *thd, TABLE_LIST *table_list, String *packet,
{ {
const LEX_STRING *const db= const LEX_STRING *const db=
table_list->schema_table ? &INFORMATION_SCHEMA_NAME : &table->s->db; table_list->schema_table ? &INFORMATION_SCHEMA_NAME : &table->s->db;
if (strcmp(db->str, thd->db) != 0) if (!thd->db || strcmp(db->str, thd->db))
{ {
append_identifier(thd, packet, db->str, db->length); append_identifier(thd, packet, db->str, db->length);
packet->append(STRING_WITH_LEN(".")); packet->append(STRING_WITH_LEN("."));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment