summaryrefslogtreecommitdiff
path: root/mysql-test/main/long_unique_update.test
blob: 98c3aaefe174a8acabdf1912c73390a8dbc44d46 (plain)
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
#
# MDEV-371 Unique indexes for blobs
#
--echo #structure of tests;
--echo #1 test of table containing single unique blob column;
--echo #2 test of table containing another unique int/ varchar etc column; 
--echo #3 test of table containing multiple unique blob column like unique(a),unique(b);
--echo #4 test of table containing multiple multiple unique blob column like unique(a,b...),unique(c,d....);
--echo #structure of each test;
--echo #test if update works;
--echo #test update for duplicate entry;
--echo #test update for no change keys;
--echo #test update for ignore ;

--echo #test 1
create table t1 (a blob unique);
query_vertical show keys from t1;
insert into t1 values(1),(2),(3),(4),(5);
select * from t1;
update t1 set a=11 where a=5;
update t1 set a=a+20 where a=1;
select * from t1;
--error ER_DUP_ENTRY
update t1 set a=3 where a=2;
--error ER_DUP_ENTRY
update t1 set a=4 where a=3;
--echo #no change in blob key
update t1 set a=3 where a=3;
update t1 set a=2 where a=2;
select* from t1;
--echo #IGNORE;
update ignore t1 set a=3 where a=2;
update ignore t1 set a=4 where a=3;
select * from t1;
drop table t1;

--echo #test 2;
create table t1 (a int primary key, b blob unique , c int unique );
show keys from t1;
insert into t1 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7);
select * from t1 limit 3;
update t1 set b=34 where a=1;
update t1 set b=a+c+b+34 where b=2;
update t1 set b=a+10+b where c=3;
select * from t1;
truncate table t1;
insert into t1 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7);
--error ER_DUP_ENTRY
update t1 set b=4 where a=3;
--error ER_DUP_ENTRY
update t1 set b=a+1 where b=3;
--error ER_DUP_ENTRY
update t1 set b=a+1 where c=3;
--echo #no change in blob key
update t1 set b=3 where a=3;
update t1 set b=2 where b=2;
update t1 set b=5 where c=5;
select* from t1;
--echo #IGNORE;
update ignore t1 set b=3 where a=2;
update ignore t1 set b=4 where b=3;
update ignore t1 set b=5 where c=3;
select * from t1;
drop table t1;

--echo #test 3;
create table t1 (a blob unique, b blob unique , c blob unique);
show keys from t1;
insert into t1 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7);
select * from t1 limit 3;
update t1 set b=34 where a=1;
update t1 set b=a+c+b+34 where b=2;
update t1 set b=a+10+b where c=3;
select * from t1;
truncate table t1;
insert into t1 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),(6,6,6),(7,7,7);
--error ER_DUP_ENTRY
update t1 set b=4 where a=3;
--error ER_DUP_ENTRY
update t1 set b=a+1 where b=3;
--error ER_DUP_ENTRY
update t1 set b=a+1 where c=3;
--echo #no change in blob key
update t1 set b=3 where a=3;
update t1 set b=2 where b=2;
update t1 set b=5 where c=5;
select* from t1;
--echo #IGNORE;
update ignore t1 set b=3 where a=2;
update ignore t1 set b=4 where b=3;
update ignore t1 set b=5 where c=3;
update ignore t1 set b=b+3 where a>1 or b>1 or c>1;
select * from t1;
update ignore t1 set b=b+5 where a>1 and  b<5 and  c<a+b;
select * from t1;
drop table t1;

--echo #test 4 ultimate test;
create table t1 (a int primary key , b int, c blob , d blob , e  varchar(2000), f int , g text, 
unique (b,c), unique (b,f),unique(e,g),unique(a,b,c,d,e,f,g));
desc t1;
show create table t1;
show keys from t1;
insert into t1 values(1,1,1,1,1,1,1),(2,2,2,2,2,2,2),(3,3,3,3,3,3,3),(4,4,4,4,4,4,4),
(5,5,5,5,5,5,5),(6,6,6,6,6,6,6),(7,7,7,7,7,7,7),(8,8,8,8,8,8,8),(9,9,9,9,9,9,9);
select * from t1 limit 3;
--echo #key b_c
--error ER_DUP_ENTRY
update t1 set b=2 ,c=2 where a=1;
update t1 set b=b+34, c=c+34 where e=1 and g=1 ;
update t1 set b=35, c=35 where e=1 and g=1 ;
--error ER_DUP_ENTRY
update t1 set b=b+1, c=c+1 where a>0;
update ignore t1 set b=b+1, c=c+1 where a>0;
select * from t1 ;
truncate table t1;
insert into t1 values(1,1,1,1,1,1,1),(2,2,2,2,2,2,2),(3,3,3,3,3,3,3),(4,4,4,4,4,4,4),
(5,5,5,5,5,5,5),(6,6,6,6,6,6,6),(7,7,7,7,7,7,7),(8,8,8,8,8,8,8),(9,9,9,9,9,9,9);
--echo #key b_f no hash key
--error ER_DUP_ENTRY
update t1 set b=2 , f=2 where a=1;
update  t1 set b=b+33, f=f+33 where e=1 and g=1;
update t1 set b=34, f=34 where e=1 and g=1 ;
--error ER_DUP_ENTRY
update t1 set b=b+1, f=f+1 where a>0;
update ignore t1 set b=b+1, f=f+1 where a>0;
select * from t1 ;
truncate table t1;
insert into t1 values(1,1,1,1,1,1,1),(2,2,2,2,2,2,2),(3,3,3,3,3,3,3),(4,4,4,4,4,4,4),
(5,5,5,5,5,5,5),(6,6,6,6,6,6,6),(7,7,7,7,7,7,7),(8,8,8,8,8,8,8),(9,9,9,9,9,9,9);
--echo #key e_g
--error ER_DUP_ENTRY
update t1 set e=2 , g=2 where a=1;
update  t1 set e=e+34, g=g+34 where a=1;
update t1 set e=34, g=34 where e=1 and g=1 ;
select * from t1 where  a=1;
--error ER_DUP_ENTRY
update t1 set e=e+1, g=g+1 where a>0;
update ignore t1 set e=e+1, g=g+1 where a>0;
select * from t1 ;
drop table t1;