mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 04:22:27 +01:00
a81da06f57
is allowed on views (not documented, broken)". Remove support of ALTER TABLE RENAME for views as: a) this feature was not documented, c) does not add any compatibility with other databases, b) its implementation doesn't follow metadata locking protocol by accessing .FRM without holding any metadata lock, c) its implementation complicates ALTER TABLE's code by introducing yet another separate branch to it. After this patch one can rename a view by using the documented way - RENAME TABLE statement. mysql-test/r/rename.result: Adjusted existing test case for bug #14959 "ALTER TABLE isn't able to rename a view" after fixing bug #53976: "ALTER TABLE RENAME is allowed on views (not documented, broken)". mysql-test/r/view.result: Adjusted test case after removing support for renaming of views through ALTER TABLE ... RENAME. mysql-test/t/rename.test: Adjusted existing test case for bug #14959 "ALTER TABLE isn't able to rename a view" after fixing bug #53976: "ALTER TABLE RENAME is allowed on views (not documented, broken)". mysql-test/t/view.test: Adjusted test case after removing support for renaming of views through ALTER TABLE ... RENAME. sql/sql_table.cc: Removed support for ALTER TABLE ... RENAME for views. This feature was not properly documented and its implementation was not following metadata locking protocol.
69 lines
1.6 KiB
Text
69 lines
1.6 KiB
Text
drop table if exists t0,t1,t2,t3,t4;
|
|
drop table if exists t0,t5,t6,t7,t8,t9,t1_1,t1_2,t9_1,t9_2;
|
|
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;
|
|
3 table 3
|
|
3 table 3
|
|
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;
|
|
1 table 1
|
|
1 table 1
|
|
rename table t1 to t2;
|
|
Got one of the listed errors
|
|
rename table t1 to t1;
|
|
Got one of the listed errors
|
|
rename table t3 to t4, t2 to t3, t1 to t2, t4 to t2;
|
|
Got one of the listed errors
|
|
show tables like "t_";
|
|
Tables_in_test (t_)
|
|
t1
|
|
t2
|
|
t3
|
|
rename table t3 to t1, t2 to t3, t1 to t2, t4 to t1;
|
|
Got one of the listed errors
|
|
rename table t3 to t4, t5 to t3, t1 to t2, t4 to t1;
|
|
Got one of the listed errors
|
|
select * from t1;
|
|
1 table 1
|
|
1 table 1
|
|
select * from t2;
|
|
2 table 2
|
|
2 table 2
|
|
select * from t3;
|
|
3 table 3
|
|
3 table 3
|
|
drop table if exists t1,t2,t3,t4;
|
|
Warnings:
|
|
Note 1051 Unknown table 't4'
|
|
CREATE TABLE t1 (a int);
|
|
CREATE TABLE t3 (a int);
|
|
FLUSH TABLES WITH READ LOCK;
|
|
RENAME TABLE t1 TO t2, t3 to t4;
|
|
show tables;
|
|
Tables_in_test
|
|
t1
|
|
t3
|
|
UNLOCK TABLES;
|
|
show tables;
|
|
Tables_in_test
|
|
t2
|
|
t4
|
|
drop table t2, t4;
|
|
End of 4.1 tests
|
|
#
|
|
# Bug#14959: "ALTER TABLE isn't able to rename a view"
|
|
# Bug#53976: "ALTER TABLE RENAME is allowed on views
|
|
# (not documented, broken)"
|
|
#
|
|
create table t1(f1 int);
|
|
create view v1 as select * from t1;
|
|
alter table v1 rename to v2;
|
|
ERROR HY000: 'test.v1' is not BASE TABLE
|
|
drop view v1;
|
|
drop table t1;
|
|
End of 5.0 tests
|