~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/include/varchar.inc

  • Committer: Stewart Smith
  • Date: 2008-12-18 23:54:47 UTC
  • mto: This revision was merged to the branch mainline in revision 719.
  • Revision ID: stewart@flamingspork.com-20081218235447-qf6dofgd6guwefo2
fix RENAME TABLE

(problem was missing hton to mysql_rename_table)

If engine implements table_exists_in_engine we get the hton from there.

Else, we reintroduce the mysql_frm_type hackery (temporarily, it *will* go away again with FRM removal).

also fix rename test: no views, plus current FLUSH LOCKS bug.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Initialise
2
 
--disable_warnings
3
 
drop table if exists t1,t2,t3;
4
 
--enable_warnings
5
 
 
6
 
disable_query_log;
7
 
select "--- Testing varchar ---";
8
 
enable_query_log;
9
 
 
10
 
#
11
 
# Simple basic test that endspace is saved
12
 
#
13
 
 
14
 
eval create $temp table t1 (v varchar(10), c char(10), t text);
15
 
insert into t1 values('+ ', '+ ', '+ ');
16
 
set @a=repeat(' ',20);
17
 
--error ER_DATA_TOO_LONG
18
 
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
19
 
set @a=repeat(' ',10);
20
 
--error ER_DATA_TOO_LONG
21
 
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
22
 
set @a=repeat(' ',9);
23
 
insert into t1 values (concat('+',@a),concat('+',@a),concat('+',@a));
24
 
select concat('*',v,'*',c,'*',t,'*') from t1;
25
 
 
26
 
# Check how columns are copied
27
 
show create table t1;
28
 
eval create $temp table t2 like t1;
29
 
show create table t2;
30
 
eval create $temp table t3 select * from t1;
31
 
show create table t3;
32
 
alter table t1 modify c varchar(10);
33
 
show create table t1;
34
 
alter table t1 modify v char(10);
35
 
show create table t1;
36
 
alter table t1 modify t varchar(10);
37
 
show create table t1;
38
 
select concat('*',v,'*',c,'*',t,'*') from t1;
39
 
drop table t1,t2,t3;
40
 
 
41
 
#
42
 
# Testing of keys
43
 
#
44
 
eval create $temp table t1 (v varchar(10), c char(10), t text, key(v), key(c), key(t(10)));
45
 
show create table t1;
46
 
disable_query_log;
47
 
begin;
48
 
let $1=10;
49
 
while ($1)
50
 
{
51
 
  let $2=27;
52
 
  eval set @space=repeat(' ',10-$1);
53
 
  while ($2)
54
 
  {
55
 
    eval set @char=char(ascii('a')+$2-1);
56
 
    insert into t1 values(concat(@char,@space),concat(@char,@space),concat(@char,@space));
57
 
    dec $2;
58
 
  }
59
 
  dec $1;
60
 
}
61
 
commit;
62
 
enable_query_log;
63
 
select count(*) from t1;
64
 
insert into t1 values(concat('a',char(1)),concat('a',char(1)),concat('a',char(1)));
65
 
select count(*) from t1 where v='a';
66
 
select count(*) from t1 where c='a';
67
 
select count(*) from t1 where t='a';
68
 
select count(*) from t1 where v='a  ';
69
 
select count(*) from t1 where c='a  ';
70
 
select count(*) from t1 where t='a  ';
71
 
select count(*) from t1 where v between 'a' and 'a ';
72
 
select count(*) from t1 where v between 'a' and 'a ' and v between 'a  ' and 'b\n';
73
 
select count(*) from t1 where v like 'a%';
74
 
select count(*) from t1 where c like 'a%';
75
 
select count(*) from t1 where t like 'a%';
76
 
select count(*) from t1 where v like 'a %';
77
 
# Test results differ for BDB, see comments in bdb.test
78
 
# and they are also different from MySAM test results.
79
 
