74 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			74 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test of handling time zone with leap seconds.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# This test should be run with TZ=:$MYSQL_TEST_DIR/std_data/Moscow_leap
							 | 
						||
| 
								 | 
							
								# This implies that this test should be run only on systems that interpret 
							 | 
						||
| 
								 | 
							
								# characters after colon in TZ variable as path to zoneinfo file.
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Check that we have successfully set time zone with leap seconds.
							 | 
						||
| 
								 | 
							
								--require r/have_moscow_leap_timezone.require
							 | 
						||
| 
								 | 
							
								disable_query_log;
							 | 
						||
| 
								 | 
							
								select from_unixtime(1072904422);
							 | 
						||
| 
								 | 
							
								enable_query_log;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# Initial clean-up
							 | 
						||
| 
								 | 
							
								--disable_warnings
							 | 
						||
| 
								 | 
							
								drop table if exists t1;
							 | 
						||
| 
								 | 
							
								--enable_warnings
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Let us check behavior of conversion from broken-down representation
							 | 
						||
| 
								 | 
							
								# to time_t representation, for normal, non-existent and ambigious dates
							 | 
						||
| 
								 | 
							
								# (This check is similar to the one in timezone2.test in 4.1)
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 (i int, c varchar(20));
							 | 
						||
| 
								 | 
							
								# Normal value without DST
							 | 
						||
| 
								 | 
							
								insert into t1 values
							 | 
						||
| 
								 | 
							
								  (unix_timestamp("2004-01-01 00:00:00"), "2004-01-01 00:00:00");
							 | 
						||
| 
								 | 
							
								# Values around and in spring time-gap
							 | 
						||
| 
								 | 
							
								insert into t1 values
							 | 
						||
| 
								 | 
							
								  (unix_timestamp("2004-03-28 01:59:59"), "2004-03-28 01:59:59"),
							 | 
						||
| 
								 | 
							
								  (unix_timestamp("2004-03-28 02:30:00"), "2004-03-28 02:30:00"),
							 | 
						||
| 
								 | 
							
								  (unix_timestamp("2004-03-28 03:00:00"), "2004-03-28 03:00:00");
							 | 
						||
| 
								 | 
							
								# Normal value with DST
							 | 
						||
| 
								 | 
							
								insert into t1 values
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('2004-05-01 00:00:00'),'2004-05-01 00:00:00');
							 | 
						||
| 
								 | 
							
								# Ambiguos values (also check for determenism)
							 | 
						||
| 
								 | 
							
								insert into t1 values
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('2004-10-31 01:00:00'),'2004-10-31 01:00:00'),
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('2004-10-31 02:00:00'),'2004-10-31 02:00:00'),
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('2004-10-31 02:59:59'),'2004-10-31 02:59:59'),
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('2004-10-31 04:00:00'),'2004-10-31 04:00:00'),
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('2004-10-31 02:59:59'),'2004-10-31 02:59:59');
							 | 
						||
| 
								 | 
							
								# Test of leap
							 | 
						||
| 
								 | 
							
								insert into t1 values
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('1981-07-01 03:59:59'),'1981-07-01 03:59:59'),
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('1981-07-01 04:00:00'),'1981-07-01 04:00:00');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								insert into t1 values
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('2009-01-01 02:59:59'),'2009-01-01 02:59:59'),
							 | 
						||
| 
								 | 
							
								  (unix_timestamp('2009-01-01 03:00:00'),'2009-01-01 03:00:00');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								select i, from_unixtime(i), c from t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test for bug #6387 "Queried timestamp values do not match the 
							 | 
						||
| 
								 | 
							
								# inserted". my_gmt_sec() function was not working properly if we
							 | 
						||
| 
								 | 
							
								# had time zone with leap seconds 
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								create table t1 (ts timestamp);
							 | 
						||
| 
								 | 
							
								insert into t1 values (19730101235900), (20040101235900);
							 | 
						||
| 
								 | 
							
								select * from t1;
							 | 
						||
| 
								 | 
							
								drop table t1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								# Test Bug #39920: MySQL cannot deal with Leap Second expression in string
							 | 
						||
| 
								 | 
							
								# literal
							 | 
						||
| 
								 | 
							
								#
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# 2009-01-01 02:59:59, 2009-01-01 02:59:60 and 2009-01-01 03:00:00
							 | 
						||
| 
								 | 
							
								SELECT FROM_UNIXTIME(1230768022), FROM_UNIXTIME(1230768023), FROM_UNIXTIME(1230768024);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# End of 4.1 tests
							 |