Commit 5d5f3a1e authored by Igor Babaev's avatar Igor Babaev

Merge 5.3->5.5

parents c97ae6b5 99992f6e
...@@ -343,3 +343,33 @@ Field Type Null Key Default Extra ...@@ -343,3 +343,33 @@ Field Type Null Key Default Extra
IFNULL(NULL, b) decimal(1,0) YES NULL IFNULL(NULL, b) decimal(1,0) YES NULL
DROP TABLE t1, t2; DROP TABLE t1, t2;
# End of 5.0 tests # End of 5.0 tests
#
# MDEV-4895 Valgrind warnings (Conditional jump or move depends on uninitialised value) in Field_datetime::get_date on GREATEST(..) IS NULL
#
CREATE TABLE t1 (dt DATETIME NOT NULL);
INSERT INTO t1 VALUES (NOW()),(NOW());
EXPLAIN
SELECT * FROM t1 WHERE concat( dt, '2012-12-21 12:12:12' ) IS NULL;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
SELECT * FROM t1 WHERE concat( dt, '2012-12-21 12:12:12' ) IS NULL;
dt
DROP TABLE t1;
CREATE TABLE t1 (dt INT NOT NULL);
INSERT INTO t1 VALUES (1),(2);
EXPLAIN
SELECT * FROM t1 WHERE concat( dt, '1' ) IS NULL;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
SELECT * FROM t1 WHERE concat( dt, '1' ) IS NULL;
dt
DROP TABLE t1;
CREATE TABLE t1 (dt INT NOT NULL);
INSERT INTO t1 VALUES (1),(2);
EXPLAIN
SELECT * FROM t1 WHERE NOT (concat( dt, '1' ) IS NOT NULL);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
SELECT * FROM t1 WHERE NOT (concat( dt, '1' ) IS NOT NULL);
dt
DROP TABLE t1;
...@@ -255,3 +255,31 @@ DESCRIBE t2; ...@@ -255,3 +255,31 @@ DESCRIBE t2;
DROP TABLE t1, t2; DROP TABLE t1, t2;
--echo # End of 5.0 tests --echo # End of 5.0 tests
--echo #
--echo # MDEV-4895 Valgrind warnings (Conditional jump or move depends on uninitialised value) in Field_datetime::get_date on GREATEST(..) IS NULL
--echo #
CREATE TABLE t1 (dt DATETIME NOT NULL);
INSERT INTO t1 VALUES (NOW()),(NOW());
EXPLAIN
SELECT * FROM t1 WHERE concat( dt, '2012-12-21 12:12:12' ) IS NULL;
SELECT * FROM t1 WHERE concat( dt, '2012-12-21 12:12:12' ) IS NULL;
DROP TABLE t1;
CREATE TABLE t1 (dt INT NOT NULL);
INSERT INTO t1 VALUES (1),(2);
EXPLAIN
SELECT * FROM t1 WHERE concat( dt, '1' ) IS NULL;
SELECT * FROM t1 WHERE concat( dt, '1' ) IS NULL;
DROP TABLE t1;
CREATE TABLE t1 (dt INT NOT NULL);
INSERT INTO t1 VALUES (1),(2);
EXPLAIN
SELECT * FROM t1 WHERE NOT (concat( dt, '1' ) IS NOT NULL);
SELECT * FROM t1 WHERE NOT (concat( dt, '1' ) IS NOT NULL);
DROP TABLE t1;
...@@ -4748,6 +4748,8 @@ Item *and_expressions(Item *a, Item *b, Item **org_item) ...@@ -4748,6 +4748,8 @@ Item *and_expressions(Item *a, Item *b, Item **org_item)
longlong Item_func_isnull::val_int() longlong Item_func_isnull::val_int()
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
if (const_item() && !args[0]->maybe_null)
return 0;
return args[0]->is_null() ? 1: 0; return args[0]->is_null() ? 1: 0;
} }
...@@ -4755,6 +4757,8 @@ longlong Item_is_not_null_test::val_int() ...@@ -4755,6 +4757,8 @@ longlong Item_is_not_null_test::val_int()
{ {
DBUG_ASSERT(fixed == 1); DBUG_ASSERT(fixed == 1);
DBUG_ENTER("Item_is_not_null_test::val_int"); DBUG_ENTER("Item_is_not_null_test::val_int");
if (const_item() && !args[0]->maybe_null)
DBUG_RETURN(1);
if (args[0]->is_null()) if (args[0]->is_null())
{ {
DBUG_PRINT("info", ("null")); DBUG_PRINT("info", ("null"));
......
...@@ -13748,7 +13748,7 @@ internal_remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value) ...@@ -13748,7 +13748,7 @@ internal_remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
Propagate the newly formed multiple equalities to Propagate the newly formed multiple equalities to
the all AND/OR levels of cond the all AND/OR levels of cond
*/ */
bool is_simplifiable_cond= true; bool is_simplifiable_cond= false;
propagate_new_equalities(thd, cond, cond_equalities, propagate_new_equalities(thd, cond, cond_equalities,
cond_equal->upper_levels, cond_equal->upper_levels,
&is_simplifiable_cond); &is_simplifiable_cond);
...@@ -13759,7 +13759,7 @@ internal_remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value) ...@@ -13759,7 +13759,7 @@ internal_remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
*/ */
if (is_simplifiable_cond) if (is_simplifiable_cond)
{ {
if (!(cond= remove_eq_conds(thd, cond, cond_value))) if (!(cond= internal_remove_eq_conds(thd, cond, cond_value)))
return cond; return cond;
} }
} }
......
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