--replace_column 9 #
80
 
explain select count(*) from t1 where v='a  ';
81
 
--replace_column 9 #
82
 
explain select count(*) from t1 where c='a  ';
83
 
--replace_column 9 #
84
 
explain select count(*) from t1 where t='a  ';
85
 
--replace_column 9 #
86
 
explain select count(*) from t1 where v like 'a%';
87
 
--replace_column 9 #
88
 
explain select count(*) from t1 where v between 'a' and 'a ';
89
 
--replace_column 9 #
90
 
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a  ' and 'b\n';
91
 
 
92
 
--error ER_DUP_ENTRY
93
 
alter table t1 add unique(v);
94
 
alter table t1 add key(v);
95
 
select concat('*',v,'*',c,'*',t,'*') as qq from t1 where v='a';
96
 
--replace_column 6 # 9 #
97
 
explain select * from t1 where v='a';
98
 
 
99
 
# GROUP BY
100
 
 
101
 
select v,count(*) from t1 group by v limit 10;
102
 
select v,count(t) from t1 group by v limit 10;
103
 
select v,count(c) from t1 group by v limit 10;
104
 
select sql_big_result v,count(t) from t1 group by v limit 10;
105
 
select sql_big_result v,count(c) from t1 group by v limit 10;
106
 
select c,count(*) from t1 group by c limit 10;
107
 
select c,count(t) from t1 group by c limit 10;
108
 
select sql_big_result c,count(t) from t1 group by c limit 10;
109
 
select t,count(*) from t1 group by t limit 10;
110
 
select t,count(t) from t1 group by t limit 10;
111
 
select sql_big_result t,count(t) from t1 group by t limit 10;
112
 
 
113
 
#
114
 
# Test varchar > 255 bytes
115
 
#
116
 
 
117
 
alter table t1 modify v varchar(300), drop key v, drop key v_2, add key v (v);
118
 
show create table t1;
119
 
select count(*) from t1 where v='a';
120
 
select count(*) from t1 where v='a  ';
121
 
select count(*) from t1 where v between 'a' and 'a ';
122
 
select count(*) from t1 where v between 'a' and 'a ' and v between 'a  ' and 'b\n';
123
 
select count(*) from t1 where v like 'a%';
124
 
select count(*) from t1 where v like 'a %';
125
 
--replace_column 9 #
126
 
explain select count(*) from t1 where v='a  ';
127
 
--replace_column 9 #
128
 
explain select count(*) from t1 where v like 'a%';
129
 
--replace_column 9 #
130
 
explain select count(*) from t1 where v between 'a' and 'a ';
131
 
--replace_column 9 #
132
 
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a  ' and 'b\n';
133
 
--replace_column 9 #
134
 
explain select * from t1 where v='a';
135
 
 
136
 
# GROUP BY
137
 
 
138
 
select v,count(*) from t1 group by v limit 10;
139
 
select v,count(t) from t1 group by v limit 10;
140
 
select sql_big_result v,count(t) from t1 group by v limit 10;
141
 
 
142
 
#
143
 
# Test varchar > 255 bytes, key < 255
144
 
#
145
 
 
146
 
alter table t1 drop key v, add key v (v(30));
147
 
show create table t1;
148
 
select count(*) from t1 where v='a';
149
 
select count(*) from t1 where v='a  ';
150
 
select count(*) from t1 where v between 'a' and 'a ';
151
 
select count(*) from t1 where v between 'a' and 'a ' and v between 'a  ' and 'b\n';
152
 
select count(*) from t1 where v like 'a%';
153
 
select count(*) from t1 where v like 'a %';
154
 
--replace_column 9 #
155
 
explain select count(*) from t1 where v='a  ';
156
 
--replace_column 9 #
157
 
explain select count(*) from t1 where v like 'a%';
158
 
--replace_column 9 #
159
 
explain select count(*) from t1 where v between 'a' and 'a ';
160
 
