mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
af9f7a239e
MySQL replicates the time zone only when operations that involve it are performed. This is controlled by a flag. But this flag is set only on successful operation. The flag must be set also when there is an error that involves a timezone (so the master would replicate the error to the slaves). mysql-test/suite/rpl/r/rpl_timezone.result: repush of Bug 29536 for 5.1.22 tree: test case mysql-test/suite/rpl/t/rpl_timezone.test: repush of Bug 29536 for 5.1.22 tree: test case sql/field.cc: re-push of Bug 29536 for 5.1.22: move setting of the flag before the operation (so it apples to errors as well). sql/time.cc: re-push of Bug 29536 for 5.1.22: move setting of the flag before the operation (so it apples to errors as well).
125 lines
3.3 KiB
Text
125 lines
3.3 KiB
Text
stop slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
reset master;
|
|
reset slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
start slave;
|
|
set @my_time_zone= @@global.time_zone;
|
|
set timestamp=100000000;
|
|
create table t1 (t timestamp, n int not null auto_increment, PRIMARY KEY(n));
|
|
create table t2 (t char(32), n int not null auto_increment, PRIMARY KEY(n));
|
|
select @@time_zone;
|
|
@@time_zone
|
|
Japan
|
|
select @@time_zone;
|
|
@@time_zone
|
|
Europe/Moscow
|
|
insert into t1 values ('20050101000000', NULL), ('20050611093902',NULL);
|
|
insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL);
|
|
SELECT * FROM t1 ORDER BY n;
|
|
t n
|
|
2005-01-01 00:00:00 1
|
|
2005-06-11 09:39:02 2
|
|
2004-01-01 00:00:00 3
|
|
2004-06-11 09:39:02 4
|
|
SELECT * FROM t1 ORDER BY n;
|
|
t n
|
|
2005-01-01 06:00:00 1
|
|
2005-06-11 14:39:02 2
|
|
2004-01-01 06:00:00 3
|
|
2004-06-11 14:39:02 4
|
|
delete from t1;
|
|
set time_zone='Europe/Moscow';
|
|
insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL);
|
|
SELECT * FROM t1 ORDER BY n;
|
|
t n
|
|
2004-01-01 00:00:00 5
|
|
2004-06-11 09:39:02 6
|
|
set time_zone='Europe/Moscow';
|
|
SELECT * FROM t1 ORDER BY n;
|
|
t n
|
|
2004-01-01 00:00:00 5
|
|
2004-06-11 09:39:02 6
|
|
delete from t1;
|
|
set time_zone='UTC';
|
|
load data infile '../std_data_ln/rpl_timezone2.dat' into table t1;
|
|
Warnings:
|
|
Warning 1265 Data truncated for column 't' at row 1
|
|
Warning 1261 Row 1 doesn't contain data for all columns
|
|
Warning 1265 Data truncated for column 't' at row 2
|
|
Warning 1261 Row 2 doesn't contain data for all columns
|
|
SELECT * FROM t1 ORDER BY n;
|
|
t n
|
|
0000-00-00 00:00:00 7
|
|
0000-00-00 00:00:00 8
|
|
set time_zone='UTC';
|
|
SELECT * FROM t1 ORDER BY n;
|
|
t n
|
|
0000-00-00 00:00:00 7
|
|
0000-00-00 00:00:00 8
|
|
set time_zone='Europe/Moscow';
|
|
set time_zone='Europe/Moscow';
|
|
delete from t1;
|
|
insert into t1 values ('20040101000000',NULL), ('20040611093902',NULL);
|
|
set time_zone='MET';
|
|
insert into t2 (select * from t1);
|
|
SELECT * FROM t1 ORDER BY n;
|
|
t n
|
|
2003-12-31 22:00:00 9
|
|
2004-06-11 07:39:02 10
|
|
SELECT * FROM t2 ORDER BY n;
|
|
t n
|
|
2003-12-31 22:00:00 9
|
|
2004-06-11 07:39:02 10
|
|
delete from t2;
|
|
set timestamp=1000072000;
|
|
insert into t2 values (current_timestamp,NULL), (current_date,NULL), (current_time,NULL);
|
|
SELECT * FROM t2 ORDER BY n;
|
|
t n
|
|
2001-09-09 23:46:40 11
|
|
2001-09-09 12
|
|
23:46:40 13
|
|
delete from t2;
|
|
insert into t2 values (from_unixtime(1000000000),NULL),
|
|
(unix_timestamp('2001-09-09 03:46:40'),NULL);
|
|
SELECT * FROM t2 ORDER BY n;
|
|
t n
|
|
2001-09-09 03:46:40 14
|
|
1000000000 15
|
|
SELECT * FROM t2 ORDER BY n;
|
|
t n
|
|
2001-09-09 03:46:40 14
|
|
1000000000 15
|
|
set global time_zone='MET';
|
|
delete from t2;
|
|
set time_zone='UTC';
|
|
insert into t2 values(convert_tz('2004-01-01 00:00:00','MET',@@time_zone),NULL);
|
|
insert into t2 values(convert_tz('2005-01-01 00:00:00','MET','Japan'),NULL);
|
|
SELECT * FROM t2 ORDER BY n;
|
|
t n
|
|
2003-12-31 23:00:00 16
|
|
2005-01-01 08:00:00 17
|
|
SELECT * FROM t2 ORDER BY n;
|
|
t n
|
|
2003-12-31 23:00:00 16
|
|
2005-01-01 08:00:00 17
|
|
drop table t1, t2;
|
|
set global time_zone= @my_time_zone;
|
|
End of 4.1 tests
|
|
CREATE TABLE t1 (a INT, b TIMESTAMP);
|
|
INSERT INTO t1 VALUES (1, NOW());
|
|
SET @@session.time_zone='Japan';
|
|
UPDATE t1 SET b= '1970-01-01 08:59:59' WHERE a= 1;
|
|
Warnings:
|
|
Warning 1264 Out of range value for column 'b' at row 1
|
|
SELECT * FROM t1 ORDER BY a;
|
|
a b
|
|
1 0000-00-00 00:00:00
|
|
SET @@session.time_zone='Japan';
|
|
SELECT * FROM t1 ORDER BY a;
|
|
a b
|
|
1 0000-00-00 00:00:00
|
|
SET @@session.time_zone = default;
|
|
DROP TABLE t1;
|
|
SET @@session.time_zone = default;
|
|
End of 5.0 tests
|