~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/null.test

  • Committer: Stewart Smith
  • Date: 2008-11-21 16:06:07 UTC
  • mto: This revision was merged to the branch mainline in revision 593.
  • Revision ID: stewart@flamingspork.com-20081121160607-n6gdlt013spuo54r
remove mysql_frm_type
and fix engines to return correct value from delete_table when table doesn't exist.
(it should be ENOENT).

Also fix up some tests that manipulated frm files by hand. These tests are no longer valid and will need to be rewritten in the not too distant future.

Show diffs side-by-side

added added

removed removed

Lines of Context:
9
9
 
10
10
select null,\N,isnull(null),isnull(1/0),isnull(1/0 = null),ifnull(null,1),ifnull(null,"TRUE"),ifnull("TRUE","ERROR"),1/0 is null,1 is not null;
11
11
explain extended select null,\N,isnull(null),isnull(1/0),isnull(1/0 = null),ifnull(null,1),ifnull(null,"TRUE"),ifnull("TRUE","ERROR"),1/0 is null,1 is not null;
12
 
select CONCAT(1, NULL),1+NULL,1-NULL;
13
 
select NULL=NULL,NULL<>NULL,IFNULL(NULL,1.1)+0,CONCAT(IFNULL(NULL,1), 0);
14
 
select strcmp("a",NULL),(1<NULL)+0.0,null like "a%","a%" like null;
 
12
select 1 | NULL,1 & NULL,1+NULL,1-NULL;
 
13
select NULL=NULL,NULL<>NULL,IFNULL(NULL,1.1)+0,IFNULL(NULL,1) | 0;
 
14
select strcmp("a",NULL),(1<NULL)+0.0,NULL regexp "a",null like "a%","a%" like null;
15
15
select concat("a",NULL),replace(NULL,"a","b"),replace("string","i",NULL),replace("string",NULL,"i"),insert("abc",1,1,NULL),left(NULL,1);
16
16
select repeat("a",0),repeat("ab",5+5),repeat("ab",-1),reverse(NULL);
17
17
select field(NULL,"a","b","c");
20
20
SELECT NULL AND NULL, 1 AND NULL, NULL AND 1, NULL OR NULL, 0 OR NULL, NULL OR 0;
21
21
SELECT (NULL OR NULL) IS NULL;
22
22
select NULL AND 0, 0 and NULL;
23
 
# @TODO Move to functions/inet_ntoa.test when INET_NTOA function is 
24
 
# implemented
25
 
# select inet_ntoa(null),inet_aton(null),inet_aton("122.256"),inet_aton("122.226."),inet_aton("");
26
 
# explain extended select inet_ntoa(null),inet_aton(null),inet_aton("122.256"),inet_aton("122.226."),inet_aton("");
 
23
select inet_ntoa(null),inet_aton(null),inet_aton("122.256"),inet_aton("122.226."),inet_aton("");
 
24
explain extended select inet_ntoa(null),inet_aton(null),inet_aton("122.256"),inet_aton("122.226."),inet_aton("");
27
25
 
28
26
create table t1 (x int);
29
27
insert into t1 values (null);
47
45
#
48
46
# Testing of IFNULL
49
47
#
50
 
create table t1 (a int, b int);
 
48
create table t1 (a int, b int) engine=myisam;
51
49
insert into t1 values(20,null);
52
50
select t2.b, ifnull(t2.b,"this is null") from t1 as t2 left join t1 as t3 on
53
51
t2.b=t3.a;
61
59
#
62
60
# Test inserting and updating with NULL
63
61
#
64
 
CREATE TABLE t1 (a varchar(16) NOT NULL default '', b int NOT NULL default 0, c datetime NOT NULL default '2009-02-10 00:00:00', d int NOT NULL default 0);
65
 
 
66
 
# Test INSERT with NULL
67
 
 
68
 
--error ER_BAD_NULL_ERROR
 
62
CREATE TABLE t1 (a varchar(16) NOT NULL default '', b int(6) NOT NULL default 0, c datetime NOT NULL default '0000-00-00 00:00:00', d int(6) NOT NULL default 0);
 
63
INSERT INTO t1 SET a = "", d= "2003-01-14 03:54:55";
 
64
--error 1048
 
65
UPDATE t1 SET d=1/NULL;
 
66
--error 1048
 
67
UPDATE t1 SET d=NULL;
 
68
--error 1048
69
69
INSERT INTO t1 (a) values (null);
70
 
--error ER_BAD_NULL_ERROR
 
70
--error 1048
71
71
INSERT INTO t1 (a) values (1/null);
72
 
--error ER_BAD_NULL_ERROR
73
72
INSERT INTO t1 (a) values (null),(null);
74
 
--error ER_BAD_NULL_ERROR
 
73
--error 1048
75
74
INSERT INTO t1 (b) values (null);
76
 
--error ER_BAD_NULL_ERROR
 
75
--error 1048
77
76
INSERT INTO t1 (b) values (1/null);
78
 
--error ER_BAD_NULL_ERROR
79
77
INSERT INTO t1 (b) values (null),(null);
80
 
