List:Commits« Previous MessageNext Message »
From:Magne Mahre Date:November 4 2009 10:29am
Subject:bzr push into mysql-5.5-next-mr-runtime branch (magne.mahre:2907 to
2908) Bug#42664
View as plain text  
 2908 Magne Mahre	2009-11-04
      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.
     @ mysql-test/r/type_time.result
        Show we now no longer ignore sign of TIME-type
        in this code-path.
     @ mysql-test/t/type_time.test
        Show we now no longer ignore sign of TIME-type
        in this code-path.
     @ sql/item_cmpfunc.cc
        TIME_to_ulonglong() (somewhat obviously) loses sign
        of its argument, so we put it back in where needed.

    modified:
      mysql-test/r/type_time.result
      mysql-test/t/type_time.test
      sql/item_cmpfunc.cc
 2907 Magne Mahre	2009-11-04 [merge]
      Backport to 5.6.0

    modified:
      mysql-test/r/func_sapdb.result
      mysql-test/t/func_sapdb.test
=== modified file 'mysql-test/r/type_time.result'
--- a/mysql-test/r/type_time.result	2009-05-15 08:42:57 +0000
+++ b/mysql-test/r/type_time.result	2009-11-04 10:28:50 +0000
@@ -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

=== modified file 'mysql-test/t/type_time.test'
--- a/mysql-test/t/type_time.test	2009-05-15 08:16:00 +0000
+++ b/mysql-test/t/type_time.test	2009-11-04 10:28:50 +0000
@@ -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

=== modified file 'sql/item_cmpfunc.cc'
--- a/sql/item_cmpfunc.cc	2009-10-05 05:27:36 +0000
+++ b/sql/item_cmpfunc.cc	2009-11-04 10:28:50 +0000
@@ -829,7 +829,8 @@ get_time_value(THD *thd, Item ***item_ar
   else
   {
     *is_null= item->get_time(&ltime);
-    value= !*is_null ? (longlong) TIME_to_ulonglong_datetime(&ltime) : 0;
+    value= !*is_null ? (longlong) TIME_to_ulonglong_datetime(&ltime) *
+                                  (ltime.neg ? -1 : 1) : 0;
   }
   /*
     Do not cache GET_USER_VAR() function as its const_item() may return TRUE


Attachment: [text/bzr-bundle] bzr/magne.mahre@sun.com-20091104102850-nu1mrtf8refw3whb.bundle
Thread
bzr push into mysql-5.5-next-mr-runtime branch (magne.mahre:2907 to2908) Bug#42664Magne Mahre4 Nov