Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt
into magare.gmz:/home/kgeorge/mysql/autopush/B28605-5.0-opt
This commit is contained in:
commit
5462e46bf5
@ -84,4 +84,15 @@ CAST('2006-09-26' AS DATE) + INTERVAL 1 YEAR
|
|||||||
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK;
|
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK;
|
||||||
CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK
|
CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK
|
||||||
2006-10-03
|
2006-10-03
|
||||||
|
create table t1 (a int, b varchar(10));
|
||||||
|
insert into t1 values (1, '2001-01-01'),(2, '2002-02-02');
|
||||||
|
select '2007-01-01' + interval a day from t1;
|
||||||
|
'2007-01-01' + interval a day
|
||||||
|
2007-01-02
|
||||||
|
2007-01-03
|
||||||
|
select b + interval a day from t1;
|
||||||
|
b + interval a day
|
||||||
|
2001-01-02
|
||||||
|
2002-02-04
|
||||||
|
drop table t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -77,4 +77,14 @@ SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 MONTH;
|
|||||||
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 YEAR;
|
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 YEAR;
|
||||||
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK;
|
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#28450: The Item_date_add_interval in select list may fail the field
|
||||||
|
# type assertion.
|
||||||
|
#
|
||||||
|
create table t1 (a int, b varchar(10));
|
||||||
|
insert into t1 values (1, '2001-01-01'),(2, '2002-02-02');
|
||||||
|
select '2007-01-01' + interval a day from t1;
|
||||||
|
select b + interval a day from t1;
|
||||||
|
drop table t1;
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@ -766,7 +766,12 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg,
|
|||||||
{
|
{
|
||||||
value= item->val_int();
|
value= item->val_int();
|
||||||
*is_null= item->null_value;
|
*is_null= item->null_value;
|
||||||
if (item->field_type() == MYSQL_TYPE_DATE)
|
/*
|
||||||
|
Item_date_add_interval may return MYSQL_TYPE_STRING as the result
|
||||||
|
field type. To detect that the DATE value has been returned we
|
||||||
|
compare it with 1000000L - any DATE value should be less than it.
|
||||||
|
*/
|
||||||
|
if (item->field_type() == MYSQL_TYPE_DATE || value < 100000000L)
|
||||||
value*= 1000000L;
|
value*= 1000000L;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2180,27 +2180,6 @@ bool Item_date_add_interval::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
|
|||||||
default:
|
default:
|
||||||
goto null_date;
|
goto null_date;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Adjust cached_field_type according to the detected type. */
|
|
||||||
if (cached_field_type == MYSQL_TYPE_STRING)
|
|
||||||
{
|
|
||||||
switch (ltime->time_type)
|
|
||||||
{
|
|
||||||
case MYSQL_TIMESTAMP_DATE:
|
|
||||||
cached_field_type= MYSQL_TYPE_DATE;
|
|
||||||
break;
|
|
||||||
case MYSQL_TIMESTAMP_DATETIME:
|
|
||||||
cached_field_type= MYSQL_TYPE_DATETIME;
|
|
||||||
break;
|
|
||||||
case MYSQL_TIMESTAMP_TIME:
|
|
||||||
cached_field_type= MYSQL_TYPE_TIME;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
/* Shouldn't get here. */
|
|
||||||
DBUG_ASSERT(0);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0; // Ok
|
return 0; // Ok
|
||||||
|
|
||||||
invalid_date:
|
invalid_date:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user