#At file:///misc/mysql/forest/42525/50-42525/ based on revid:azundris@stripped
2736 Tatiana A. Nurnberg 2009-02-06
Bug#42525: TIMEDIFF function
In 37553 we declared longlong results for
class Item_str_timefunc as per comments/docs,
but didn't add a method for that. And the
default just wasn't good enough for some
cases.
Changeset adds dedicated val_int() to class.
modified:
mysql-test/r/func_sapdb.result
mysql-test/t/func_sapdb.test
sql/item_timefunc.h
per-file messages:
mysql-test/r/func_sapdb.result
More tests for casts of TIME() / TIMEDIFF() with negative results.
mysql-test/t/func_sapdb.test
More tests for casts of TIME() / TIMEDIFF() with negative results.
sql/item_timefunc.h
Since we claim to provide longlong results, we should have
a suitable function to provide them (the default won't do).
This one matches the val_real() variant.
=== modified file 'mysql-test/r/func_sapdb.result'
--- a/mysql-test/r/func_sapdb.result 2008-11-26 08:28:17 +0000
+++ b/mysql-test/r/func_sapdb.result 2009-02-06 17:25:08 +0000
@@ -268,3 +268,17 @@ timediff('2008-09-29 20:10:10','2008-09-
SELECT CAST(time('-73:42:12') AS DECIMAL);
CAST(time('-73:42:12') AS DECIMAL)
-734212
+SELECT TIMEDIFF(TIME('17:00:00'),TIME('17:00:00'))=TIME('00:00:00') AS 1Eq,
+TIMEDIFF(TIME('17:59:00'),TIME('17:00:00'))=TIME('00:00:00') AS 1NEq1,
+TIMEDIFF(TIME('18:00:00'),TIME('17:00:00'))=TIME('00:00:00') AS 1NEq2,
+TIMEDIFF(TIME('17:00:00'),TIME('17:00:00'))= '00:00:00' AS 2Eq,
+TIMEDIFF(TIME('17:59:00'),TIME('17:00:00'))= '00:00:00' AS 2NEq1,
+TIMEDIFF(TIME('18:00:00'),TIME('17:00:00'))= '00:00:00' AS 2NEq2,
+TIMEDIFF(TIME('17:00:00'),TIME('17:00:00'))=TIME(0) AS 3Eq,
+TIMEDIFF(TIME('17:59:00'),TIME('17:00:00'))=TIME(0) AS 3NEq1,
+TIMEDIFF(TIME('18:00:00'),TIME('17:00:00'))=TIME(0) AS 3NEq2,
+TIME(0) AS Time0, TIME('00:00:00') AS Time00, '00:00:00' AS Literal0000,
+TIMEDIFF(TIME('17:59:00'),TIME('17:00:00')),
+TIMEDIFF(TIME('17:00:00'),TIME('17:59:00'));
+1Eq 1NEq1 1NEq2 2Eq 2NEq1 2NEq2 3Eq 3NEq1 3NEq2 Time0 Time00 Literal0000 TIMEDIFF(TIME('17:59:00'),TIME('17:00:00')) TIMEDIFF(TIME('17:00:00'),TIME('17:59:00'))
+1 0 0 1 0 0 1 0 0 00:00:00 00:00:00 00:00:00 00:59:00 -00:59:00
=== modified file 'mysql-test/t/func_sapdb.test'
--- a/mysql-test/t/func_sapdb.test 2008-11-26 08:28:17 +0000
+++ b/mysql-test/t/func_sapdb.test 2009-02-06 17:25:08 +0000
@@ -151,4 +151,22 @@ select timediff('2008-09-29 20:10:10','2
SELECT CAST(time('-73:42:12') AS DECIMAL);
+
+#
+# Bug#42525 - TIMEDIFF function
+#
+
+SELECT TIMEDIFF(TIME('17:00:00'),TIME('17:00:00'))=TIME('00:00:00') AS 1Eq,
+ TIMEDIFF(TIME('17:59:00'),TIME('17:00:00'))=TIME('00:00:00') AS 1NEq1,
+ TIMEDIFF(TIME('18:00:00'),TIME('17:00:00'))=TIME('00:00:00') AS 1NEq2,
+ TIMEDIFF(TIME('17:00:00'),TIME('17:00:00'))= '00:00:00' AS 2Eq,
+ TIMEDIFF(TIME('17:59:00'),TIME('17:00:00'))= '00:00:00' AS 2NEq1,
+ TIMEDIFF(TIME('18:00:00'),TIME('17:00:00'))= '00:00:00' AS 2NEq2,
+ TIMEDIFF(TIME('17:00:00'),TIME('17:00:00'))=TIME(0) AS 3Eq,
+ TIMEDIFF(TIME('17:59:00'),TIME('17:00:00'))=TIME(0) AS 3NEq1,
+ TIMEDIFF(TIME('18:00:00'),TIME('17:00:00'))=TIME(0) AS 3NEq2,
+ TIME(0) AS Time0, TIME('00:00:00') AS Time00, '00:00:00' AS Literal0000,
+ TIMEDIFF(TIME('17:59:00'),TIME('17:00:00')),
+ TIMEDIFF(TIME('17:00:00'),TIME('17:59:00'));
+
# End of 5.0 tests
=== modified file 'sql/item_timefunc.h'
--- a/sql/item_timefunc.h 2008-12-23 14:08:04 +0000
+++ b/sql/item_timefunc.h 2009-02-06 17:25:08 +0000
@@ -398,6 +398,7 @@ public:
{
return save_time_in_field(field);
}
+ longlong val_int() { return val_int_from_decimal(); }
bool result_as_longlong() { return TRUE; }
};
| Thread |
|---|
| • bzr commit into mysql-5.0-bugteam branch (azundris:2736) Bug#42525 | Tatiana A. Nurnberg | 6 Feb |