--error ER_BAD_NULL_ERROR
 
78
--error 1048
81
79
INSERT INTO t1 (c) values (null);
82
 
--error ER_BAD_NULL_ERROR
 
80
--error 1048
83
81
INSERT INTO t1 (c) values (1/null);
84
 
--error ER_BAD_NULL_ERROR
85
82
INSERT INTO t1 (c) values (null),(null);
86
 
--error ER_BAD_NULL_ERROR
 
83
--error 1048
87
84
INSERT INTO t1 (d) values (null);
88
 
--error ER_BAD_NULL_ERROR
 
85
--error 1048
89
86
INSERT INTO t1 (d) values (1/null);
90
 
--error ER_BAD_NULL_ERROR
91
87
INSERT INTO t1 (d) values (null),(null);
92
 
 
93
 
# Test UPDATE with NULLs
94
 
 
95
 
# The following should not error since there 
96
 
# are no rows in the table.
97
 
UPDATE t1 SET d= NULL;
98
 
 
99
 
# Insert a default row in order to test UPDATE to NULL error
100
 
INSERT INTO t1 VALUES ();
101
 
 
102
 
--error ER_BAD_NULL_ERROR
103
 
UPDATE t1 SET a=1/NULL;
104
 
--error ER_BAD_NULL_ERROR
105
 
UPDATE t1 SET a=NULL;
106
 
--error ER_BAD_NULL_ERROR
107
 
UPDATE t1 SET b=NULL;
108
 
--error ER_BAD_NULL_ERROR
109
 
UPDATE t1 SET c=NULL;
110
 
--error ER_BAD_NULL_ERROR
111
 
UPDATE t1 SET d=NULL;
112
 
 
113
 
truncate table t1;
114
 
 
115
 
# Test for LOAD DATA INFILE and check for NULL handling
116
 
# Error produced should be 1263, which is almost the same
117
 
# as 1048, only gives a "row" number.
118
 
# @TODO Is there really a reason for a separate error 
119
 
# just for LOAD DATA INFILE?
120
 
--error ER_WARN_NULL_TO_NOTNULL
121
 
LOAD DATA INFILE '../../std_data_ln/null_test.txt' INTO TABLE t1 FIELDS ENCLOSED BY '"';
122
 
 
 
88
select * from t1;
123
89
drop table t1;
124
90
 
125
 
 
126
91
#
127
92
# Test to check elimination of IS NULL predicate for a non-nullable attribute
128
93
# (bug #1990)  
134
99
explain select * from t1 where a between 2 and 3;
135
100
explain select * from t1 where a between 2 and 3 or b is null;
136
101
drop table t1;
 
102
select cast(NULL as signed);
137
103
 
138
104
#
139
105
# IS NULL is unable to use index in range if column is declared not null
140
106
# (Bug #4256)
141
107
#
142
 
#create table t1(i int, key(i));
143
 
#insert into t1 values(1);
144
 
#insert into t1 select i*2 from t1;
145
 
#insert into t1 select i*2 from t1;
146
 
#insert into t1 select i*2 from t1;
147
 
#insert into t1 select i*2 from t1;
148
 
#insert into t1 select i*2 from t1;
149
 
#insert into t1 select i*2 from t1;
150
 
#insert into t1 select i*2 from t1;
151
 
#insert into t1 select i*2 from t1;
152
 
#insert into t1 select i*2 from t1;
153
 
#insert into t1 values(null);
154
 
#explain select * from t1 where i=2 or i is null;
155
 
#select count(*) from t1 where i=2 or i is null;
156
 
# @TODO Fails with error 1265 on line 128.  Bug?
157
 
#alter table t1 change i i int not null;
158
 
#explain select * from t1 where i=2 or i is null;
159
 
#select count(*) from t1 where i=2 or i is null;
160
 
#drop table t1;
 
108
create table t1(i int, key(i));
 
109
insert into t1 values(1);
 
110
insert into t1 select i*2 from t1;
 
111
insert into t1 select i*2 from t1;
 
112
insert into t1 select i*2 from t1;
 
113
insert into t1 select i*2 from t1;
 
114
insert into t1 select i*2 from t1;
 
115
insert into t1 select i*2 from t1;
 
116
insert into t1 select i*2 from t1;
 
117
insert into t1 select i*2 from t1;
 
118
insert into t1 select i*2 from t1;
 
119
insert into t1 values(null);
 
120
explain select * from t1 where i=2 or i is null;
 
121
select count(*) from t1 where i=2 or i is null;
 
122
alter table t1 change i i int not null;
 
123
explain select * from t1 where i=2 or i is null;
 
124
select count(*) from t1 where i=2 or i is null;
 
125
drop table t1;
161
126
 
162
127
#
163
128
# NULL has its own type BINARY(0) by default.
164
129
# But NULL should be weaker than a constant
165
130
# when mixing charsets/collations
166
131
#
 
132
set names latin2;
167
133
# Check that result type is taken from a non-null string
168
134
create table t1 select
169
135
  null as c00,
205
171
  lpad('str', 10, null) as c37,
