backport of Bug#11491 Misleading error message if not NULL column set to NULL, SQL mode TRADITIONAL

parent 268fdf5d
...@@ -232,7 +232,7 @@ a b ...@@ -232,7 +232,7 @@ a b
delete from t1 where a=0; delete from t1 where a=0;
update t1 set a=NULL where b=6; update t1 set a=NULL where b=6;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 4 Warning 1048 Column 'a' cannot be null
update t1 set a=300 where b=7; update t1 set a=300 where b=7;
SET SQL_MODE=''; SET SQL_MODE='';
insert into t1(a,b)values(NULL,8); insert into t1(a,b)values(NULL,8);
...@@ -274,7 +274,7 @@ a b ...@@ -274,7 +274,7 @@ a b
delete from t1 where a=0; delete from t1 where a=0;
update t1 set a=NULL where b=13; update t1 set a=NULL where b=13;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 9 Warning 1048 Column 'a' cannot be null
update t1 set a=500 where b=14; update t1 set a=500 where b=14;
select * from t1 order by b; select * from t1 order by b;
a b a b
......
...@@ -13,7 +13,7 @@ Warnings: ...@@ -13,7 +13,7 @@ Warnings:
Note 1050 Table 't1' already exists Note 1050 Table 't1' already exists
insert into t1 values (""),(null); insert into t1 values (""),(null);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'b' at row 2 Warning 1048 Column 'b' cannot be null
select * from t1; select * from t1;
b b
......
...@@ -63,7 +63,7 @@ insert into t1 values(NULL); ...@@ -63,7 +63,7 @@ insert into t1 values(NULL);
ERROR 23000: Column 'id' cannot be null ERROR 23000: Column 'id' cannot be null
insert into t1 values (1), (NULL), (2); insert into t1 values (1), (NULL), (2);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'id' at row 2 Warning 1048 Column 'id' cannot be null
select * from t1; select * from t1;
id id
1 1
......
...@@ -606,8 +606,8 @@ NULL 2 100 ...@@ -606,8 +606,8 @@ NULL 2 100
create table t2(No int not null, Field int not null, Count int not null); create table t2(No int not null, Field int not null, Count int not null);
insert into t2 Select null, Field, Count From t1 Where Month=20030901 and Type=2; insert into t2 Select null, Field, Count From t1 Where Month=20030901 and Type=2;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'No' at row 1 Warning 1048 Column 'No' cannot be null
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'No' at row 2 Warning 1048 Column 'No' cannot be null
select * from t2; select * from t2;
No Field Count No Field Count
0 1 100 0 1 100
......
...@@ -378,7 +378,7 @@ id c1 cnt ...@@ -378,7 +378,7 @@ id c1 cnt
INSERT IGNORE INTO t1 (id,c1) SELECT 1,NULL INSERT IGNORE INTO t1 (id,c1) SELECT 1,NULL
ON DUPLICATE KEY UPDATE c1=NULL, cnt=cnt+1; ON DUPLICATE KEY UPDATE c1=NULL, cnt=cnt+1;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'c1' at row 1 Warning 1048 Column 'c1' cannot be null
Error 1048 Column 'c1' cannot be null Error 1048 Column 'c1' cannot be null
SELECT * FROM t1; SELECT * FROM t1;
id c1 cnt id c1 cnt
...@@ -386,7 +386,7 @@ id c1 cnt ...@@ -386,7 +386,7 @@ id c1 cnt
INSERT IGNORE INTO t1 (id,c1) SELECT * FROM t2 INSERT IGNORE INTO t1 (id,c1) SELECT * FROM t2
ON DUPLICATE KEY UPDATE c1=NULL, cnt=cnt+1; ON DUPLICATE KEY UPDATE c1=NULL, cnt=cnt+1;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'c1' at row 1 Warning 1048 Column 'c1' cannot be null
Error 1048 Column 'c1' cannot be null Error 1048 Column 'c1' cannot be null
SELECT * FROM t1; SELECT * FROM t1;
id c1 cnt id c1 cnt
......
...@@ -159,8 +159,8 @@ CREATE TABLE t1 (c CHAR(10) NOT NULL,i INT NOT NULL AUTO_INCREMENT, ...@@ -159,8 +159,8 @@ CREATE TABLE t1 (c CHAR(10) NOT NULL,i INT NOT NULL AUTO_INCREMENT,
UNIQUE (c,i)); UNIQUE (c,i));
INSERT INTO t1 (c) VALUES (NULL),(NULL); INSERT INTO t1 (c) VALUES (NULL),(NULL);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'c' at row 1 Warning 1048 Column 'c' cannot be null
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'c' at row 2 Warning 1048 Column 'c' cannot be null
SELECT * FROM t1; SELECT * FROM t1;
c i c i
1 1
......
...@@ -97,39 +97,39 @@ Warnings: ...@@ -97,39 +97,39 @@ Warnings:
Warning 1265 Data truncated for column 'd' at row 1 Warning 1265 Data truncated for column 'd' at row 1
UPDATE t1 SET d=NULL; UPDATE t1 SET d=NULL;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'd' at row 1 Warning 1048 Column 'd' cannot be null
INSERT INTO t1 (a) values (null); INSERT INTO t1 (a) values (null);
ERROR 23000: Column 'a' cannot be null ERROR 23000: Column 'a' cannot be null
INSERT INTO t1 (a) values (1/null); INSERT INTO t1 (a) values (1/null);
ERROR 23000: Column 'a' cannot be null ERROR 23000: Column 'a' cannot be null
INSERT INTO t1 (a) values (null),(null); INSERT INTO t1 (a) values (null),(null);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 1 Warning 1048 Column 'a' cannot be null
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 2 Warning 1048 Column 'a' cannot be null
INSERT INTO t1 (b) values (null); INSERT INTO t1 (b) values (null);
ERROR 23000: Column 'b' cannot be null ERROR 23000: Column 'b' cannot be null
INSERT INTO t1 (b) values (1/null); INSERT INTO t1 (b) values (1/null);
ERROR 23000: Column 'b' cannot be null ERROR 23000: Column 'b' cannot be null
INSERT INTO t1 (b) values (null),(null); INSERT INTO t1 (b) values (null),(null);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'b' at row 1 Warning 1048 Column 'b' cannot be null
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'b' at row 2 Warning 1048 Column 'b' cannot be null
INSERT INTO t1 (c) values (null); INSERT INTO t1 (c) values (null);
ERROR 23000: Column 'c' cannot be null ERROR 23000: Column 'c' cannot be null
INSERT INTO t1 (c) values (1/null); INSERT INTO t1 (c) values (1/null);
ERROR 23000: Column 'c' cannot be null ERROR 23000: Column 'c' cannot be null
INSERT INTO t1 (c) values (null),(null); INSERT INTO t1 (c) values (null),(null);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'c' at row 1 Warning 1048 Column 'c' cannot be null
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'c' at row 2 Warning 1048 Column 'c' cannot be null
INSERT INTO t1 (d) values (null); INSERT INTO t1 (d) values (null);
ERROR 23000: Column 'd' cannot be null ERROR 23000: Column 'd' cannot be null
INSERT INTO t1 (d) values (1/null); INSERT INTO t1 (d) values (1/null);
ERROR 23000: Column 'd' cannot be null ERROR 23000: Column 'd' cannot be null
INSERT INTO t1 (d) values (null),(null); INSERT INTO t1 (d) values (null),(null);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'd' at row 1 Warning 1048 Column 'd' cannot be null
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'd' at row 2 Warning 1048 Column 'd' cannot be null
select * from t1; select * from t1;
a b c d a b c d
0 0000-00-00 00:00:00 0 0 0000-00-00 00:00:00 0
......
...@@ -342,7 +342,7 @@ index (id2) ...@@ -342,7 +342,7 @@ index (id2)
); );
insert into t1 values(null,null),(1,1); insert into t1 values(null,null),(1,1);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'id2' at row 1 Warning 1048 Column 'id2' cannot be null
select * from t1; select * from t1;
id id2 id id2
NULL 0 NULL 0
......
...@@ -1304,7 +1304,7 @@ set @arg00=NULL; ...@@ -1304,7 +1304,7 @@ set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 1 Warning 1048 Column 'a' cannot be null
select a,b from t1 order by a; select a,b from t1 order by a;
a b a b
0 two 0 two
......
...@@ -1287,7 +1287,7 @@ set @arg00=NULL; ...@@ -1287,7 +1287,7 @@ set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 1 Warning 1048 Column 'a' cannot be null
select a,b from t1 order by a; select a,b from t1 order by a;
a b a b
0 two 0 two
......
...@@ -1288,7 +1288,7 @@ set @arg00=NULL; ...@@ -1288,7 +1288,7 @@ set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 1 Warning 1048 Column 'a' cannot be null
select a,b from t1 order by a; select a,b from t1 order by a;
a b a b
0 two 0 two
......
...@@ -1330,7 +1330,7 @@ set @arg00=NULL; ...@@ -1330,7 +1330,7 @@ set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 1 Warning 1048 Column 'a' cannot be null
select a,b from t1 order by a; select a,b from t1 order by a;
a b a b
0 two 0 two
...@@ -4351,7 +4351,7 @@ set @arg00=NULL; ...@@ -4351,7 +4351,7 @@ set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 1 Warning 1048 Column 'a' cannot be null
select a,b from t1 order by a; select a,b from t1 order by a;
a b a b
0 two 0 two
......
...@@ -1287,7 +1287,7 @@ set @arg00=NULL; ...@@ -1287,7 +1287,7 @@ set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 1 Warning 1048 Column 'a' cannot be null
select a,b from t1 order by a; select a,b from t1 order by a;
a b a b
0 two 0 two
......
...@@ -1287,7 +1287,7 @@ set @arg00=NULL; ...@@ -1287,7 +1287,7 @@ set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 1 Warning 1048 Column 'a' cannot be null
select a,b from t1 order by a; select a,b from t1 order by a;
a b a b
0 two 0 two
......
...@@ -993,16 +993,16 @@ ERROR 23000: Column 'col2' cannot be null ...@@ -993,16 +993,16 @@ ERROR 23000: Column 'col2' cannot be null
INSERT INTO t1 VALUES (103,'',NULL); INSERT INTO t1 VALUES (103,'',NULL);
ERROR 23000: Column 'col3' cannot be null ERROR 23000: Column 'col3' cannot be null
UPDATE t1 SET col1=NULL WHERE col1 =100; UPDATE t1 SET col1=NULL WHERE col1 =100;
ERROR 22004: Column was set to data type implicit default; NULL supplied for NOT NULL column 'col1' at row 1 ERROR 23000: Column 'col1' cannot be null
UPDATE t1 SET col2 =NULL WHERE col2 ='hello'; UPDATE t1 SET col2 =NULL WHERE col2 ='hello';
ERROR 22004: Column was set to data type implicit default; NULL supplied for NOT NULL column 'col2' at row 1 ERROR 23000: Column 'col2' cannot be null
UPDATE t1 SET col2 =NULL where col3 IS NOT NULL; UPDATE t1 SET col2 =NULL where col3 IS NOT NULL;
ERROR 22004: Column was set to data type implicit default; NULL supplied for NOT NULL column 'col2' at row 1 ERROR 23000: Column 'col2' cannot be null
INSERT IGNORE INTO t1 values (NULL,NULL,NULL); INSERT IGNORE INTO t1 values (NULL,NULL,NULL);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'col1' at row 1 Warning 1048 Column 'col1' cannot be null
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'col2' at row 1 Warning 1048 Column 'col2' cannot be null
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'col3' at row 1 Warning 1048 Column 'col3' cannot be null
SELECT * FROM t1; SELECT * FROM t1;
col1 col2 col3 col1 col2 col3
100 hello 2004-08-20 100 hello 2004-08-20
...@@ -1027,11 +1027,11 @@ ERROR HY000: Field 'col2' doesn't have a default value ...@@ -1027,11 +1027,11 @@ ERROR HY000: Field 'col2' doesn't have a default value
INSERT INTO t1 (col1) SELECT 1; INSERT INTO t1 (col1) SELECT 1;
ERROR HY000: Field 'col2' doesn't have a default value ERROR HY000: Field 'col2' doesn't have a default value
INSERT INTO t1 SELECT 1,NULL; INSERT INTO t1 SELECT 1,NULL;
ERROR 22004: Column was set to data type implicit default; NULL supplied for NOT NULL column 'col2' at row 1 ERROR 23000: Column 'col2' cannot be null
INSERT IGNORE INTO t1 values (NULL,NULL); INSERT IGNORE INTO t1 values (NULL,NULL);
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'col1' at row 1 Warning 1048 Column 'col1' cannot be null
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'col2' at row 1 Warning 1048 Column 'col2' cannot be null
INSERT IGNORE INTO t1 (col1) values (3); INSERT IGNORE INTO t1 (col1) values (3);
Warnings: Warnings:
Warning 1364 Field 'col2' doesn't have a default value Warning 1364 Field 'col2' doesn't have a default value
......
...@@ -1497,7 +1497,7 @@ insert into v3(b) values (10); ...@@ -1497,7 +1497,7 @@ insert into v3(b) values (10);
insert into v3(a) select a from t2; insert into v3(a) select a from t2;
insert into v3(b) select b from t2; insert into v3(b) select b from t2;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 2 Warning 1048 Column 'a' cannot be null
insert into v3(a) values (1) on duplicate key update a=a+10000+VALUES(a); insert into v3(a) values (1) on duplicate key update a=a+10000+VALUES(a);
select * from t1; select * from t1;
a b a b
......
...@@ -86,7 +86,7 @@ drop table t1; ...@@ -86,7 +86,7 @@ drop table t1;
create table t1(a tinyint NOT NULL, b tinyint unsigned, c char(5)); create table t1(a tinyint NOT NULL, b tinyint unsigned, c char(5));
insert into t1 values(NULL,100,'mysql'),(10,-1,'mysql ab'),(500,256,'open source'),(20,NULL,'test'); insert into t1 values(NULL,100,'mysql'),(10,-1,'mysql ab'),(500,256,'open source'),(20,NULL,'test');
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 1 Warning 1048 Column 'a' cannot be null
Warning 1264 Out of range value adjusted for column 'b' at row 2 Warning 1264 Out of range value adjusted for column 'b' at row 2
Warning 1265 Data truncated for column 'c' at row 2 Warning 1265 Data truncated for column 'c' at row 2
Warning 1264 Out of range value adjusted for column 'a' at row 3 Warning 1264 Out of range value adjusted for column 'a' at row 3
...@@ -99,7 +99,7 @@ Warning 1265 Data truncated for column 'c' at row 2 ...@@ -99,7 +99,7 @@ Warning 1265 Data truncated for column 'c' at row 2
alter table t1 add d char(2); alter table t1 add d char(2);
update t1 set a=NULL where a=10; update t1 set a=NULL where a=10;
Warnings: Warnings:
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 2 Warning 1048 Column 'a' cannot be null
update t1 set c='mysql ab' where c='test'; update t1 set c='mysql ab' where c='test';
Warnings: Warnings:
Warning 1265 Data truncated for column 'c' at row 4 Warning 1265 Data truncated for column 'c' at row 4
...@@ -115,7 +115,7 @@ Warnings: ...@@ -115,7 +115,7 @@ Warnings:
Warning 1265 Data truncated for column 'b' at row 1 Warning 1265 Data truncated for column 'b' at row 1
Warning 1265 Data truncated for column 'b' at row 2 Warning 1265 Data truncated for column 'b' at row 2
Warning 1265 Data truncated for column 'b' at row 3 Warning 1265 Data truncated for column 'b' at row 3
Warning 1263 Column was set to data type implicit default; NULL supplied for NOT NULL column 'a' at row 4 Warning 1048 Column 'a' cannot be null
Warning 1265 Data truncated for column 'b' at row 4 Warning 1265 Data truncated for column 'b' at row 4
insert into t2(b) values('mysqlab'); insert into t2(b) values('mysqlab');
Warnings: Warnings:
......
...@@ -890,11 +890,11 @@ INSERT INTO t1 (col1,col2,col3) VALUES (NULL, '', '2004-01-01'); ...@@ -890,11 +890,11 @@ INSERT INTO t1 (col1,col2,col3) VALUES (NULL, '', '2004-01-01');
INSERT INTO t1 (col1,col2,col3) VALUES (102, NULL, '2004-01-01'); INSERT INTO t1 (col1,col2,col3) VALUES (102, NULL, '2004-01-01');
--error 1048 --error 1048
INSERT INTO t1 VALUES (103,'',NULL); INSERT INTO t1 VALUES (103,'',NULL);
--error 1263 --error 1048
UPDATE t1 SET col1=NULL WHERE col1 =100; UPDATE t1 SET col1=NULL WHERE col1 =100;
--error 1263 --error 1048
UPDATE t1 SET col2 =NULL WHERE col2 ='hello'; UPDATE t1 SET col2 =NULL WHERE col2 ='hello';
--error 1263 --error 1048
UPDATE t1 SET col2 =NULL where col3 IS NOT NULL; UPDATE t1 SET col2 =NULL where col3 IS NOT NULL;
INSERT IGNORE INTO t1 values (NULL,NULL,NULL); INSERT IGNORE INTO t1 values (NULL,NULL,NULL);
SELECT * FROM t1; SELECT * FROM t1;
...@@ -914,7 +914,7 @@ INSERT INTO t1 (col1) VALUES (2); ...@@ -914,7 +914,7 @@ INSERT INTO t1 (col1) VALUES (2);
INSERT INTO t1 VALUES(default(col1),default(col2)); INSERT INTO t1 VALUES(default(col1),default(col2));
--error 1364 --error 1364
INSERT INTO t1 (col1) SELECT 1; INSERT INTO t1 (col1) SELECT 1;
--error 1263 --error 1048
INSERT INTO t1 SELECT 1,NULL; INSERT INTO t1 SELECT 1,NULL;
INSERT IGNORE INTO t1 values (NULL,NULL); INSERT IGNORE INTO t1 values (NULL,NULL);
INSERT IGNORE INTO t1 (col1) values (3); INSERT IGNORE INTO t1 (col1) values (3);
......
...@@ -177,8 +177,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions) ...@@ -177,8 +177,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions)
} }
if (current_thd->count_cuted_fields == CHECK_FIELD_WARN) if (current_thd->count_cuted_fields == CHECK_FIELD_WARN)
{ {
field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, field->set_warning(MYSQL_ERROR::WARN_LEVEL_WARN, ER_BAD_NULL_ERROR, 1);
ER_WARN_NULL_TO_NOTNULL, 1);
return 0; return 0;
} }
if (!current_thd->no_errors) if (!current_thd->no_errors)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment