Commit f73efac9 authored by Ramil Kalimullin's avatar Ramil Kalimullin

Auto-merge

parents a0d88146 91d23568
...@@ -324,6 +324,11 @@ select @my_uuid_date - @my_uuid_synthetic; ...@@ -324,6 +324,11 @@ select @my_uuid_date - @my_uuid_synthetic;
@my_uuid_date - @my_uuid_synthetic @my_uuid_date - @my_uuid_synthetic
0 0
set @@session.time_zone=@save_tz; set @@session.time_zone=@save_tz;
CREATE TABLE t1 (a DATE);
SELECT * FROM t1 WHERE a = NAME_CONST('reportDate',
_binary'2009-01-09' COLLATE 'binary');
a
DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
select connection_id() > 0; select connection_id() > 0;
connection_id() > 0 connection_id() > 0
......
...@@ -445,6 +445,15 @@ select @my_uuid_date - @my_uuid_synthetic; ...@@ -445,6 +445,15 @@ select @my_uuid_date - @my_uuid_synthetic;
set @@session.time_zone=@save_tz; set @@session.time_zone=@save_tz;
#
# Bug#42014: Crash, name_const with collate
#
CREATE TABLE t1 (a DATE);
SELECT * FROM t1 WHERE a = NAME_CONST('reportDate',
_binary'2009-01-09' COLLATE 'binary');
DROP TABLE t1;
--echo End of 5.0 tests --echo End of 5.0 tests
# #
......
...@@ -1274,13 +1274,26 @@ Item::Type Item_name_const::type() const ...@@ -1274,13 +1274,26 @@ Item::Type Item_name_const::type() const
valid_args guarantees value_item->basic_const_item(); if type is valid_args guarantees value_item->basic_const_item(); if type is
FUNC_ITEM, then we have a fudged item_func_neg() on our hands FUNC_ITEM, then we have a fudged item_func_neg() on our hands
and return the underlying type. and return the underlying type.
For Item_func_set_collation()
e.g. NAME_CONST('name', 'value' COLLATE collation) we return its
'value' argument type.
*/ */
return valid_args ? if (!valid_args)
(((value_item->type() == FUNC_ITEM) && return NULL_ITEM;
(((Item_func *) value_item)->functype() == Item_func::NEG_FUNC)) ? Item::Type value_type= value_item->type();
((Item_func *) value_item)->key_item()->type() : if (value_type == FUNC_ITEM)
value_item->type()) : {
NULL_ITEM; /*
The second argument of NAME_CONST('name', 'value') must be
a simple constant item or a NEG_FUNC/COLLATE_FUNC.
*/
DBUG_ASSERT(((Item_func *) value_item)->functype() ==
Item_func::NEG_FUNC ||
((Item_func *) value_item)->functype() ==
Item_func::COLLATE_FUNC);
return ((Item_func *) value_item)->key_item()->type();
}
return value_type;
} }
......
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