summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatiana A. Nurnberg <azundris@mysql.com>2009-02-09 06:21:48 +0100
committerTatiana A. Nurnberg <azundris@mysql.com>2009-02-09 06:21:48 +0100
commita91607769ab8d54cbc7bc99d3b0e8d56ed85ed80 (patch)
tree0022093157a305315103f79427db0df199ff166b
parent6c6fc0978e0123d515bf95059028ebdb9afd75f8 (diff)
downloadmariadb-git-a91607769ab8d54cbc7bc99d3b0e8d56ed85ed80.tar.gz
Bug#42661: sec_to_time() and signedness
Bug#42662: maketime() and signedness Item_time_typecast::val_int() dropped sign from MYSQL_TIME gotten using from get_time(). Propagates sign now. mysql-test/r/func_sapdb.result: Show that comparisons with TIME(-...) work now. mysql-test/t/func_sapdb.test: Show that comparisons with TIME(-...) work now. sql/item_timefunc.cc: don't drop sign when converting from MYSQL_TIME
-rw-r--r--mysql-test/r/func_sapdb.result30
-rw-r--r--mysql-test/t/func_sapdb.test20
-rw-r--r--sql/item_timefunc.cc5
3 files changed, 53 insertions, 2 deletions
diff --git a/mysql-test/r/func_sapdb.result b/mysql-test/r/func_sapdb.result
index 3a8515c8831..516d1df1abc 100644
--- a/mysql-test/r/func_sapdb.result
+++ b/mysql-test/r/func_sapdb.result
@@ -282,3 +282,33 @@ 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
+SELECT sec_to_time(3020399)=time('838:59:59');
+sec_to_time(3020399)=time('838:59:59')
+1
+SELECT sec_to_time(-3020399)=time('-838:59:59');
+sec_to_time(-3020399)=time('-838:59:59')
+1
+SELECT sec_to_time(-3020399)='-838:59:59';
+sec_to_time(-3020399)='-838:59:59'
+1
+SELECT time(sec_to_time(-3020399))=time('-838:59:59');
+time(sec_to_time(-3020399))=time('-838:59:59')
+1
+SELECT time(sec_to_time(-3020399))=time('-838:59:58');
+time(sec_to_time(-3020399))=time('-838:59:58')
+0
+SELECT maketime(-1,0,1)='-01:00:01';
+maketime(-1,0,1)='-01:00:01'
+1
+SELECT TIME(maketime(-1,0,1))=TIME('-01:00:01');
+TIME(maketime(-1,0,1))=TIME('-01:00:01')
+1
+SELECT maketime(-1,0,1)=TIME('-01:00:01');
+maketime(-1,0,1)=TIME('-01:00:01')
+1
+SELECT maketime(1,0,1)=TIME('01:00:01');
+maketime(1,0,1)=TIME('01:00:01')
+1
+SELECT maketime(1,0,1)=TIME('01:00:02');
+maketime(1,0,1)=TIME('01:00:02')
+0
diff --git a/mysql-test/t/func_sapdb.test b/mysql-test/t/func_sapdb.test
index 1292c475732..6fed52e1b84 100644
--- a/mysql-test/t/func_sapdb.test
+++ b/mysql-test/t/func_sapdb.test
@@ -169,4 +169,24 @@ 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')),
TIMEDIFF(TIME('17:00:00'),TIME('17:59:00'));
+#
+# Bug#42661 - sec_to_time() and signedness
+#
+
+SELECT sec_to_time(3020399)=time('838:59:59');
+SELECT sec_to_time(-3020399)=time('-838:59:59');
+SELECT sec_to_time(-3020399)='-838:59:59';
+SELECT time(sec_to_time(-3020399))=time('-838:59:59');
+SELECT time(sec_to_time(-3020399))=time('-838:59:58');
+
+#
+# Bug#42662 - maketime() and signedness
+#
+
+SELECT maketime(-1,0,1)='-01:00:01';
+SELECT TIME(maketime(-1,0,1))=TIME('-01:00:01');
+SELECT maketime(-1,0,1)=TIME('-01:00:01');
+SELECT maketime(1,0,1)=TIME('01:00:01');
+SELECT maketime(1,0,1)=TIME('01:00:02');
+
# End of 5.0 tests
diff --git a/sql/item_timefunc.cc b/sql/item_timefunc.cc
index 38d9d62bd99..6a48c13f2e1 100644
--- a/sql/item_timefunc.cc
+++ b/sql/item_timefunc.cc
@@ -1730,7 +1730,7 @@ longlong Item_func_sec_to_time::val_int()
sec_to_time(arg_val, args[0]->unsigned_flag, &ltime);
return (ltime.neg ? -1 : 1) *
- ((ltime.hour)*10000 + ltime.minute*100 + ltime.second);
+ (longlong) ((ltime.hour)*10000 + ltime.minute*100 + ltime.second);
}
@@ -2648,7 +2648,8 @@ longlong Item_time_typecast::val_int()
null_value= 1;
return 0;
}
- return ltime.hour * 10000L + ltime.minute * 100 + ltime.second;
+ return (ltime.neg ? -1 : 1) *
+ (longlong) ((ltime.hour)*10000 + ltime.minute*100 + ltime.second);
}
String *Item_time_typecast::val_str(String *str)