mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
MDEV-33044 Loading time zones does not work with alter_algorithm INPLACE
$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.
This commit is contained in:
committed by
Daniel Black
parent
81f75ca83a
commit
7890388d91
@@ -0,0 +1,38 @@
|
||||
# MDEV-33044 Loading time zones does not work with alter_algorithm INPLACE
|
||||
|
||||
set global alter_algorithm=INPLACE;
|
||||
|
||||
# Because loading timezones alters the mysql tables,
|
||||
# this test will leave mysql in a different state than when it started.
|
||||
# Furthermore, checksums on the various mysql.timezone_x tables will fail.
|
||||
|
||||
# Therefore we:
|
||||
# 1. Make "backups" of the existing tables by renaming them
|
||||
# 2. Make dummy clones of the tables we just backed up
|
||||
# 3. Load timezones with alterations made to the dummy clone tables
|
||||
# 4. Drop the newly made tables with changes made to them
|
||||
# 5. Restore the backed up tables so the checksums will pass
|
||||
|
||||
RENAME TABLE mysql.time_zone TO mysql.time_zone_BACKUP;
|
||||
RENAME TABLE mysql.time_zone_name TO mysql.time_zone_name_BACKUP;
|
||||
RENAME TABLE mysql.time_zone_transition TO mysql.time_zone_transition_BACKUP;
|
||||
RENAME TABLE mysql.time_zone_transition_type TO mysql.time_zone_transition_type_BACKUP;
|
||||
|
||||
CREATE TABLE mysql.time_zone LIKE mysql.time_zone_BACKUP;
|
||||
CREATE TABLE mysql.time_zone_name LIKE mysql.time_zone_name_BACKUP;
|
||||
CREATE TABLE mysql.time_zone_transition LIKE mysql.time_zone_transition_BACKUP;
|
||||
CREATE TABLE mysql.time_zone_transition_type LIKE mysql.time_zone_transition_type_BACKUP;
|
||||
|
||||
--exec $MYSQL_TZINFO_TO_SQL std_data/zoneinfo | $MYSQL mysql
|
||||
|
||||
DROP TABLE mysql.time_zone;
|
||||
DROP TABLE mysql.time_zone_name;
|
||||
DROP TABLE mysql.time_zone_transition;
|
||||
DROP TABLE mysql.time_zone_transition_type;
|
||||
|
||||
RENAME TABLE mysql.time_zone_BACKUP TO mysql.time_zone;
|
||||
RENAME TABLE mysql.time_zone_name_BACKUP TO mysql.time_zone_name;
|
||||
RENAME TABLE mysql.time_zone_transition_BACKUP TO mysql.time_zone_transition;
|
||||
RENAME TABLE mysql.time_zone_transition_type_BACKUP TO mysql.time_zone_transition_type;
|
||||
|
||||
set global alter_algorithm=DEFAULT;
|
Reference in New Issue
Block a user