diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
commit | 06eaf7232e9a920468c0f8d74dcf2fe8b555501c (patch) | |
tree | e2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/main/rename.test | |
parent | Initial commit. (diff) | |
download | mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.tar.xz mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.zip |
Adding upstream version 1:10.11.6.upstream/1%10.11.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/main/rename.test')
-rw-r--r-- | mysql-test/main/rename.test | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/mysql-test/main/rename.test b/mysql-test/main/rename.test new file mode 100644 index 00000000..a0b9f38a --- /dev/null +++ b/mysql-test/main/rename.test @@ -0,0 +1,168 @@ +# +# Test of rename table +# + +--source include/count_sessions.inc + +--disable_warnings +drop table if exists t0,t1,t2,t3,t4; +# Clear up from other tests (to ensure that SHOW TABLES below is right) +drop table if exists t0,t5,t6,t7,t8,t9,t1_1,t1_2,t9_1,t9_2; +--enable_warnings + +create table t0 SELECT 1,"table 1"; +create table t2 SELECT 2,"table 2"; +create table t3 SELECT 3,"table 3"; +rename table t0 to t1; +rename table t3 to t4, t2 to t3, t1 to t2, t4 to t1; +select * from t1; +rename table t3 to t4, t2 to t3, t1 to t2, t4 to t1; +rename table t3 to t4, t2 to t3, t1 to t2, t4 to t1; +select * from t1; + +# The following should give errors +--error ER_TABLE_EXISTS_ERROR +rename table t1 to t2; +--error ER_TABLE_EXISTS_ERROR +rename table t1 to t1; +--error ER_TABLE_EXISTS_ERROR +rename table t3 to t4, t2 to t3, t1 to t2, t4 to t2; +show tables like "t_"; +--error ER_TABLE_EXISTS_ERROR +rename table t3 to t1, t2 to t3, t1 to t2, t4 to t1; +--error ER_NO_SUCH_TABLE +rename table t3 to t4, t5 to t3, t1 to t2, t4 to t1; + +select * from t1; +select * from t2; +select * from t3; + +# This should give a warning for t4 +drop table if exists t1,t2,t3,t4; + +# +# Bug #2397 RENAME TABLES is not blocked by +# FLUSH TABLES WITH READ LOCK +# + +connect (con1,localhost,root,,); +connect (con2,localhost,root,,); + +connection con1; +CREATE TABLE t1 (a int); +CREATE TABLE t3 (a int); +connection con2; +FLUSH TABLES WITH READ LOCK; +connection con1; +send RENAME TABLE t1 TO t2, t3 to t4; +connection con2; +show tables; +UNLOCK TABLES; +connection con1; +reap; +connection con2; + +# Wait for the the tables to be renamed +# i.e the query below succeds +let $query= select * from t2, t4; +source include/wait_for_query_to_succeed.inc; + +show tables; + +drop table t2, t4; + +disconnect con2; +disconnect con1; +connection default; + + +--echo End of 4.1 tests + + +--echo # +--echo # Bug#14959: "ALTER TABLE isn't able to rename a view" +--echo # Bug#53976: "ALTER TABLE RENAME is allowed on views +--echo # (not documented, broken)" +--echo # +create table t1(f1 int); +create view v1 as select * from t1; +--error ER_WRONG_OBJECT +alter table v1 rename to v2; +drop view v1; +drop table t1; + +--echo End of 5.0 tests + +--source include/wait_until_count_sessions.inc + +# +# Test of rename with temporary tables +# + +CREATE OR REPLACE TABLE t1 (a INT); +CREATE OR REPLACE TABLE t2 (a INT); +CREATE OR REPLACE TEMPORARY TABLE t1_tmp (b INT); +CREATE OR REPLACE TEMPORARY TABLE t2_tmp (b INT); + +# Can't rename table over another one +--error ER_TABLE_EXISTS_ERROR +rename table t1 to t2; +--error ER_TABLE_EXISTS_ERROR +rename table t1 to tmp, tmp to t2; +--error ER_TABLE_EXISTS_ERROR +rename table t1_tmp to t2_tmp; +--error ER_TABLE_EXISTS_ERROR +rename table t1_tmp to tmp, tmp to t2_tmp; + +show create table t1_tmp; +show create table t2_tmp; + +# The following should work +rename table t1 to t1_tmp; +rename table t2_tmp to t2; +rename table t2 to tmp, tmp to t2; +rename table t1_tmp to tmp, tmp to t1_tmp; +show tables; +SHOW CREATE TABLE t1_tmp; +drop table t1_tmp; +SHOW CREATE TABLE t1_tmp; +drop table t1_tmp; +SHOW CREATE TABLE t2; +drop table t2; +SHOW CREATE TABLE t2; +drop table t2; + +CREATE TABLE t1 (a INT); +insert into t1 values (1); +CREATE TEMPORARY TABLE t1 (b INT); +insert into t1 values (2); +RENAME TABLE t1 TO tmp, t1 TO t2; +select * from tmp; +select * from t2; +drop table tmp,t2; + +# +# MDEV-11741 handler::ha_reset(): Assertion `bitmap_is_set_all(&table->s->all_set)' failed or server crash in mi_reset or buffer overrun or unexpected ER_CANT_REMOVE_ALL_FIELDS +# +create table t1 (a int) engine=memory; +--error ER_BAD_DB_ERROR +rename table t1 to non_existent.t2; +drop table t1; + +--echo # +--echo # Test rename IF EXISTS +--echo # +rename table if exists t1 to t2; +alter table if exists t1 rename to t2; +create table t2 (a int); +alter table if exists t1 rename to t2; +rename table if exists t1 to t2; +create table t1 (a int); +--error ER_TABLE_EXISTS_ERROR +rename table if exists t1 to t2; +--error ER_TABLE_EXISTS_ERROR +alter table if exists t1 rename to t2; +drop table t2; +rename table if exists t1 to t2; +alter table if exists t2 rename to t1; +drop table t1; |