mirror of
https://github.com/MariaDB/server.git
synced 2025-01-30 02:30:06 +01:00
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
4 changed files with 27 additions and 22 deletions
|
@ -84,4 +84,15 @@ CAST('2006-09-26' AS DATE) + INTERVAL 1 YEAR
|
|||
SELECT CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK;
|
||||
CAST('2006-09-26' AS DATE) + INTERVAL 1 WEEK
|
||||
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
|
||||
|
|
|
@ -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 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
|
||||
|
|
|
@ -766,7 +766,12 @@ get_datetime_value(THD *thd, Item ***item_arg, Item **cache_arg,
|
|||
{
|
||||
value= item->val_int();
|
||||
*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;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -2180,27 +2180,6 @@ bool Item_date_add_interval::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
|
|||
default:
|
||||
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
|
||||
|
||||
invalid_date:
|
||||
|
|
Loading…
Add table
Reference in a new issue