mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
Bug#42664: Sign ignored for TIME types when not comparing as longlong
Another code-path dropped sign of TIME, presuming all time is positive. Minds sign now. Patch depends on ChangeSet for 42661.
This commit is contained in:
parent
491b8fc755
commit
948bb3e6dc
3 changed files with 47 additions and 2 deletions
|
@ -85,6 +85,7 @@ sec_to_time(time_to_sec(t))
|
|||
13:00:00
|
||||
09:00:00
|
||||
drop table t1;
|
||||
End of 4.1 tests
|
||||
select cast('100:55:50' as time) < cast('24:00:00' as time);
|
||||
cast('100:55:50' as time) < cast('24:00:00' as time)
|
||||
0
|
||||
|
@ -138,3 +139,27 @@ CAST(c AS TIME)
|
|||
00:00:00
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
CREATE TABLE t1 (f1 TIME);
|
||||
INSERT INTO t1 VALUES ('24:00:00');
|
||||
SELECT '24:00:00' = (SELECT f1 FROM t1);
|
||||
'24:00:00' = (SELECT f1 FROM t1)
|
||||
1
|
||||
SELECT CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1);
|
||||
CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1)
|
||||
1
|
||||
SELECT CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1);
|
||||
CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1)
|
||||
0
|
||||
TRUNCATE t1;
|
||||
INSERT INTO t1 VALUES ('-24:00:00');
|
||||
SELECT CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1);
|
||||
CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1)
|
||||
0
|
||||
SELECT CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1);
|
||||
CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1)
|
||||
1
|
||||
SELECT '-24:00:00' = (SELECT f1 FROM t1);
|
||||
'-24:00:00' = (SELECT f1 FROM t1)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
End of 6.0 tests
|
||||
|
|
|
@ -39,7 +39,7 @@ drop table t1;
|
|||
# SELECT CAST(0.2359591234567e+30 AS TIME);
|
||||
# ##########################################################
|
||||
|
||||
# End of 4.1 tests
|
||||
--echo End of 4.1 tests
|
||||
|
||||
#
|
||||
# Bug#29555: Comparing time values as strings may lead to a wrong result.
|
||||
|
@ -90,3 +90,22 @@ DROP TABLE t1;
|
|||
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
||||
#
|
||||
# Bug#42664 - Sign ignored for TIME types when not comparing as longlong
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (f1 TIME);
|
||||
INSERT INTO t1 VALUES ('24:00:00');
|
||||
SELECT '24:00:00' = (SELECT f1 FROM t1);
|
||||
SELECT CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1);
|
||||
SELECT CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1);
|
||||
TRUNCATE t1;
|
||||
INSERT INTO t1 VALUES ('-24:00:00');
|
||||
SELECT CAST('24:00:00' AS TIME) = (SELECT f1 FROM t1);
|
||||
SELECT CAST('-24:00:00' AS TIME) = (SELECT f1 FROM t1);
|
||||
SELECT '-24:00:00' = (SELECT f1 FROM t1);
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 6.0 tests
|
||||
|
|
|
@ -829,7 +829,8 @@ get_time_value(THD *thd, Item ***item_arg, Item **cache_arg,
|
|||
else
|
||||
{
|
||||
*is_null= item->get_time(<ime);
|
||||
value= !*is_null ? (longlong) TIME_to_ulonglong_datetime(<ime) : 0;
|
||||
value= !*is_null ? (longlong) TIME_to_ulonglong_datetime(<ime) *
|
||||
(ltime.neg ? -1 : 1) : 0;
|
||||
}
|
||||
/*
|
||||
Do not cache GET_USER_VAR() function as its const_item() may return TRUE
|
||||
|
|
Loading…
Reference in a new issue