mirror of
https://github.com/MariaDB/server.git
synced 2025-12-04 17:23:46 +03:00
lp:737104 Crash in DTCollation::set in 5.1-micro
and a different fix for lp:736370 cache temporal expression in Item_cache_int, not in Item_string. invoke get_datetime_value() to create a correct Item_cache_int. Implement Item_cache_int::clone, as it's a proper constant
This commit is contained in:
@@ -1497,3 +1497,7 @@ drop table t1;
|
|||||||
select now() > coalesce(time('21:43:24'), date('2010-05-03'));
|
select now() > coalesce(time('21:43:24'), date('2010-05-03'));
|
||||||
now() > coalesce(time('21:43:24'), date('2010-05-03'))
|
now() > coalesce(time('21:43:24'), date('2010-05-03'))
|
||||||
1
|
1
|
||||||
|
create table t1 (f1 timestamp);
|
||||||
|
select * from t1 where f1 > f1 and f1 <=> timestampadd(hour, 9 , '2010-01-01 16:55:35');
|
||||||
|
f1
|
||||||
|
drop table t1;
|
||||||
|
|||||||
@@ -926,7 +926,7 @@ select * from t1 where 1 and concat(f2)=MAKEDATE(2011, 125);
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# lp:736791 Crash in make_truncated_value_warningwith LEAST()/GREATEST/COALESCE
|
# lp:736791 Crash in make_truncated_value_warning with LEAST()/GREATEST/COALESCE
|
||||||
#
|
#
|
||||||
create table t1 (f1 timestamp);
|
create table t1 (f1 timestamp);
|
||||||
insert into t1 values ('0000-00-00 00:00:00');
|
insert into t1 values ('0000-00-00 00:00:00');
|
||||||
@@ -938,3 +938,9 @@ drop table t1;
|
|||||||
#
|
#
|
||||||
select now() > coalesce(time('21:43:24'), date('2010-05-03'));
|
select now() > coalesce(time('21:43:24'), date('2010-05-03'));
|
||||||
|
|
||||||
|
#
|
||||||
|
# lp:737104 Crash in DTCollation::set in 5.1-micro
|
||||||
|
#
|
||||||
|
create table t1 (f1 timestamp);
|
||||||
|
select * from t1 where f1 > f1 and f1 <=> timestampadd(hour, 9 , '2010-01-01 16:55:35');
|
||||||
|
drop table t1;
|
||||||
|
|||||||
@@ -6884,8 +6884,15 @@ void resolve_const_item(THD *thd, Item **ref, Item *comp_item)
|
|||||||
char *name=item->name; // Alloced by sql_alloc
|
char *name=item->name; // Alloced by sql_alloc
|
||||||
|
|
||||||
switch (res_type) {
|
switch (res_type) {
|
||||||
case TIME_RESULT: // will be handled by get_datetime_value()
|
case TIME_RESULT:
|
||||||
|
{
|
||||||
|
bool is_null;
|
||||||
|
Item **ref_copy= ref;
|
||||||
|
get_datetime_value(thd, &ref_copy, &new_item, comp_item, &is_null);
|
||||||
|
if (is_null)
|
||||||
|
new_item= new Item_null(name);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case STRING_RESULT:
|
case STRING_RESULT:
|
||||||
{
|
{
|
||||||
char buff[MAX_FIELD_WIDTH];
|
char buff[MAX_FIELD_WIDTH];
|
||||||
|
|||||||
@@ -3035,6 +3035,12 @@ public:
|
|||||||
my_decimal *val_decimal(my_decimal *);
|
my_decimal *val_decimal(my_decimal *);
|
||||||
enum Item_result result_type() const { return INT_RESULT; }
|
enum Item_result result_type() const { return INT_RESULT; }
|
||||||
bool cache_value();
|
bool cache_value();
|
||||||
|
Item *clone_item()
|
||||||
|
{
|
||||||
|
Item_cache_int *item= new Item_cache_int(cached_field_type);
|
||||||
|
item->store(this, value);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user