Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into moonbone.local:/mnt/gentoo64/work/28261-bug-5.0-opt-mysql
This commit is contained in:
commit
507ad360d7
@ -352,3 +352,27 @@ select left(f1,10) = curdate() from t1;
|
|||||||
left(f1,10) = curdate()
|
left(f1,10) = curdate()
|
||||||
1
|
1
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
create table t1(f1 date);
|
||||||
|
insert into t1 values('01-01-01'),('02-02-02'),('01-01-01'),('02-02-02');
|
||||||
|
set @bug28261='';
|
||||||
|
select if(@bug28261 = f1, '', @bug28261:= f1) from t1;
|
||||||
|
if(@bug28261 = f1, '', @bug28261:= f1)
|
||||||
|
2001-01-01
|
||||||
|
2002-02-02
|
||||||
|
2001-01-01
|
||||||
|
2002-02-02
|
||||||
|
Warnings:
|
||||||
|
Warning 1292 Incorrect date value: '' for column 'f1' at row 1
|
||||||
|
select if(@bug28261 = f1, '', @bug28261:= f1) from t1;
|
||||||
|
if(@bug28261 = f1, '', @bug28261:= f1)
|
||||||
|
2001-01-01
|
||||||
|
2002-02-02
|
||||||
|
2001-01-01
|
||||||
|
2002-02-02
|
||||||
|
select if(@bug28261 = f1, '', @bug28261:= f1) from t1;
|
||||||
|
if(@bug28261 = f1, '', @bug28261:= f1)
|
||||||
|
2001-01-01
|
||||||
|
2002-02-02
|
||||||
|
2001-01-01
|
||||||
|
2002-02-02
|
||||||
|
drop table t1;
|
||||||
|
@ -234,3 +234,15 @@ create table t1 (f1 date);
|
|||||||
insert into t1 values (curdate());
|
insert into t1 values (curdate());
|
||||||
select left(f1,10) = curdate() from t1;
|
select left(f1,10) = curdate() from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#28261: Wrong DATETIME comparison result when the GET_USER_VAR function
|
||||||
|
# is involved.
|
||||||
|
#
|
||||||
|
create table t1(f1 date);
|
||||||
|
insert into t1 values('01-01-01'),('02-02-02'),('01-01-01'),('02-02-02');
|
||||||
|
set @bug28261='';
|
||||||
|
select if(@bug28261 = f1, '', @bug28261:= f1) from t1;
|
||||||
|
select if(@bug28261 = f1, '', @bug28261:= f1) from t1;
|
||||||
|
select if(@bug28261 = f1, '', @bug28261:= f1) from t1;
|
||||||
|
drop table t1;
|
||||||
|
@ -633,7 +633,13 @@ Arg_comparator::can_compare_as_dates(Item *a, Item *b, ulonglong *const_value)
|
|||||||
|
|
||||||
if (cmp_type != CMP_DATE_DFLT)
|
if (cmp_type != CMP_DATE_DFLT)
|
||||||
{
|
{
|
||||||
if (cmp_type != CMP_DATE_WITH_DATE && str_arg->const_item())
|
/*
|
||||||
|
Do not cache GET_USER_VAR() function as its const_item() may return TRUE
|
||||||
|
for the current thread but it still may change during the execution.
|
||||||
|
*/
|
||||||
|
if (cmp_type != CMP_DATE_WITH_DATE && str_arg->const_item() &&
|
||||||
|
(str_arg->type() != Item::FUNC_ITEM ||
|
||||||
|
((Item_func*)str_arg)->functype() != Item_func::GUSERVAR_FUNC))
|
||||||
{
|
{
|
||||||
THD *thd= current_thd;
|
THD *thd= current_thd;
|
||||||
ulonglong value;
|
ulonglong value;
|
||||||
@ -780,7 +786,12 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg,
|
|||||||
MYSQL_TYPE_DATE ? MYSQL_TIMESTAMP_DATE : MYSQL_TIMESTAMP_DATETIME;
|
MYSQL_TYPE_DATE ? MYSQL_TIMESTAMP_DATE : MYSQL_TIMESTAMP_DATETIME;
|
||||||
value= get_date_from_str(thd, str, t_type, warn_item->name, &error);
|
value= get_date_from_str(thd, str, t_type, warn_item->name, &error);
|
||||||
}
|
}
|
||||||
if (item->const_item() && cache_arg)
|
/*
|
||||||
|
Do not cache GET_USER_VAR() function as its const_item() may return TRUE
|
||||||
|
for the current thread but it still may change during the execution.
|
||||||
|
*/
|
||||||
|
if (item->const_item() && cache_arg && (item->type() != Item::FUNC_ITEM ||
|
||||||
|
((Item_func*)item)->functype() != Item_func::GUSERVAR_FUNC))
|
||||||
{
|
{
|
||||||
Item_cache_int *cache= new Item_cache_int();
|
Item_cache_int *cache= new Item_cache_int();
|
||||||
/* Mark the cache as non-const to prevent re-caching. */
|
/* Mark the cache as non-const to prevent re-caching. */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user