mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
WL#5370 Keep forward-compatibility when changing
'CREATE TABLE IF NOT EXISTS ... SELECT' behaviour BUG#47132, BUG#47442, BUG49494, BUG#23992 and BUG#48814 will disappear automatically after the this patch. BUG#55617 is fixed by this patch too. This is the 5.5 part. It implements: - 'CREATE TABLE IF NOT EXISTS ... SELECT' statement will not insert anything and binlog anything if the table already exists. It only generate a warning that table already exists. - A couple of test cases for the behavior changing.
This commit is contained in:
@ -1420,9 +1420,7 @@ create trigger t1_ai after insert on t1 for each row set @a := 7;
|
||||
create table t2 (j int);
|
||||
insert into t2 values (1), (2);
|
||||
set @a:="";
|
||||
create table if not exists t1 select * from t2;
|
||||
Warnings:
|
||||
Note 1050 Table 't1' already exists
|
||||
insert into t1 select * from t2;
|
||||
select * from t1;
|
||||
i
|
||||
7
|
||||
@ -1434,9 +1432,7 @@ drop trigger t1_bi;
|
||||
drop trigger t1_ai;
|
||||
create table t3 (isave int);
|
||||
create trigger t1_bi before insert on t1 for each row insert into t3 values (new.i);
|
||||
create table if not exists t1 select * from t2;
|
||||
Warnings:
|
||||
Note 1050 Table 't1' already exists
|
||||
insert into t1 select * from t2;
|
||||
select * from t1;
|
||||
i
|
||||
7
|
||||
@ -1622,10 +1618,8 @@ After DELETE, old=REPLACE, inserting a new key
|
||||
After INSERT, new=REPLACE, deleting the duplicate
|
||||
truncate t1;
|
||||
truncate t1_op_log;
|
||||
create table if not exists t1
|
||||
insert into t1
|
||||
select NULL, "CREATE TABLE ... SELECT, inserting a new key";
|
||||
Warnings:
|
||||
Note 1050 Table 't1' already exists
|
||||
set @id=last_insert_id();
|
||||
select * from t1;
|
||||
id operation
|
||||
@ -1635,10 +1629,8 @@ operation
|
||||
Before INSERT, new=CREATE TABLE ... SELECT, inserting a new key
|
||||
After INSERT, new=CREATE TABLE ... SELECT, inserting a new key
|
||||
truncate t1_op_log;
|
||||
create table if not exists t1 replace
|
||||
replace into t1
|
||||
select @id, "CREATE TABLE ... REPLACE SELECT, deleting a duplicate key";
|
||||
Warnings:
|
||||
Note 1050 Table 't1' already exists
|
||||
select * from t1;
|
||||
id operation
|
||||
1 CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
|
||||
@ -1817,10 +1809,8 @@ After DELETE, old=REPLACE, inserting a new key
|
||||
After INSERT, new=REPLACE, deleting the duplicate
|
||||
truncate t1;
|
||||
truncate t1_op_log;
|
||||
create table if not exists v1
|
||||
insert into v1
|
||||
select NULL, "CREATE TABLE ... SELECT, inserting a new key";
|
||||
Warnings:
|
||||
Note 1050 Table 'v1' already exists
|
||||
set @id=last_insert_id();
|
||||
select * from t1;
|
||||
id operation
|
||||
@ -1830,10 +1820,8 @@ operation
|
||||
Before INSERT, new=CREATE TABLE ... SELECT, inserting a new key
|
||||
After INSERT, new=CREATE TABLE ... SELECT, inserting a new key
|
||||
truncate t1_op_log;
|
||||
create table if not exists v1 replace
|
||||
replace into v1
|
||||
select @id, "CREATE TABLE ... REPLACE SELECT, deleting a duplicate key";
|
||||
Warnings:
|
||||
Note 1050 Table 'v1' already exists
|
||||
select * from t1;
|
||||
id operation
|
||||
1 CREATE TABLE ... REPLACE SELECT, deleting a duplicate key
|
||||
@ -2083,7 +2071,8 @@ BEGIN
|
||||
UPDATE a_nonextisting_table SET a = 1;
|
||||
END//
|
||||
CREATE TABLE IF NOT EXISTS t2 ( a INT, b INT ) SELECT a, b FROM t1;
|
||||
ERROR 42S02: Table 'test.a_nonextisting_table' doesn't exist
|
||||
Warnings:
|
||||
Note 1050 Table 't2' already exists
|
||||
SELECT * FROM t2;
|
||||
a b
|
||||
DROP TABLE t1, t2;
|
||||
|
Reference in New Issue
Block a user