Browse Source

Merge gleb.loc:/work/bk/5.0-opt-32335

into  gleb.loc:/work/bk/5.0-opt
pull/374/head
unknown 18 years ago
parent
commit
f978c7cd86
  1. 6
      mysql-test/r/select.result
  2. 11
      mysql-test/t/select.test
  3. 3
      sql/item_cmpfunc.cc

6
mysql-test/r/select.result

@ -4322,4 +4322,10 @@ c3
DROP TABLE t1;
DROP TABLE t2;
CREATE TABLE t1 (c1 BIGINT NOT NULL);
INSERT INTO t1 (c1) VALUES (1);
SELECT * FROM t1 WHERE c1 > NULL + 1;
c1
DROP TABLE t1;
End of 5.0 tests

11
mysql-test/t/select.test

@ -3661,4 +3661,15 @@ DROP TABLE t2;
###########################################################################
#
# Bug #32335: Error on BIGINT > NULL + 1
#
CREATE TABLE t1 (c1 BIGINT NOT NULL);
INSERT INTO t1 (c1) VALUES (1);
SELECT * FROM t1 WHERE c1 > NULL + 1;
DROP TABLE t1;
--echo
--echo End of 5.0 tests

3
sql/item_cmpfunc.cc

@ -350,11 +350,12 @@ static bool convert_constant_item(THD *thd, Field *field, Item **item)
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))
if (!(*item)->is_null() && !(*item)->save_in_field(field, 1))
{
Item *tmp=new Item_int_with_ref(field->val_int(), *item,
test(field->flags & UNSIGNED_FLAG));
thd->variables.sql_mode= orig_sql_mode;
thd->count_cuted_fields= orig_count_cuted_fields;
if (tmp)
thd->change_item_tree(item, tmp);
return 1; // Item was replaced

Loading…
Cancel
Save