Commit f8f021fd authored by unknown's avatar unknown

Bug #30942: select str_to_date from derived table returns varying results

The function str_to_date has a field to say whether it's invoked constant 
arguments. But this member was not initialized, causing the function to
think that it could use a cache of the format type when said cache was in 
fact not initialized.
Fixed by initializing the field to false.


mysql-test/r/type_date.result:
  Bug#30942: Test result
mysql-test/t/type_date.test:
  Bug#30942: Test case
sql/item_timefunc.h:
  Bug#30942: Initialized const_item to false
parent 4a801dde
...@@ -136,3 +136,13 @@ d dt ts ...@@ -136,3 +136,13 @@ d dt ts
0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00 0000-00-00 0000-00-00 00:00:00 0000-00-00 00:00:00
2001-11-11 2001-11-11 00:00:00 2001-11-11 00:00:00 2001-11-11 2001-11-11 00:00:00 2001-11-11 00:00:00
drop table t1; drop table t1;
CREATE TABLE t1 (
a INT
);
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (NULL);
SELECT str_to_date( '', a ) FROM t1;
str_to_date( '', a )
0000-00-00 00:00:00
NULL
DROP TABLE t1;
...@@ -136,3 +136,16 @@ insert into t1 values (9912101,9912101,9912101); ...@@ -136,3 +136,16 @@ insert into t1 values (9912101,9912101,9912101);
insert into t1 values (11111,11111,11111); insert into t1 values (11111,11111,11111);
select * from t1; select * from t1;
drop table t1; drop table t1;
#
# Bug #30942: select str_to_date from derived table returns varying results
#
CREATE TABLE t1 (
a INT
);
INSERT INTO t1 VALUES (1);
INSERT INTO t1 VALUES (NULL);
SELECT str_to_date( '', a ) FROM t1;
DROP TABLE t1;
...@@ -1030,7 +1030,7 @@ class Item_func_str_to_date :public Item_str_func ...@@ -1030,7 +1030,7 @@ class Item_func_str_to_date :public Item_str_func
bool const_item; bool const_item;
public: public:
Item_func_str_to_date(Item *a, Item *b) Item_func_str_to_date(Item *a, Item *b)
:Item_str_func(a, b) :Item_str_func(a, b), const_item(false)
{} {}
String *val_str(String *str); String *val_str(String *str);
bool get_date(MYSQL_TIME *ltime, uint fuzzy_date); bool get_date(MYSQL_TIME *ltime, uint fuzzy_date);
......
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