mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
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
This commit is contained in:
parent
6c6fc0978e
commit
a91607769a
3 changed files with 53 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1730,7 +1730,7 @@ longlong Item_func_sec_to_time::val_int()
|
|||
sec_to_time(arg_val, args[0]->unsigned_flag, <ime);
|
||||
|
||||
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)
|
||||
|
|
Loading…
Add table
Reference in a new issue