diff options
author | unknown <Li-Bing.Song@sun.com> | 2010-01-16 15:44:24 +0800 |
---|---|---|
committer | unknown <Li-Bing.Song@sun.com> | 2010-01-16 15:44:24 +0800 |
commit | 377d710296c3b0c85ea4cdc018d1d8e08bfa022a (patch) | |
tree | 5cb87884cc819c950b796602fd62601a7c339e24 /mysql-test/t/create.test | |
parent | 7a7147c5b4cca1bfd1bfbecd4883d3968526b162 (diff) | |
download | mariadb-git-377d710296c3b0c85ea4cdc018d1d8e08bfa022a.tar.gz |
BUG#47418 RBR fails, failure with mixup of base/temporary/view
'CREATE TABLE IF NOT EXISTS ... SELECT' statement were causing 'CREATE
TEMPORARY TABLE ...' to be written to the binary log in row-based
mode (a.k.a. RBR), when there was a temporary table with the same name.
Because the 'CREATE TABLE ... SELECT' statement was executed as
'INSERT ... SELECT' into the temporary table. Since in RBR mode no
other statements related to temporary tables are written into binary log,
this sometimes broke replication.
This patch changes behavior of 'CREATE TABLE [IF NOT EXISTS] ... SELECT ...'.
it ignores existence of temporary table with the
same name as table being created and is interpreted
as attempt to create/insert into base table. This makes behavior of
'CREATE TABLE [IF NOT EXISTS] ... SELECT' consistent with
how ordinary 'CREATE TABLE' and 'CREATE TABLE ... LIKE' behave.
Diffstat (limited to 'mysql-test/t/create.test')
-rw-r--r-- | mysql-test/t/create.test | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 5ffa1b93929..692721b5955 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -721,16 +721,15 @@ drop table t1; # Base vs temporary tables dillema (a.k.a. bug#24508 "Inconsistent # results of CREATE TABLE ... SELECT when temporary table exists"). # In this situation we either have to create non-temporary table and -# insert data in it or insert data in temporary table without creation -# of permanent table. Since currently temporary tables always shadow -# permanent tables we adopt second approach. +# insert data in it or insert data in temporary table without creation of +# permanent table. After patch for Bug#47418, we create the base table and +# instert data into it, even though a temporary table exists with the same +# name. create temporary table t1 (j int); create table if not exists t1 select 1; select * from t1; drop temporary table t1; ---error ER_NO_SUCH_TABLE select * from t1; ---error ER_BAD_TABLE_ERROR drop table t1; |