diff options
author | Martin Hansson <martin.hansson@sun.com> | 2010-03-16 10:20:07 +0100 |
---|---|---|
committer | Martin Hansson <martin.hansson@sun.com> | 2010-03-16 10:20:07 +0100 |
commit | 0ed46845479e5d1f995ee6c16cdad7dd4cb43317 (patch) | |
tree | b9e07ec4f746b3b7eb0e0308b3173625a842a1e7 /mysql-test/t/type_date.test | |
parent | 9fc32c2e2441d254ec21d5b0541e468f9d9dd149 (diff) | |
download | mariadb-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.test | 20 |
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 |