summaryrefslogtreecommitdiff
path: root/mysql-test/r/func_date_add.result
diff options
context:
space:
mode:
authorevgen@moonbone.local <>2007-05-30 00:33:12 +0400
committerevgen@moonbone.local <>2007-05-30 00:33:12 +0400
commit268fdf5db3c5af670ab6a3dfa20d3358eb5a33bf (patch)
tree2a285537f94bf2e50cec27b3b7e7fc668356eede /mysql-test/r/func_date_add.result
parent48fe2802718114603de9a21dba6004bcf9cd777f (diff)
downloadmariadb-git-268fdf5db3c5af670ab6a3dfa20d3358eb5a33bf.tar.gz
Bug#28450: The Item_date_add_interval in select list may fail the field
type assertion. The bug was introduced by the patch for bug #16377. The "+ INTERVAL" (Item_date_add_interval) function detects its result type by the type of its first argument. But in some cases it returns STRING as the result type. This happens when, for example, the first argument is a DATE represented as string. All this makes the get_datetime_value() function misinterpret such result and return wrong DATE/DATETIME value. To avoid such cases in the fix for #16377 the code that detects correct result field type on the first execution was added to the Item_date_add_interval::get_date() function. Due to this the result field type of the Item_date_add_interval item stored by the send_fields() function differs from item's result field type at the moment when the item is actually sent. It causes an assertion failure. Now the get_datetime_value() detects that the DATE value is returned by some item not only by checking the result field type but also by comparing the returned value with the 100000000L constant - any DATE value should be less than this value. Removed result field type adjusting code from the Item_date_add_interval::get_date() function.
Diffstat (limited to 'mysql-test/r/func_date_add.result')
-rw-r--r--mysql-test/r/func_date_add.result11
1 files changed, 11 insertions, 0 deletions
diff --git a/mysql-test/r/func_date_add.result b/mysql-test/r/func_date_add.result
index ac5709260fd..a7f2383848d 100644
--- a/mysql-test/r/func_date_add.result
+++ b/mysql-test/r/func_date_add.result
@@ -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