diff --git a/mysql-test/r/strict.result b/mysql-test/r/strict.result index f9d84df5d9f..eecdc545be7 100644 --- a/mysql-test/r/strict.result +++ b/mysql-test/r/strict.result @@ -1391,4 +1391,10 @@ create table t1 (f1 set('a','a')); ERROR HY000: Column 'f1' has duplicated value 'a' in SET create table t1 (f1 enum('a','a')); ERROR HY000: Column 'f1' has duplicated value 'a' in ENUM +set @@sql_mode='NO_ZERO_DATE'; +create table t1(a datetime not null); +select count(*) from t1 where a is null; +count(*) +0 +drop table t1; End of 5.0 tests diff --git a/mysql-test/t/strict.test b/mysql-test/t/strict.test index 1792c0fccbc..faca9e7b080 100644 --- a/mysql-test/t/strict.test +++ b/mysql-test/t/strict.test @@ -1258,4 +1258,12 @@ create table t1 (f1 set('a','a')); --error 1291 create table t1 (f1 enum('a','a')); +# +# Bug #22824: strict, datetime, NULL, wrong warning +# +set @@sql_mode='NO_ZERO_DATE'; +create table t1(a datetime not null); +select count(*) from t1 where a is null; +drop table t1; + --echo End of 5.0 tests diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index 1c0ece8877b..6f207e920d0 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -316,7 +316,8 @@ static bool convert_constant_item(THD *thd, Field *field, Item **item) { /* For comparison purposes allow invalid dates like 2000-01-32 */ ulong orig_sql_mode= thd->variables.sql_mode; - thd->variables.sql_mode|= MODE_INVALID_DATES; + thd->variables.sql_mode= (orig_sql_mode & ~MODE_NO_ZERO_DATE) | + MODE_INVALID_DATES; if (!(*item)->save_in_field(field, 1) && !((*item)->null_value)) { Item *tmp=new Item_int_with_ref(field->val_int(), *item,