diff options
-rw-r--r-- | mysql-test/r/strict.result | 6 | ||||
-rw-r--r-- | mysql-test/t/strict.test | 8 | ||||
-rw-r--r-- | sql/item_cmpfunc.cc | 3 |
3 files changed, 16 insertions, 1 deletions
diff --git a/mysql-test/r/strict.result b/mysql-test/r/strict.result index 94f4637cd05..3b2fda4248a 100644 --- a/mysql-test/r/strict.result +++ b/mysql-test/r/strict.result @@ -1393,4 +1393,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 fe731f4b0a1..7dd38920b3d 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 862185e6fce..9235e012309 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -366,7 +366,8 @@ static bool convert_constant_item(THD *thd, Field *field, Item **item) old_read_map= dbug_tmp_use_all_columns(table, table->read_set); } /* For comparison purposes allow invalid dates like 2000-01-32 */ - thd->variables.sql_mode|= MODE_INVALID_DATES; + thd->variables.sql_mode= (orig_sql_mode & ~MODE_NO_ZERO_DATE) | + MODE_INVALID_DATES; thd->count_cuted_fields= CHECK_FIELD_IGNORE; if (!(*item)->save_in_field(field, 1) && !((*item)->null_value)) { |