mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
ef55f2dcdb
Moved all range checks for TIMESTAMP value to my_gmt_sec(). Also fixed check of upper boundary of TIMESTAMP range (which also now will catch datetime values which are too small for TIMESTAMP in case if time_t is unsigned). mysql-test/r/timezone.result: Added test which checks if TIMESTAMP range is checked correctly (current time zone is honoured and both upper and lower bounds of TIMESTAMP range are checked). mysql-test/t/timezone.test: Added test which checks if TIMESTAMP range is checked correctly (current time zone is honoured and both upper and lower bounds of TIMESTAMP range are checked). sql/field.cc: Check if datetime value is in TIMESTAMP range has moved to my_gmt_sec() function. sql/mysql_priv.h: Added more constants for checking if datetime is in allowed range for TIMESTAMP. sql/time.cc: Check if datetime value is in TIMESTAMP range has moved to my_gmt_sec() function. Fixed check of its return value to catch overflows in both directions and also overflows in case of unsigned time_t.
40 lines
1.6 KiB
Text
40 lines
1.6 KiB
Text
DROP TABLE IF EXISTS t1;
|
|
show variables like "timezone";
|
|
Variable_name Value
|
|
timezone MET
|
|
select @a:=FROM_UNIXTIME(1);
|
|
@a:=FROM_UNIXTIME(1)
|
|
1970-01-01 01:00:01
|
|
select unix_timestamp(@a);
|
|
unix_timestamp(@a)
|
|
1
|
|
CREATE TABLE t1 (ts int);
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 01:00'));
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 02:00'));
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 03:00'));
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 02:00'));
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 01:00'));
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2002-10-27 02:00'));
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2003-03-30 02:59:59'));
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2003-03-30 03:00:00'));
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2003-03-30 03:59:59'));
|
|
INSERT INTO t1 (ts) VALUES (Unix_timestamp('2003-03-30 04:00:01'));
|
|
SELECT ts,from_unixtime(ts) FROM t1;
|
|
ts from_unixtime(ts)
|
|
1035673200 2002-10-27 01:00:00
|
|
1035680400 2002-10-27 02:00:00
|
|
1035684000 2002-10-27 03:00:00
|
|
1035680400 2002-10-27 02:00:00
|
|
1035673200 2002-10-27 01:00:00
|
|
1035680400 2002-10-27 02:00:00
|
|
1048986000 2003-03-30 03:00:00
|
|
1048986000 2003-03-30 03:00:00
|
|
1048989599 2003-03-30 03:59:59
|
|
1048989601 2003-03-30 04:00:01
|
|
DROP TABLE t1;
|
|
select unix_timestamp('1970-01-01 01:00:00'),
|
|
unix_timestamp('1970-01-01 01:00:01'),
|
|
unix_timestamp('2038-01-01 00:59:59'),
|
|
unix_timestamp('2038-01-01 01:00:00');
|
|
unix_timestamp('1970-01-01 01:00:00') unix_timestamp('1970-01-01 01:00:01') unix_timestamp('2038-01-01 00:59:59') unix_timestamp('2038-01-01 01:00:00')
|
|
0 1 2145916799 0
|