Commit 3d543dd1 authored by Gleb Shchepa's avatar Gleb Shchepa

Bug #39265: fix for the bug 33699 should be reverted

Documented behaviour was broken by the patch for bug 33699
that actually is not a bug.

This fix reverts patch for bug 33699 and reverts the
UPDATE of NOT NULL field with NULL query to old
behavior.
parent 49a35c66
...@@ -419,7 +419,7 @@ connection master; ...@@ -419,7 +419,7 @@ connection master;
update t31 set f5=555555555555555 where f3=6; update t31 set f5=555555555555555 where f3=6;
update t31 set f2=2 where f3=2; update t31 set f2=2 where f3=2;
update t31 set f1=NULL where f3=1; update t31 set f1=NULL where f3=1;
update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3; update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
--echo --echo
--echo ** Delete from Master ** --echo ** Delete from Master **
......
...@@ -108,7 +108,6 @@ execute stmt1 using @arg00, @arg01; ...@@ -108,7 +108,6 @@ execute stmt1 using @arg00, @arg01;
select a,b from t1 where a=@arg00; select a,b from t1 where a=@arg00;
set @arg00=NULL; set @arg00=NULL;
set @arg01=2; set @arg01=2;
--error 1048
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
select a,b from t1 order by a; select a,b from t1 order by a;
set @arg00=0; set @arg00=0;
......
...@@ -231,7 +231,8 @@ a b ...@@ -231,7 +231,8 @@ a b
204 7 204 7
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;
ERROR 23000: Column 'a' cannot be null Warnings:
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);
...@@ -246,7 +247,7 @@ a b ...@@ -246,7 +247,7 @@ a b
1 1 1 1
200 2 200 2
201 4 201 4
203 6 0 6
300 7 300 7
301 8 301 8
400 9 400 9
...@@ -262,7 +263,6 @@ a b ...@@ -262,7 +263,6 @@ a b
1 1 1 1
200 2 200 2
201 4 201 4
203 6
300 7 300 7
301 8 301 8
400 9 400 9
...@@ -273,20 +273,20 @@ a b ...@@ -273,20 +273,20 @@ a b
405 14 405 14
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;
ERROR 23000: Column 'a' cannot be null Warnings:
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
1 1 1 1
200 2 200 2
201 4 201 4
203 6
300 7 300 7
301 8 301 8
400 9 400 9
401 10 401 10
402 11 402 11
404 13 0 13
500 14 500 14
drop table t1; drop table t1;
create table t1 (a bigint); create table t1 (a bigint);
......
...@@ -46,8 +46,9 @@ SELECT * FROM t1; ...@@ -46,8 +46,9 @@ SELECT * FROM t1;
a b a b
0 new_value 0 new_value
UPDATE t1 set b = NULL where b = 'new_value'; UPDATE t1 set b = NULL where b = 'new_value';
ERROR 23000: Column 'b' cannot be null Warnings:
Warning 1048 Column 'b' cannot be null
SELECT * FROM t1; SELECT * FROM t1;
a b a b
0 new_value 0
DROP TABLE t1; DROP TABLE t1;
...@@ -93,9 +93,11 @@ INSERT INTO t1 SET a = "", d= "2003-01-14 03:54:55"; ...@@ -93,9 +93,11 @@ INSERT INTO t1 SET a = "", d= "2003-01-14 03:54:55";
Warnings: 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=1/NULL; UPDATE t1 SET d=1/NULL;
ERROR 23000: Column 'd' cannot be null Warnings:
Warning 1265 Data truncated for column 'd' at row 1
UPDATE t1 SET d=NULL; UPDATE t1 SET d=NULL;
ERROR 23000: Column 'd' cannot be null Warnings:
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);
...@@ -130,7 +132,7 @@ Warning 1048 Column 'd' cannot be null ...@@ -130,7 +132,7 @@ Warning 1048 Column 'd' cannot be null
Warning 1048 Column 'd' cannot be null 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 2003 0 0000-00-00 00:00:00 0
0 0000-00-00 00:00:00 0 0 0000-00-00 00:00:00 0
0 0000-00-00 00:00:00 0 0 0000-00-00 00:00:00 0
0 0000-00-00 00:00:00 0 0 0000-00-00 00:00:00 0
......
...@@ -1303,11 +1303,12 @@ a b ...@@ -1303,11 +1303,12 @@ a b
set @arg00=NULL; set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
ERROR 23000: Column 'a' cannot be null Warnings:
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
1 one 1 one
2 two
3 three 3 three
4 four 4 four
set @arg00=0; set @arg00=0;
......
...@@ -1286,11 +1286,12 @@ a b ...@@ -1286,11 +1286,12 @@ a b
set @arg00=NULL; set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
ERROR 23000: Column 'a' cannot be null Warnings:
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
1 one 1 one
2 two
3 three 3 three
4 four 4 four
set @arg00=0; set @arg00=0;
......
...@@ -1287,11 +1287,12 @@ a b ...@@ -1287,11 +1287,12 @@ a b
set @arg00=NULL; set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
ERROR 23000: Column 'a' cannot be null Warnings:
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
1 one 1 one
2 two
3 three 3 three
4 four 4 four
set @arg00=0; set @arg00=0;
......
...@@ -1329,11 +1329,12 @@ a b ...@@ -1329,11 +1329,12 @@ a b
set @arg00=NULL; set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
ERROR 23000: Column 'a' cannot be null Warnings:
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
1 one 1 one
2 two
3 three 3 three
4 four 4 four
set @arg00=0; set @arg00=0;
...@@ -4350,11 +4351,12 @@ a b ...@@ -4350,11 +4351,12 @@ a b
set @arg00=NULL; set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
ERROR 23000: Column 'a' cannot be null Warnings:
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
1 one 1 one
2 two
3 three 3 three
4 four 4 four
set @arg00=0; set @arg00=0;
......
...@@ -98,7 +98,8 @@ Warning 1265 Data truncated for column 'c' at row 1 ...@@ -98,7 +98,8 @@ Warning 1265 Data truncated for column 'c' at row 1
Warning 1265 Data truncated for column 'c' at row 2 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;
ERROR 23000: Column 'a' cannot be null Warnings:
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
......
...@@ -1286,11 +1286,12 @@ a b ...@@ -1286,11 +1286,12 @@ a b
set @arg00=NULL; set @arg00=NULL;
set @arg01=2; set @arg01=2;
execute stmt1 using @arg00, @arg01; execute stmt1 using @arg00, @arg01;
ERROR 23000: Column 'a' cannot be null Warnings:
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
1 one 1 one
2 two
3 three 3 three
4 four 4 four
set @arg00=0; set @arg00=0;
......
...@@ -454,7 +454,9 @@ f1 f2 f3 f4 ...@@ -454,7 +454,9 @@ f1 f2 f3 f4
update t31 set f5=555555555555555 where f3=6; update t31 set f5=555555555555555 where f3=6;
update t31 set f2=2 where f3=2; update t31 set f2=2 where f3=2;
update t31 set f1=NULL where f3=1; update t31 set f1=NULL where f3=1;
update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3; update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
Warnings:
Warning 1048 Column 'f3' cannot be null
** Delete from Master ** ** Delete from Master **
...@@ -1593,7 +1595,9 @@ f1 f2 f3 f4 ...@@ -1593,7 +1595,9 @@ f1 f2 f3 f4
update t31 set f5=555555555555555 where f3=6; update t31 set f5=555555555555555 where f3=6;
update t31 set f2=2 where f3=2; update t31 set f2=2 where f3=2;
update t31 set f1=NULL where f3=1; update t31 set f1=NULL where f3=1;
update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3; update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
Warnings:
Warning 1048 Column 'f3' cannot be null
** Delete from Master ** ** Delete from Master **
...@@ -2732,7 +2736,9 @@ f1 f2 f3 f4 ...@@ -2732,7 +2736,9 @@ f1 f2 f3 f4
update t31 set f5=555555555555555 where f3=6; update t31 set f5=555555555555555 where f3=6;
update t31 set f2=2 where f3=2; update t31 set f2=2 where f3=2;
update t31 set f1=NULL where f3=1; update t31 set f1=NULL where f3=1;
update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3; update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
Warnings:
Warning 1048 Column 'f3' cannot be null
** Delete from Master ** ** Delete from Master **
......
...@@ -454,7 +454,9 @@ f1 f2 f3 f4 ...@@ -454,7 +454,9 @@ f1 f2 f3 f4
update t31 set f5=555555555555555 where f3=6; update t31 set f5=555555555555555 where f3=6;
update t31 set f2=2 where f3=2; update t31 set f2=2 where f3=2;
update t31 set f1=NULL where f3=1; update t31 set f1=NULL where f3=1;
update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3; update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
Warnings:
Warning 1048 Column 'f3' cannot be null
** Delete from Master ** ** Delete from Master **
...@@ -1593,7 +1595,9 @@ f1 f2 f3 f4 ...@@ -1593,7 +1595,9 @@ f1 f2 f3 f4
update t31 set f5=555555555555555 where f3=6; update t31 set f5=555555555555555 where f3=6;
update t31 set f2=2 where f3=2; update t31 set f2=2 where f3=2;
update t31 set f1=NULL where f3=1; update t31 set f1=NULL where f3=1;
update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3; update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
Warnings:
Warning 1048 Column 'f3' cannot be null
** Delete from Master ** ** Delete from Master **
...@@ -2732,7 +2736,9 @@ f1 f2 f3 f4 ...@@ -2732,7 +2736,9 @@ f1 f2 f3 f4
update t31 set f5=555555555555555 where f3=6; update t31 set f5=555555555555555 where f3=6;
update t31 set f2=2 where f3=2; update t31 set f2=2 where f3=2;
update t31 set f1=NULL where f3=1; update t31 set f1=NULL where f3=1;
update t31 set f3=0, f27=NULL, f35='f35 new value' where f3=3; update t31 set f3=NULL, f27=NULL, f35='f35 new value' where f3=3;
Warnings:
Warning 1048 Column 'f3' cannot be null
** Delete from Master ** ** Delete from Master **
......
...@@ -50,7 +50,7 @@ kill @id; ...@@ -50,7 +50,7 @@ kill @id;
drop table t2,t3; drop table t2,t3;
insert into t4 values (3),(4); insert into t4 values (3),(4);
connection master; connection master;
--error 0,1053,2013,1048 --error 0,1053,2013
reap; reap;
connection master1; connection master1;
save_master_pos; save_master_pos;
......
...@@ -149,7 +149,6 @@ delete from t1 where a=0; ...@@ -149,7 +149,6 @@ delete from t1 where a=0;
update t1 set a=0 where b=5; update t1 set a=0 where b=5;
select * from t1 order by b; select * from t1 order by b;
delete from t1 where a=0; delete from t1 where a=0;
--error 1048
update t1 set a=NULL where b=6; update t1 set a=NULL where b=6;
update t1 set a=300 where b=7; update t1 set a=300 where b=7;
SET SQL_MODE=''; SET SQL_MODE='';
...@@ -165,7 +164,6 @@ delete from t1 where a=0; ...@@ -165,7 +164,6 @@ delete from t1 where a=0;
update t1 set a=0 where b=12; update t1 set a=0 where b=12;
select * from t1 order by b; select * from t1 order by b;
delete from t1 where a=0; delete from t1 where a=0;
--error 1048
update t1 set a=NULL where b=13; update t1 set a=NULL where b=13;
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;
......
...@@ -93,7 +93,6 @@ SELECT * FROM t1; ...@@ -93,7 +93,6 @@ SELECT * FROM t1;
UPDATE t1 set b = 'new_value' where a = 0; UPDATE t1 set b = 'new_value' where a = 0;
--enable_warnings --enable_warnings
SELECT * FROM t1; SELECT * FROM t1;
--error ER_BAD_NULL_ERROR
UPDATE t1 set b = NULL where b = 'new_value'; UPDATE t1 set b = NULL where b = 'new_value';
SELECT * FROM t1; SELECT * FROM t1;
......
...@@ -61,9 +61,7 @@ drop table t1; ...@@ -61,9 +61,7 @@ drop table t1;
# #
CREATE TABLE t1 (a varchar(16) NOT NULL default '', b smallint(6) NOT NULL default 0, c datetime NOT NULL default '0000-00-00 00:00:00', d smallint(6) NOT NULL default 0); CREATE TABLE t1 (a varchar(16) NOT NULL default '', b smallint(6) NOT NULL default 0, c datetime NOT NULL default '0000-00-00 00:00:00', d smallint(6) NOT NULL default 0);
INSERT INTO t1 SET a = "", d= "2003-01-14 03:54:55"; INSERT INTO t1 SET a = "", d= "2003-01-14 03:54:55";
--error 1048
UPDATE t1 SET d=1/NULL; UPDATE t1 SET d=1/NULL;
--error 1048
UPDATE t1 SET d=NULL; UPDATE t1 SET d=NULL;
--error 1048 --error 1048
INSERT INTO t1 (a) values (null); INSERT INTO t1 (a) values (null);
......
...@@ -65,7 +65,6 @@ create table t1(a tinyint NOT NULL, b tinyint unsigned, c char(5)); ...@@ -65,7 +65,6 @@ 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');
alter table t1 modify c char(4); alter table t1 modify c char(4);
alter table t1 add d char(2); alter table t1 add d char(2);
--error 1048
update t1 set a=NULL where a=10; update t1 set a=NULL where a=10;
update t1 set c='mysql ab' where c='test'; update t1 set c='mysql ab' where c='test';
update t1 set d=c; update t1 set d=c;
......
...@@ -526,9 +526,11 @@ int mysql_update(THD *thd, ...@@ -526,9 +526,11 @@ int mysql_update(THD *thd,
init_read_record(&info, thd, table, select, 0, 1, FALSE); init_read_record(&info, thd, table, select, 0, 1, FALSE);
updated= found= 0; updated= found= 0;
/* Generate an error when trying to set a NOT NULL field to NULL. */ /*
thd->count_cuted_fields= ignore ? CHECK_FIELD_WARN Generate an error (in TRADITIONAL mode) or warning
: CHECK_FIELD_ERROR_FOR_NULL; when trying to set a NOT NULL field to NULL.
*/
thd->count_cuted_fields= CHECK_FIELD_WARN;
thd->cuted_fields=0L; thd->cuted_fields=0L;
thd_proc_info(thd, "Updating"); thd_proc_info(thd, "Updating");
......
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