mirror of
https://github.com/MariaDB/server.git
synced 2025-01-27 09:14:17 +01:00
7890388d91
$MYSQL_TZINFO_TO_SQL works by truncating tables. Truncation is an operation that cannot be done in-place and therefore is fundamentally incompatible with alter_algorithm='INPLACE'. As a result, we override the default alter_algorithm setting in tztime.cc to alter_algorithm='COPY' so that timezones can be loaded regardless of the previously set alter_algorithm. All new code of the whole pull request, including one or several files that are either new files or modified ones, are contributed under the BSD-new license. I am contributing on behalf of my employer Amazon Web Services, Inc.
487 lines
16 KiB
Text
487 lines
16 KiB
Text
use mysql;
|
|
RENAME TABLE time_zone TO time_zone_orig,
|
|
time_zone_name TO time_zone_name_orig,
|
|
time_zone_transition TO time_zone_transition_orig,
|
|
time_zone_transition_type TO time_zone_transition_type_orig,
|
|
time_zone_leap_second TO time_zone_leap_second_orig;
|
|
CREATE TABLE time_zone LIKE time_zone_orig;
|
|
CREATE TABLE time_zone_name LIKE time_zone_name_orig;
|
|
CREATE TABLE time_zone_transition LIKE time_zone_transition_orig;
|
|
CREATE TABLE time_zone_transition_type LIKE time_zone_transition_type_orig;
|
|
CREATE TABLE time_zone_leap_second LIKE time_zone_leap_second_orig;
|
|
#
|
|
# MDEV-5226 mysql_tzinfo_to_sql errors with tzdata 2013f and above
|
|
#
|
|
# Verbose run
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_name ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
|
|
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
|
SET session alter_algorithm='COPY';
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
START TRANSACTION;
|
|
ELSE
|
|
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
|
SET session alter_algorithm='COPY';
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
END IF|
|
|
\d ;
|
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
|
SET @time_zone_id= LAST_INSERT_ID();
|
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('GMT', @time_zone_id);
|
|
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
|
(@time_zone_id, 0, 0, 0, 'GMT')
|
|
;
|
|
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/garbage' as time zone. Skipping it.
|
|
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/ignored.tab' as time zone. Skipping it.
|
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
|
SET @time_zone_id= LAST_INSERT_ID();
|
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('posix/GMT', @time_zone_id);
|
|
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
|
(@time_zone_id, 0, 0, 0, 'GMT')
|
|
;
|
|
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/posix/garbage' as time zone. Skipping it.
|
|
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/posix/ignored.tab' as time zone. Skipping it.
|
|
Warning: Skipping directory 'MYSQLTEST_VARDIR/zoneinfo/posix/posix': to avoid infinite symlink recursion.
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
|
|
ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=Aria;
|
|
ALTER TABLE time_zone_name ENGINE=Aria;
|
|
ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
|
|
ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
|
|
END IF|
|
|
\d ;
|
|
SET session alter_algorithm=@old_alter_alg;
|
|
SELECT COUNT(*) FROM time_zone;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_name;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition_type;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_leap_second;
|
|
COUNT(*)
|
|
0
|
|
# Run on zoneinfo directory
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_name ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
|
|
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
|
SET session alter_algorithm='COPY';
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
START TRANSACTION;
|
|
ELSE
|
|
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
|
SET session alter_algorithm='COPY';
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
END IF|
|
|
\d ;
|
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
|
SET @time_zone_id= LAST_INSERT_ID();
|
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('GMT', @time_zone_id);
|
|
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
|
(@time_zone_id, 0, 0, 0, 'GMT')
|
|
;
|
|
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/garbage' as time zone. Skipping it.
|
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
|
SET @time_zone_id= LAST_INSERT_ID();
|
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('posix/GMT', @time_zone_id);
|
|
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
|
(@time_zone_id, 0, 0, 0, 'GMT')
|
|
;
|
|
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/posix/garbage' as time zone. Skipping it.
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
|
|
ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=Aria;
|
|
ALTER TABLE time_zone_name ENGINE=Aria;
|
|
ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
|
|
ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
|
|
END IF|
|
|
\d ;
|
|
SET session alter_algorithm=@old_alter_alg;
|
|
SELECT COUNT(*) FROM time_zone;
|
|
COUNT(*)
|
|
2
|
|
SELECT COUNT(*) FROM time_zone_name;
|
|
COUNT(*)
|
|
2
|
|
SELECT COUNT(*) FROM time_zone_transition;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition_type;
|
|
COUNT(*)
|
|
2
|
|
SELECT COUNT(*) FROM time_zone_leap_second;
|
|
COUNT(*)
|
|
0
|
|
#
|
|
# Run on zoneinfo directory --skip-write-binlog
|
|
#
|
|
set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION WSREP_ON=OFF', 'do 0');
|
|
SET SESSION SQL_LOG_BIN=0;
|
|
execute immediate @prep1;
|
|
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
|
SET session alter_algorithm='COPY';
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
LOCK TABLES time_zone WRITE,
|
|
time_zone_leap_second WRITE,
|
|
time_zone_name WRITE,
|
|
time_zone_transition WRITE,
|
|
time_zone_transition_type WRITE;
|
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
|
SET @time_zone_id= LAST_INSERT_ID();
|
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('GMT', @time_zone_id);
|
|
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
|
(@time_zone_id, 0, 0, 0, 'GMT')
|
|
;
|
|
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/garbage' as time zone. Skipping it.
|
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
|
SET @time_zone_id= LAST_INSERT_ID();
|
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('posix/GMT', @time_zone_id);
|
|
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
|
(@time_zone_id, 0, 0, 0, 'GMT')
|
|
;
|
|
Warning: Unable to load 'MYSQLTEST_VARDIR/zoneinfo/posix/garbage' as time zone. Skipping it.
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
|
|
ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
|
|
SET session alter_algorithm=@old_alter_alg;
|
|
SELECT COUNT(*) FROM time_zone;
|
|
COUNT(*)
|
|
2
|
|
SELECT COUNT(*) FROM time_zone_name;
|
|
COUNT(*)
|
|
2
|
|
SELECT COUNT(*) FROM time_zone_transition;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition_type;
|
|
COUNT(*)
|
|
2
|
|
SELECT COUNT(*) FROM time_zone_leap_second;
|
|
COUNT(*)
|
|
0
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
TRUNCATE TABLE time_zone_leap_second;
|
|
#
|
|
# Testing with explicit timezonefile
|
|
#
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_name ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
|
|
SELECT 'skip truncate tables';
|
|
START TRANSACTION;
|
|
ELSE
|
|
SELECT 'skip truncate tables';
|
|
END IF|
|
|
\d ;
|
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
|
SET @time_zone_id= LAST_INSERT_ID();
|
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('XXX', @time_zone_id);
|
|
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
|
(@time_zone_id, 0, 0, 0, 'GMT')
|
|
;
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=Aria;
|
|
ALTER TABLE time_zone_name ENGINE=Aria;
|
|
ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
|
|
ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
|
|
END IF|
|
|
\d ;
|
|
skip truncate tables
|
|
skip truncate tables
|
|
SELECT COUNT(*) FROM time_zone;
|
|
COUNT(*)
|
|
1
|
|
SELECT COUNT(*) FROM time_zone_name;
|
|
COUNT(*)
|
|
1
|
|
SELECT COUNT(*) FROM time_zone_transition;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition_type;
|
|
COUNT(*)
|
|
1
|
|
SELECT COUNT(*) FROM time_zone_leap_second;
|
|
COUNT(*)
|
|
0
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
TRUNCATE TABLE time_zone_leap_second;
|
|
#
|
|
# Testing with explicit timezonefile --skip-write-binlog
|
|
#
|
|
set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION WSREP_ON=OFF', 'do 0');
|
|
SET SESSION SQL_LOG_BIN=0;
|
|
execute immediate @prep1;
|
|
SELECT 'skip truncate tables';
|
|
LOCK TABLES time_zone WRITE,
|
|
time_zone_leap_second WRITE,
|
|
time_zone_name WRITE,
|
|
time_zone_transition WRITE,
|
|
time_zone_transition_type WRITE;
|
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
|
SET @time_zone_id= LAST_INSERT_ID();
|
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('XXX', @time_zone_id);
|
|
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
|
(@time_zone_id, 0, 0, 0, 'GMT')
|
|
;
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
SELECT COUNT(*) FROM time_zone;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_name;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition_type;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_leap_second;
|
|
COUNT(*)
|
|
0
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
TRUNCATE TABLE time_zone_leap_second;
|
|
#
|
|
# Testing --leap
|
|
#
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_name ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
|
|
SELECT 'skip truncate tables';
|
|
START TRANSACTION;
|
|
ELSE
|
|
SELECT 'skip truncate tables';
|
|
END IF|
|
|
\d ;
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone_leap_second ENGINE=InnoDB;
|
|
END IF|
|
|
\d ;
|
|
TRUNCATE TABLE time_zone_leap_second;
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone_leap_second ENGINE=Aria;
|
|
END IF|
|
|
\d ;
|
|
ALTER TABLE time_zone_leap_second ORDER BY Transition_time;
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=Aria;
|
|
ALTER TABLE time_zone_name ENGINE=Aria;
|
|
ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
|
|
ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
|
|
END IF|
|
|
\d ;
|
|
skip truncate tables
|
|
skip truncate tables
|
|
SELECT COUNT(*) FROM time_zone;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_name;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition_type;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_leap_second;
|
|
COUNT(*)
|
|
0
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
TRUNCATE TABLE time_zone_leap_second;
|
|
#
|
|
# Testing --skip-write-binlog --leap
|
|
#
|
|
set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION WSREP_ON=OFF', 'do 0');
|
|
SET SESSION SQL_LOG_BIN=0;
|
|
execute immediate @prep1;
|
|
SELECT 'skip truncate tables';
|
|
LOCK TABLES time_zone WRITE,
|
|
time_zone_leap_second WRITE,
|
|
time_zone_name WRITE,
|
|
time_zone_transition WRITE,
|
|
time_zone_transition_type WRITE;
|
|
TRUNCATE TABLE time_zone_leap_second;
|
|
ALTER TABLE time_zone_leap_second ORDER BY Transition_time;
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
skip truncate tables
|
|
skip truncate tables
|
|
SELECT COUNT(*) FROM time_zone;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_name;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_transition_type;
|
|
COUNT(*)
|
|
0
|
|
SELECT COUNT(*) FROM time_zone_leap_second;
|
|
COUNT(*)
|
|
0
|
|
#
|
|
# MDEV-28263: mariadb-tzinfo-to-sql improve wsrep and binlog cases
|
|
#
|
|
#
|
|
# Testing --skip-write-binlog
|
|
#
|
|
set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION WSREP_ON=OFF', 'do 0');
|
|
SET SESSION SQL_LOG_BIN=0;
|
|
execute immediate @prep1;
|
|
SELECT 'skip truncate tables';
|
|
LOCK TABLES time_zone WRITE,
|
|
time_zone_leap_second WRITE,
|
|
time_zone_name WRITE,
|
|
time_zone_transition WRITE,
|
|
time_zone_transition_type WRITE;
|
|
INSERT INTO time_zone (Use_leap_seconds) VALUES ('N');
|
|
SET @time_zone_id= LAST_INSERT_ID();
|
|
INSERT INTO time_zone_name (Name, Time_zone_id) VALUES ('XXX', @time_zone_id);
|
|
INSERT INTO time_zone_transition_type (Time_zone_id, Transition_type_id, Offset, Is_DST, Abbreviation) VALUES
|
|
(@time_zone_id, 0, 0, 0, 'GMT')
|
|
;
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
set @prep1=if((select count(*) from information_schema.global_variables where variable_name='wsrep_on' and variable_value='ON'), 'SET SESSION WSREP_ON=OFF', 'do 0');
|
|
SET SESSION SQL_LOG_BIN=0;
|
|
execute immediate @prep1;
|
|
SELECT 'skip truncate tables';
|
|
LOCK TABLES time_zone WRITE,
|
|
time_zone_leap_second WRITE,
|
|
time_zone_name WRITE,
|
|
time_zone_transition WRITE,
|
|
time_zone_transition_type WRITE;
|
|
TRUNCATE TABLE time_zone_leap_second;
|
|
ALTER TABLE time_zone_leap_second ORDER BY Transition_time;
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
#
|
|
# End of 10.2 tests
|
|
#
|
|
#
|
|
# MDEV-6236 - [PATCH] mysql_tzinfo_to_sql may produce invalid SQL
|
|
#
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_name ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition ENGINE=InnoDB;
|
|
ALTER TABLE time_zone_transition_type ENGINE=InnoDB;
|
|
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
|
SET session alter_algorithm='COPY';
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
START TRANSACTION;
|
|
ELSE
|
|
SET @old_alter_alg=@@SESSION.alter_algorithm;
|
|
SET session alter_algorithm='COPY';
|
|
TRUNCATE TABLE time_zone;
|
|
TRUNCATE TABLE time_zone_name;
|
|
TRUNCATE TABLE time_zone_transition;
|
|
TRUNCATE TABLE time_zone_transition_type;
|
|
END IF|
|
|
\d ;
|
|
UNLOCK TABLES;
|
|
COMMIT;
|
|
ALTER TABLE time_zone_transition ORDER BY Time_zone_id, Transition_time;
|
|
ALTER TABLE time_zone_transition_type ORDER BY Time_zone_id, Transition_type_id;
|
|
\d |
|
|
IF (select count(*) from information_schema.global_variables where
|
|
variable_name='wsrep_on' and variable_value='ON') = 1 THEN
|
|
ALTER TABLE time_zone ENGINE=Aria;
|
|
ALTER TABLE time_zone_name ENGINE=Aria;
|
|
ALTER TABLE time_zone_transition ENGINE=Aria, ORDER BY Time_zone_id, Transition_time;
|
|
ALTER TABLE time_zone_transition_type ENGINE=Aria, ORDER BY Time_zone_id, Transition_type_id;
|
|
END IF|
|
|
\d ;
|
|
SET session alter_algorithm=@old_alter_alg;
|
|
DROP TABLE time_zone;
|
|
DROP TABLE time_zone_name;
|
|
DROP TABLE time_zone_transition;
|
|
DROP TABLE time_zone_transition_type;
|
|
DROP TABLE time_zone_leap_second;
|
|
RENAME TABLE time_zone_orig TO time_zone,
|
|
time_zone_name_orig TO time_zone_name,
|
|
time_zone_transition_orig TO time_zone_transition,
|
|
time_zone_transition_type_orig TO time_zone_transition_type,
|
|
time_zone_leap_second_orig TO time_zone_leap_second;
|