~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/t/null.test

  • Committer: Brian Aker
  • Date: 2008-10-06 06:47:29 UTC
  • Revision ID: brian@tangent.org-20081006064729-2i9mhjkzyvow9xsm
RemoveĀ uint.

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
 
 
 
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
68
--error 1048
69
69
INSERT INTO t1 (a) values (null);
70
70
--error 1048
71
71
INSERT INTO t1 (a) values (1/null);
72
 
--error 1048
73
72
INSERT INTO t1 (a) values (null),(null);
74
73
--error 1048
75
74
INSERT INTO t1 (b) values (null);
76
75
--error 1048
77
76
INSERT INTO t1 (b) values (1/null);
78
 
--error 1048
79
77
INSERT INTO t1 (b) values (null),(null);
80
78
--error 1048
81
79
INSERT INTO t1 (c) values (null);
82
80
--error 1048
83
81
INSERT INTO t1 (c) values (1/null);
84
 
--error 1048
85
82
INSERT INTO t1 (c) values (null),(null);
86
83
--error 1048
87
84
INSERT INTO t1 (d) values (null);
88
85
--error 1048
89
86
INSERT INTO t1 (d) values (1/null);
90
 
--error 1048
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 1048
103
 
UPDATE t1 SET a=1/NULL;
104
 
--error 1048
105
 
UPDATE t1 SET a=NULL;
106
 
--error 1048
107
 
UPDATE t1 SET b=NULL;
108
 
--error 1048
109
 
UPDATE t1 SET c=NULL;
110
 
--error 1048
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 1263
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 1067
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 1067
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 1067
253
 
#alter table bug19145c alter column e set default null;
254
 
 
255
 
# Invalid default value for 's'
256
 
#--error 1067
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;