206
172
  rpad(null, 10, 'str') as c38;
207
173
  
208
 
--replace_regex /ENGINE=[a-zA-Z]+/ENGINE=DEFAULT/
209
174
show create table t1;
210
175
drop table t1;
211
176
 
224
189
  'string' in ('STRING', null) as c08,
225
190
  'string' in (null, 'STRING') as c09;
226
191
 
 
192
# Restore charset to the default value.
 
193
set names latin1;
 
194
 
227
195
#
228
196
# Bug#19145: mysqld crashes if you set the default value of an enum field to NULL
229
197
#
230
 
#create table bug19145a (e enum('a','b','c')          default 'b' , s set('x', 'y', 'z')          default 'y' ) engine=MyISAM;
231
 
#create table bug19145b (e enum('a','b','c')          default null, s set('x', 'y', 'z')          default null) engine=MyISAM;
232
 
 
233
 
#create table bug19145c (e enum('a','b','c') not null default 'b' , s set('x', 'y', 'z') not null default 'y' ) engine=MyISAM;
234
 
 
235
 
# Invalid default value for 's'
236
 
#--error ER_INVALID_DEFAULT
237
 
#create table bug19145setnotnulldefaultnull (e enum('a','b','c')          default null, s set('x', 'y', 'z') not null default null) engine=MyISAM;
238
 
 
239
 
# Invalid default value for 'e'
240
 
#--error ER_INVALID_DEFAULT
241
 
#create table bug19145enumnotnulldefaultnull (e enum('a','b','c') not null default null, s set('x', 'y', 'z')          default null) engine=MyISAM;
242
 
 
243
 
#alter table bug19145a alter column e set default null;
244
 
#alter table bug19145a alter column s set default null;
245
 
#alter table bug19145a add column (i int);
246
 
 
247
 
#alter table bug19145b alter column e set default null;
248
 
#alter table bug19145b alter column s set default null;
249
 
#alter table bug19145b add column (i int);
250
 
 
251
 
# Invalid default value for 'e'
252
 
#--error ER_INVALID_DEFAULT
253
 
#alter table bug19145c alter column e set default null;
254
 
 
255
 
# Invalid default value for 's'
256
 
#--error ER_INVALID_DEFAULT
257
 
#alter table bug19145c alter column s set default null;
258
 
#alter table bug19145c add column (i int);
259
 
 
260
 
#show create table bug19145a;
261
 
#show create table bug19145b;
262
 
#show create table bug19145c;
263
 
 
264
 
#drop table bug19145a;
265
 
#drop table bug19145b;
266
 
#drop table bug19145c;
 
198
create table bug19145a (e enum('a','b','c')          default 'b' , s set('x', 'y', 'z')          default 'y' ) engine=MyISAM;
 
199
create table bug19145b (e enum('a','b','c')          default null, s set('x', 'y', 'z')          default null) engine=MyISAM;
 
200
 
 
201
create table bug19145c (e enum('a','b','c') not null default 'b' , s set('x', 'y', 'z') not null default 'y' ) engine=MyISAM;
 
202
 
 
203
# Invalid default value for 's'
 
204
--error 1067
 
205
create table bug19145setnotnulldefaultnull (e enum('a','b','c')          default null, s set('x', 'y', 'z') not null default null) engine=MyISAM;
 
206
 
 
207
# Invalid default value for 'e'
 
208
--error 1067
 
209
create table bug19145enumnotnulldefaultnull (e enum('a','b','c') not null default null, s set('x', 'y', 'z')          default null) engine=MyISAM;
 
210
 
 
211
alter table bug19145a alter column e set default null;
 
212
alter table bug19145a alter column s set default null;
 
213
alter table bug19145a add column (i int);
 
214
 
 
215
alter table bug19145b alter column e set default null;
 
216
alter table bug19145b alter column s set default null;
 
217
alter table bug19145b add column (i int);
 
218
 
 
219
# Invalid default value for 'e'
 
220
--error 1067
 
221
alter table bug19145c alter column e set default null;
 
222
 
 
223
# Invalid default value for 's'
 
224
--error 1067
 
225
alter table bug19145c alter column s set default null;
 
226
alter table bug19145c add column (i int);
 
227
 
 
228
show create table bug19145a;
 
229
show create table bug19145b;
 
230
show create table bug19145c;
 
231
 
 
232
drop table bug19145a;
 
233
drop table bug19145b;
 
234
drop table bug19145c;
267
235
 
268
236
--echo # End of 4.1 tests
269
237
 
272
240
--echo #             precision > 0 && scale <= precision'
273
241
--echo #
274
242
 
275
 
CREATE TABLE t1 (a DECIMAL (1, 0) , b DECIMAL (1, 0) );
 
243
CREATE TABLE t1 (a DECIMAL (1, 0) ZEROFILL, b DECIMAL (1, 0) ZEROFILL);
276
244
INSERT INTO t1 (a, b) VALUES (0, 0);
277
245
 
278
246
CREATE TABLE t2 SELECT IFNULL(a, b) FROM t1;