summaryrefslogtreecommitdiff
path: root/mysql-test/t/type_date.test
diff options
context:
space:
mode:
authorMartin Hansson <martin.hansson@sun.com>2010-03-16 10:20:07 +0100
committerMartin Hansson <martin.hansson@sun.com>2010-03-16 10:20:07 +0100
commit0ed46845479e5d1f995ee6c16cdad7dd4cb43317 (patch)
treeb9e07ec4f746b3b7eb0e0308b3173625a842a1e7 /mysql-test/t/type_date.test
parent9fc32c2e2441d254ec21d5b0541e468f9d9dd149 (diff)
downloadmariadb-git-0ed46845479e5d1f995ee6c16cdad7dd4cb43317.tar.gz
Bug#50918: Date columns treated differently in Views than in
Base Tables The type inferrence of a view column caused the result to be interpreted as the wrong type: DATE colums were interpreted as TIME and TIME as DATETIME. This happened because view columns are represented by Item_ref objects as opposed to Item_field's. Item_ref had no method for retrieving a TIME value and thus was forced to depend on the default implementation for any expression, which caused the expression to be evaluated as a string and then parsed into a TIME/DATETIME value. Fixed by letting Item_ref classes forward the request for a TIME value to the referred Item - which is a field in this case - this reads the TIME value directly without conversion.
Diffstat (limited to 'mysql-test/t/type_date.test')
-rw-r--r--mysql-test/t/type_date.test20
1 files changed, 20 insertions, 0 deletions
diff --git a/mysql-test/t/type_date.test b/mysql-test/t/type_date.test
index aec60bc2dee..899f912a5a5 100644
--- a/mysql-test/t/type_date.test
+++ b/mysql-test/t/type_date.test
@@ -246,4 +246,24 @@ insert into t1 values ('0000-01-01'), ('0000-00-01'), ('0001-01-01');
select * from t1 where a between '0000-00-01' and '0000-00-02';
drop table t1;
+--echo #
+--echo # Bug#50918: Date columns treated differently in Views than in Base
+--echo # Tables
+--echo #
+CREATE TABLE t1 ( the_date DATE, the_time TIME );
+INSERT INTO t1 VALUES ( '2010-01-01', '01:01:01' );
+
+SELECT * FROM t1 t11 JOIN t1 t12 ON addtime( t11.the_date, t11.the_time ) =
+ addtime( t12.the_date, t12.the_time );
+
+CREATE VIEW v1 AS SELECT * FROM t1;
+SELECT * FROM t1 JOIN v1 ON addtime( t1.the_date, t1.the_time ) =
+ addtime( v1.the_date, v1.the_time );
+
+SELECT * FROM t1 JOIN v1 ON addtime( t1.the_date, t1.the_time ) =
+ addtime( cast(v1.the_date AS DATETIME), v1.the_time );
+
+DROP TABLE t1;
+DROP VIEW v1;
+
--echo End of 5.1 tests