--replace_column 9 #
161
 
explain select count(*) from t1 where v between 'a' and 'a ' and v between 'a  ' and 'b\n';
162
 
--replace_column 9 #
163
 
explain select * from t1 where v='a';
164
 
 
165
 
# GROUP BY
166
 
 
167
 
select v,count(*) from t1 group by v limit 10;
168
 
select v,count(t) from t1 group by v limit 10;
169
 
select sql_big_result v,count(t) from t1 group by v limit 10;
170
 
 
171
 
#
172
 
# Test varchar > 512 (special case for GROUP BY becasue of
173
 
# CONVERT_IF_BIGGER_TO_BLOB define)
174
 
#
175
 
 
176
 
alter table t1 modify v varchar(600), drop key v, add key v (v);
177
 
show create table t1;
178
 
select v,count(*) from t1 group by v limit 10;
179
 
select v,count(t) from t1 group by v limit 10;
180
 
select sql_big_result v,count(t) from t1 group by v limit 10;
181
 
 
182
 
drop table t1;
183
 
 
184
 
#
185
 
# Test unique keys
186
 
#
187
 
 
188
 
eval create $temp table t1 (a char(10), unique (a));
189
 
insert into t1 values ('a   ');
190
 
--error ER_DUP_ENTRY
191
 
insert into t1 values ('a ');
192
 
 
193
 
alter table t1 modify a varchar(10);
194
 
--error ER_DUP_ENTRY
195
 
insert into t1 values ('a '),('a  '),('a   '),('a         ');
196
 
--error ER_DUP_ENTRY
197
 
insert into t1 values ('a     ');
198
 
--error ER_DATA_TOO_LONG
199
 
insert into t1 values ('a          ');
200
 
--error ER_DUP_ENTRY
201
 
insert into t1 values ('a ');
202
 
update t1 set a='a  ' where a like 'a%';
203
 
select concat(a,'.') from t1;
204
 
update t1 set a='abc    ' where a like 'a ';
205
 
select concat(a,'.') from t1;
206
 
update t1 set a='a      ' where a like 'a %';
207
 
select concat(a,'.') from t1;
208
 
update t1 set a='a  ' where a like 'a      ';
209
 
select concat(a,'.') from t1;
210
 
drop table t1;
211
 
 
212
 
#
213
 
# test show create table
214
 
#
215
 
 
216
 
eval create $temp table t1 (v varchar(10), c char(10), t text, key(v(5)), key(c(5)), key(t(5)));
217
 
show create table t1;
218
 
drop table t1;
219
 
eval create $temp table t1 (v char(10));
220
 
show create table t1;
221
 
drop table t1;
222
 
 
223
 
eval create $temp table t1 (v varchar(10), c char(10));
224
 
show create table t1;
225
 
insert into t1 values('a','a'),('a ','a ');
226
 
select concat('*',v,'*',c,'*') from t1;
227
 
drop table t1;
228
 
 
229
 
#
230
 
# Test long varchars
231
 
#
232
 
# @TODO The below fails because it assumes latin1
233
 
# as the charset.  Possibly re-enable a similar test
234
 
# for UTF8-only in future
235
 
#create $temp table t1 (v varchar(65530), key(v(10)));
236
 
#insert into t1 values(repeat('a',65530));
237
 
#select length(v) from t1 where v=repeat('a',65530);
238
 
#drop table t1;
239
 
 
240
 
#
241
 
# Bug #9489: problem with hash indexes
242
 
# Bug #10802: Index is not used if table using BDB engine on HP-UX
243
 
#
244
 
 
245
 
eval create $temp table t1(a int, b varchar(12), key ba(b, a));
246
 
insert into t1 values (1, 'A'), (20, NULL);
247
 
explain select * from t1 where a=20 and b is null;
248
 
select * from t1 where a=20 and b is null;
249
 
drop table t1;