1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
|
create database test2;
#
# Testing rename error in different places
#
create table t1 (a int);
create table t2 (b int);
create table t3 (c int);
create table t4 (d int);
insert into t1 values(1);
insert into t2 values(2);
insert into t3 values(3);
insert into t4 values(4);
create temporary table tmp1 (a int);
create temporary table tmp2 (b int);
create temporary table tmp3 (c int);
create temporary table tmp4 (d int);
insert into tmp1 values(11);
insert into tmp2 values(22);
insert into tmp3 values(33);
insert into tmp4 values(44);
rename table t3 to t4, t1 to t5, t2 to t1, t5 to t2;
ERROR 42S01: Table 't4' already exists
rename table t1 to t5, t3 to t4, t2 to t1, t5 to t2;
ERROR 42S01: Table 't4' already exists
rename table t1 to t5, t2 to t1, t3 to t4, t5 to t2;
ERROR 42S01: Table 't4' already exists
rename table t1 to t5, t2 to t1, t5 to t2, t3 to t4;
ERROR 42S01: Table 't4' already exists
# Try failed rename using two databases
rename table test.t1 to test2.t5, test.t2 to test.t1, t5 to test.t2;
ERROR 42S02: Table 'test.t5' doesn't exist
select t1.a+t2.b+t3.c+t4.d from t1,t2,t3,t4;
t1.a+t2.b+t3.c+t4.d
10
select * from t5;
ERROR 42S02: Table 'test.t5' doesn't exist
#
# Testing rename error in different places with temporary tables
#
rename table tmp3 to tmp4, tmp1 to t5, tmp2 to tmp1, t5 to tmp1;
ERROR 42S01: Table 'tmp4' already exists
rename table tmp1 to t5, tmp3 to tmp4, tmp2 to tmp1, t5 to tmp1;
ERROR 42S01: Table 'tmp4' already exists
rename table tmp1 to t5, tmp2 to tmp1, tmp3 to tmp4, t5 to tmp1;
ERROR 42S01: Table 'tmp4' already exists
rename table tmp1 to t5, tmp2 to tmp1, t5 to tmp1, tmp3 to tmp4;
ERROR 42S01: Table 'tmp1' already exists
select tmp1.a+tmp2.b+tmp3.c+tmp4.d from tmp1,tmp2,tmp3,tmp4;
tmp1.a+tmp2.b+tmp3.c+tmp4.d
110
select * from t5;
ERROR 42S02: Table 'test.t5' doesn't exist
#
# Testing combinations of rename normal and temporary tables
#
rename table t1 to t5, t2 to t1, t5 to t2, tmp3 to tmp4, tmp1 to t5, tmp2 to tmp1, t5 to tmp1;
ERROR 42S01: Table 'tmp4' already exists
rename table t1 to t5, t2 to t1, t5 to t2, tmp1 to t5, tmp3 to tmp4, tmp2 to tmp1, t5 to tmp1;
ERROR 42S01: Table 'tmp4' already exists
rename table t1 to t5, t2 to t1, t5 to t2, tmp1 to t5, tmp2 to tmp1, tmp3 to tmp4, t5 to tmp1;
ERROR 42S01: Table 'tmp4' already exists
rename table t1 to t5, t2 to t1, t5 to t2, tmp1 to t5, tmp2 to tmp1, t5 to tmp1, t3 to t4;
ERROR 42S01: Table 'tmp1' already exists
rename table t1 to t5, tmp2 to tmp5, t2 to t1, tmp2 to tmp1, t5 to t2, tmp5 to tmp1, t8 to t9;
ERROR 42S02: Table 'test.tmp2' doesn't exist
select t1.a+t2.b+t3.c+t4.d from t1,t2,t3,t4;
t1.a+t2.b+t3.c+t4.d
10
select tmp1.a+tmp2.b+tmp3.c+tmp4.d from tmp1,tmp2,tmp3,tmp4;
tmp1.a+tmp2.b+tmp3.c+tmp4.d
110
drop table tmp1,tmp2,tmp3,tmp4;
#
# Similar tests with triggers
#
create trigger t1_trg before insert on t1 for each row
begin
if isnull(new.a) then
set new.a:= 10;
end if;
end|
create trigger t2_trg before insert on t2 for each row
begin
if isnull(new.b) then
set new.b:= 100;
end if;
end|
create trigger t3_trg before insert on t3 for each row
begin
if isnull(new.c) then
set new.c:= 1000;
end if;
end|
rename table t3 to t4, t1 to t5, t2 to t1, t5 to t2;
ERROR 42S01: Table 't4' already exists
rename table t1 to t5, t3 to t4, t2 to t1, t5 to t2;
ERROR 42S01: Table 't4' already exists
rename table t1 to t5, t2 to t1, t3 to t4, t5 to t2;
ERROR 42S01: Table 't4' already exists
rename table t1 to t5, t2 to t1, t5 to t2, t3 to t4;
ERROR 42S01: Table 't4' already exists
# Test of move table between databases
rename table t4 to test2.t5, t2 to t4, test2.t5 to t2, t1 to test2.t6;
ERROR HY000: Trigger in wrong schema
show triggers;
Trigger Event Table Statement Timing Created sql_mode Definer character_set_client collation_connection Database Collation
t1_trg INSERT t1 begin
if isnull(new.a) then
set new.a:= 10;
end if;
end BEFORE # STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
t2_trg INSERT t2 begin
if isnull(new.b) then
set new.b:= 100;
end if;
end BEFORE # STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
t3_trg INSERT t3 begin
if isnull(new.c) then
set new.c:= 1000;
end if;
end BEFORE # STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION root@localhost latin1 latin1_swedish_ci latin1_swedish_ci
select t1.a+t2.b+t3.c+t4.d from t1,t2,t3,t4;
t1.a+t2.b+t3.c+t4.d
10
insert into t1 values(null);
insert into t2 values(null);
insert into t3 values(null);
select (select sum(t1.a) from t1)+ (select sum(t2.b) from t2) + (select sum(t3.c) from t3)+ (select sum(t4.d) from t4);
(select sum(t1.a) from t1)+ (select sum(t2.b) from t2) + (select sum(t3.c) from t3)+ (select sum(t4.d) from t4)
1120
drop trigger t1_trg;
drop trigger t2_trg;
drop trigger t3_trg;
#
# Test with views
#
create view v1 as select * from t1;
create view v2 as select * from t2;
create view v3 as select * from t3;
create view v4 as select * from t4;
rename table v3 to v4, v1 to t5, v2 to v1, t5 to v2;
ERROR 42S01: Table 'v4' already exists
rename table v1 to t5, v3 to v4, v2 to v1, t5 to v2;
ERROR 42S01: Table 'v4' already exists
rename table v1 to t5, v2 to v1, v3 to v4, t5 to v2;
ERROR 42S01: Table 'v4' already exists
rename table v1 to t5, v2 to v1, t5 to v2, v3 to v4;
ERROR 42S01: Table 'v4' already exists
# Try failed rename using two databases
rename table test.v1 to test.v5, test.v2 to test.v1, test.v3 to test2.v2, non_existing_view to another_non_existing_view;
ERROR HY000: Changing schema from 'test' to 'test2' is not allowed
select (select sum(v1.a) from v1)+ (select sum(v2.b) from v2) + (select sum(v3.c) from v3)+ (select sum(v4.d) from v4);
(select sum(v1.a) from v1)+ (select sum(v2.b) from v2) + (select sum(v3.c) from v3)+ (select sum(v4.d) from v4)
1120
drop view v1,v2,v3,v4;
drop table t1, t2, t3, t4;
drop database test2;
|