mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-33655 Remove alter_algorithm
Remove alter_algorithm but keep the variable as no-op (with a warning). The reasons for removing alter_algorithm are: - alter_algorithm was introduced as a replacement for the old_alter_table that was used to force the usage of the original alter table algorithm (copy) in the cases where the new alter algorithm did not work. The new option was added as a way to force the usage of a specific algorithm when it should instead have made it possible to disable algorithms that would not work for some reason. - alter_algorithm introduced some cases where ALTER TABLE would not work without specifying the ALGORITHM=XXX option together with ALTER TABLE. - Having different values of alter_algorithm on master and slave could cause slave to stop unexpectedly. - ALTER TABLE FORCE, as used by mariadb-upgrade, would not always work if alter_algorithm was set for the server. - As part of the MDEV-33449 "improving repair of tables" it become clear that alter- algorithm made it harder to provide a better and more consistent ALTER TABLE FORCE and REPAIR TABLE and it would be better to remove it.
This commit is contained in:
@ -1654,13 +1654,11 @@ ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 DROP INDEX i1, DROP INDEX i2, DROP INDEX i3, DROP INDEX i4;
|
||||
#
|
||||
# 2: Test ALGORITHM + alter_algorithm
|
||||
# 2: Test ALGORITHM keywords
|
||||
#
|
||||
SET SESSION alter_algorithm= 1;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 ADD INDEX i1(b);
|
||||
affected rows: 2
|
||||
info: Records: 2 Duplicates: 0 Warnings: 0
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 ADD INDEX i2(b), ALGORITHM= DEFAULT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
@ -1676,8 +1674,6 @@ affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Note 1831 Duplicate index `i4`. This is deprecated and will be disallowed in a future release
|
||||
SET SESSION alter_algorithm= 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 DROP INDEX i1, DROP INDEX i2, DROP INDEX i3, DROP INDEX i4;
|
||||
#
|
||||
# 3: Test unsupported in-place operation
|
||||
@ -3123,3 +3119,13 @@ DROP TABLE t;
|
||||
#
|
||||
# End of 10.7 tests
|
||||
#
|
||||
#
|
||||
# MDEV-33655 Remove alter_algorithm
|
||||
#
|
||||
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a INT) ENGINE=MERGE, UNION(t1);
|
||||
ALTER TABLE t2 COMMENT 'x', LOCK=SHARED;
|
||||
DROP TABLE t2,t1;
|
||||
#
|
||||
# End of 11.5 tests
|
||||
#
|
||||
|
@ -1462,16 +1462,14 @@ ALTER TABLE m1 ENABLE KEYS, ALGORITHM= INPLACE;
|
||||
ALTER TABLE t1 DROP INDEX i1, DROP INDEX i2, DROP INDEX i3, DROP INDEX i4;
|
||||
|
||||
--echo #
|
||||
--echo # 2: Test ALGORITHM + alter_algorithm
|
||||
--echo # 2: Test ALGORITHM keywords
|
||||
--echo #
|
||||
|
||||
--enable_info
|
||||
SET SESSION alter_algorithm= 1;
|
||||
ALTER TABLE t1 ADD INDEX i1(b);
|
||||
ALTER TABLE t1 ADD INDEX i2(b), ALGORITHM= DEFAULT;
|
||||
ALTER TABLE t1 ADD INDEX i3(b), ALGORITHM= COPY;
|
||||
ALTER TABLE t1 ADD INDEX i4(b), ALGORITHM= INPLACE;
|
||||
SET SESSION alter_algorithm= 0;
|
||||
--disable_info
|
||||
|
||||
ALTER TABLE t1 DROP INDEX i1, DROP INDEX i2, DROP INDEX i3, DROP INDEX i4;
|
||||
@ -2428,3 +2426,16 @@ DROP TABLE t;
|
||||
--echo #
|
||||
--echo # End of 10.7 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33655 Remove alter_algorithm
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (a INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (a INT) ENGINE=MERGE, UNION(t1);
|
||||
ALTER TABLE t2 COMMENT 'x', LOCK=SHARED;
|
||||
DROP TABLE t2,t1;
|
||||
|
||||
--echo #
|
||||
--echo # End of 11.5 tests
|
||||
--echo #
|
||||
|
@ -1,7 +1,19 @@
|
||||
create table t1 (a int, b int, key a1(a)) engine=innodb;
|
||||
insert into t1 values (1,1),(2,2),(3,3);
|
||||
set alter_algorithm='instant';
|
||||
alter table t1 alter index a1 ignored;
|
||||
alter table t1 alter index a1 not ignored;
|
||||
set alter_algorithm=default;
|
||||
alter table t1 alter index a1 ignored, algorithm=instant;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT NULL,
|
||||
KEY `a1` (`a`) IGNORED
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
alter table t1 alter index a1 not ignored, algorithm=instant;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL,
|
||||
`b` int(11) DEFAULT NULL,
|
||||
KEY `a1` (`a`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci
|
||||
drop table t1;
|
||||
|
@ -6,11 +6,9 @@
|
||||
create table t1 (a int, b int, key a1(a)) engine=innodb;
|
||||
insert into t1 values (1,1),(2,2),(3,3);
|
||||
|
||||
set alter_algorithm='instant';
|
||||
alter table t1 alter index a1 ignored;
|
||||
alter table t1 alter index a1 ignored, algorithm=instant;
|
||||
show create table t1;
|
||||
alter table t1 alter index a1 not ignored, algorithm=instant;
|
||||
show create table t1;
|
||||
|
||||
alter table t1 alter index a1 not ignored;
|
||||
|
||||
set alter_algorithm=default;
|
||||
drop table t1;
|
||||
|
||||
|
@ -449,63 +449,14 @@ info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 ENGINE=INNODB;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
#ALTER TABLE FORCE, ALTER TABLE ENGINE and OPTIMIZE TABLE uses
|
||||
#table copy when the alter_algorithm enabled.
|
||||
SET SESSION alter_algorithm= TRUE;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 FORCE;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 ENGINE= INNODB;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
SET DEBUG_SYNC= 'alter_table_copy_after_lock_upgrade SIGNAL upgraded';
|
||||
affected rows: 0
|
||||
#OPTIMIZE TABLE operation using table copy.
|
||||
OPTIMIZE TABLE t1;
|
||||
connection con1;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR upgraded';
|
||||
affected rows: 0
|
||||
INSERT INTO t1 VALUES(10, 20);
|
||||
affected rows: 1
|
||||
connection default;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
||||
test.t1 optimize status OK
|
||||
affected rows: 2
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
affected rows: 0
|
||||
SET SESSION alter_algorithm= FALSE;
|
||||
affected rows: 0
|
||||
#ALTER TABLE FORCE and ALTER TABLE ENGINE uses table copy
|
||||
#when ALGORITHM COPY is used.
|
||||
# ALTER TABLE FORCE and ALTER TABLE ENGINE uses table copy
|
||||
# when ALGORITHM COPY is used.
|
||||
ALTER TABLE t1 FORCE, ALGORITHM= COPY;
|
||||
affected rows: 2
|
||||
info: Records: 2 Duplicates: 0 Warnings: 0
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 ENGINE= INNODB, ALGORITHM= COPY;
|
||||
affected rows: 2
|
||||
info: Records: 2 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
#OPTIMIZE TABLE on a table with FULLTEXT index uses
|
||||
#ALTER TABLE FORCE using COPY algorithm here. This
|
||||
#test case ensures the COPY table debug sync point is hit.
|
||||
SET DEBUG_SYNC= 'alter_table_copy_after_lock_upgrade SIGNAL upgraded';
|
||||
#Setup a table with FULLTEXT index.
|
||||
connection default;
|
||||
CREATE TABLE t1(fld1 CHAR(10), FULLTEXT(fld1), FULLTEXT(fld1)) ENGINE= INNODB;
|
||||
Warnings:
|
||||
Note 1831 Duplicate index `fld1_2`. This is deprecated and will be disallowed in a future release
|
||||
INSERT INTO t1 VALUES("String1");
|
||||
#OPTIMIZE TABLE operation.
|
||||
OPTIMIZE TABLE t1;
|
||||
connection con1;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR upgraded';
|
||||
INSERT INTO t1 VALUES("String2");
|
||||
connection default;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
||||
test.t1 optimize status OK
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
#Test which demonstrates that ALTER TABLE, OPTIMIZE PARTITION
|
||||
#takes OPTIMIZE TABLE code path, hence does an online rebuild
|
||||
|
@ -611,27 +611,8 @@ INSERT INTO t1 VALUES(10, 20);
|
||||
ALTER TABLE t1 FORCE;
|
||||
ALTER TABLE t1 ENGINE=INNODB;
|
||||
|
||||
--echo #ALTER TABLE FORCE, ALTER TABLE ENGINE and OPTIMIZE TABLE uses
|
||||
--echo #table copy when the alter_algorithm enabled.
|
||||
SET SESSION alter_algorithm= TRUE;
|
||||
ALTER TABLE t1 FORCE;
|
||||
ALTER TABLE t1 ENGINE= INNODB;
|
||||
|
||||
SET DEBUG_SYNC= 'alter_table_copy_after_lock_upgrade SIGNAL upgraded';
|
||||
--echo #OPTIMIZE TABLE operation using table copy.
|
||||
--send OPTIMIZE TABLE t1
|
||||
|
||||
--connection con1
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR upgraded';
|
||||
INSERT INTO t1 VALUES(10, 20);
|
||||
|
||||
--connection default
|
||||
--reap
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
SET SESSION alter_algorithm= FALSE;
|
||||
|
||||
--echo #ALTER TABLE FORCE and ALTER TABLE ENGINE uses table copy
|
||||
--echo #when ALGORITHM COPY is used.
|
||||
--echo # ALTER TABLE FORCE and ALTER TABLE ENGINE uses table copy
|
||||
--echo # when ALGORITHM COPY is used.
|
||||
ALTER TABLE t1 FORCE, ALGORITHM= COPY;
|
||||
ALTER TABLE t1 ENGINE= INNODB, ALGORITHM= COPY;
|
||||
--disable_info
|
||||
@ -639,29 +620,6 @@ ALTER TABLE t1 ENGINE= INNODB, ALGORITHM= COPY;
|
||||
#cleanup
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #OPTIMIZE TABLE on a table with FULLTEXT index uses
|
||||
--echo #ALTER TABLE FORCE using COPY algorithm here. This
|
||||
--echo #test case ensures the COPY table debug sync point is hit.
|
||||
|
||||
SET DEBUG_SYNC= 'alter_table_copy_after_lock_upgrade SIGNAL upgraded';
|
||||
|
||||
--echo #Setup a table with FULLTEXT index.
|
||||
--connection default
|
||||
CREATE TABLE t1(fld1 CHAR(10), FULLTEXT(fld1), FULLTEXT(fld1)) ENGINE= INNODB;
|
||||
INSERT INTO t1 VALUES("String1");
|
||||
|
||||
--echo #OPTIMIZE TABLE operation.
|
||||
--send OPTIMIZE TABLE t1
|
||||
|
||||
--connection con1
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR upgraded';
|
||||
INSERT INTO t1 VALUES("String2");
|
||||
|
||||
--connection default
|
||||
--reap
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #Test which demonstrates that ALTER TABLE, OPTIMIZE PARTITION
|
||||
--echo #takes OPTIMIZE TABLE code path, hence does an online rebuild
|
||||
--echo #of the table with the patch.
|
||||
|
@ -1,18 +0,0 @@
|
||||
set global alter_algorithm=INPLACE;
|
||||
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;
|
||||
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;
|
@ -1,40 +0,0 @@
|
||||
--source include/not_embedded.inc
|
||||
|
||||
# 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;
|
@ -104,6 +104,10 @@ execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_n
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition ENGINE=', @time_zone_transition_engine, ', ORDER BY Time_zone_id, Transition_time'), 'do 0');
|
||||
execute immediate if(@wsrep_cannot_replicate_tz, concat('ALTER TABLE time_zone_transition_type ENGINE=', @time_zone_transition_type_engine, ', ORDER BY Time_zone_id, Transition_type_id'), 'do 0');
|
||||
SET session alter_algorithm=@old_alter_alg;
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
SELECT COUNT(*) FROM time_zone;
|
||||
COUNT(*)
|
||||
2
|
||||
@ -161,6 +165,10 @@ execute immediate if(@wsrep_cannot_replicate_tz, 'do 0','ALTER TABLE time_zone_t
|
||||
SET SESSION SQL_LOG_BIN=@save_sql_log_bin;
|
||||
execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0');
|
||||
SET session alter_algorithm=@old_alter_alg;
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
SELECT COUNT(*) FROM time_zone;
|
||||
COUNT(*)
|
||||
2
|
||||
@ -481,6 +489,10 @@ execute immediate if(@wsrep_is_on, 'SET SESSION WSREP_ON=@save_wsrep_on', 'do 0'
|
||||
# MDEV-29347 MariaDB 10.6.8 fails to start when ONLY_FULL_GROUP_BY gets provided
|
||||
#
|
||||
set sql_mode=only_full_group_by;
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
SELECT COUNT(*) FROM time_zone;
|
||||
COUNT(*)
|
||||
2
|
||||
|
@ -1972,169 +1972,6 @@ DROP USER 'user3'@'%';
|
||||
update mysql.db set Delete_history_priv='Y' where db like 'test%';
|
||||
drop table mysql.global_priv;
|
||||
rename table mysql.global_priv_bak to mysql.global_priv;
|
||||
#
|
||||
# MDEV-16735 Upgrades only work if 'alter_algorithm' is 'DEFAULT'
|
||||
# or 'COPY'. Test that the session value 'DEFAULT' in mysql_upgrade
|
||||
# properly overrides the potentially incompatible global value.
|
||||
#
|
||||
SET GLOBAL alter_algorithm='INPLACE';
|
||||
SHOW GLOBAL VARIABLES LIKE 'alter_algorithm';
|
||||
Variable_name Value
|
||||
alter_algorithm INPLACE
|
||||
Phase 1/8: Checking and upgrading mysql database
|
||||
Processing databases
|
||||
mysql
|
||||
mysql.column_stats OK
|
||||
mysql.columns_priv OK
|
||||
mysql.db OK
|
||||
mysql.event OK
|
||||
mysql.func OK
|
||||
mysql.global_priv OK
|
||||
mysql.gtid_slave_pos OK
|
||||
mysql.help_category OK
|
||||
mysql.help_keyword OK
|
||||
mysql.help_relation OK
|
||||
mysql.help_topic OK
|
||||
mysql.index_stats OK
|
||||
mysql.innodb_index_stats OK
|
||||
mysql.innodb_table_stats OK
|
||||
mysql.plugin OK
|
||||
mysql.proc OK
|
||||
mysql.procs_priv OK
|
||||
mysql.proxies_priv OK
|
||||
mysql.roles_mapping OK
|
||||
mysql.servers OK
|
||||
mysql.table_stats OK
|
||||
mysql.tables_priv OK
|
||||
mysql.time_zone OK
|
||||
mysql.time_zone_leap_second OK
|
||||
mysql.time_zone_name OK
|
||||
mysql.time_zone_transition OK
|
||||
mysql.time_zone_transition_type OK
|
||||
mysql.transaction_registry OK
|
||||
Phase 2/8: Installing used storage engines... Skipped
|
||||
Phase 3/8: Running 'mysql_fix_privilege_tables'
|
||||
Phase 4/8: Fixing views
|
||||
mysql.user OK
|
||||
sys.host_summary OK
|
||||
sys.host_summary_by_file_io OK
|
||||
sys.host_summary_by_file_io_type OK
|
||||
sys.host_summary_by_stages OK
|
||||
sys.host_summary_by_statement_latency OK
|
||||
sys.host_summary_by_statement_type OK
|
||||
sys.innodb_buffer_stats_by_schema OK
|
||||
sys.innodb_buffer_stats_by_table OK
|
||||
sys.innodb_lock_waits OK
|
||||
sys.io_by_thread_by_latency OK
|
||||
sys.io_global_by_file_by_bytes OK
|
||||
sys.io_global_by_file_by_latency OK
|
||||
sys.io_global_by_wait_by_bytes OK
|
||||
sys.io_global_by_wait_by_latency OK
|
||||
sys.latest_file_io OK
|
||||
sys.memory_by_host_by_current_bytes OK
|
||||
sys.memory_by_thread_by_current_bytes OK
|
||||
sys.memory_by_user_by_current_bytes OK
|
||||
sys.memory_global_by_current_bytes OK
|
||||
sys.memory_global_total OK
|
||||
sys.metrics OK
|
||||
sys.privileges_by_table_by_level OK
|
||||
sys.processlist OK
|
||||
sys.ps_check_lost_instrumentation OK
|
||||
sys.schema_auto_increment_columns OK
|
||||
sys.schema_index_statistics OK
|
||||
sys.schema_object_overview OK
|
||||
sys.schema_redundant_indexes OK
|
||||
sys.schema_table_lock_waits OK
|
||||
sys.schema_table_statistics OK
|
||||
sys.schema_table_statistics_with_buffer OK
|
||||
sys.schema_tables_with_full_table_scans OK
|
||||
sys.schema_unused_indexes OK
|
||||
sys.session OK
|
||||
sys.session_ssl_status OK
|
||||
sys.statement_analysis OK
|
||||
sys.statements_with_errors_or_warnings OK
|
||||
sys.statements_with_full_table_scans OK
|
||||
sys.statements_with_runtimes_in_95th_percentile OK
|
||||
sys.statements_with_sorting OK
|
||||
sys.statements_with_temp_tables OK
|
||||
sys.user_summary OK
|
||||
sys.user_summary_by_file_io OK
|
||||
sys.user_summary_by_file_io_type OK
|
||||
sys.user_summary_by_stages OK
|
||||
sys.user_summary_by_statement_latency OK
|
||||
sys.user_summary_by_statement_type OK
|
||||
sys.version OK
|
||||
sys.wait_classes_global_by_avg_latency OK
|
||||
sys.wait_classes_global_by_latency OK
|
||||
sys.waits_by_host_by_latency OK
|
||||
sys.waits_by_user_by_latency OK
|
||||
sys.waits_global_by_latency OK
|
||||
sys.x$host_summary OK
|
||||
sys.x$host_summary_by_file_io OK
|
||||
sys.x$host_summary_by_file_io_type OK
|
||||
sys.x$host_summary_by_stages OK
|
||||
sys.x$host_summary_by_statement_latency OK
|
||||
sys.x$host_summary_by_statement_type OK
|
||||
sys.x$innodb_buffer_stats_by_schema OK
|
||||
sys.x$innodb_buffer_stats_by_table OK
|
||||
sys.x$innodb_lock_waits OK
|
||||
sys.x$io_by_thread_by_latency OK
|
||||
sys.x$io_global_by_file_by_bytes OK
|
||||
sys.x$io_global_by_file_by_latency OK
|
||||
sys.x$io_global_by_wait_by_bytes OK
|
||||
sys.x$io_global_by_wait_by_latency OK
|
||||
sys.x$latest_file_io OK
|
||||
sys.x$memory_by_host_by_current_bytes OK
|
||||
sys.x$memory_by_thread_by_current_bytes OK
|
||||
sys.x$memory_by_user_by_current_bytes OK
|
||||
sys.x$memory_global_by_current_bytes OK
|
||||
sys.x$memory_global_total OK
|
||||
sys.x$processlist OK
|
||||
sys.x$ps_digest_95th_percentile_by_avg_us OK
|
||||
sys.x$ps_digest_avg_latency_distribution OK
|
||||
sys.x$ps_schema_table_statistics_io OK
|
||||
sys.x$schema_flattened_keys OK
|
||||
sys.x$schema_index_statistics OK
|
||||
sys.x$schema_table_lock_waits OK
|
||||
sys.x$schema_table_statistics OK
|
||||
sys.x$schema_table_statistics_with_buffer OK
|
||||
sys.x$schema_tables_with_full_table_scans OK
|
||||
sys.x$session OK
|
||||
sys.x$statement_analysis OK
|
||||
sys.x$statements_with_errors_or_warnings OK
|
||||
sys.x$statements_with_full_table_scans OK
|
||||
sys.x$statements_with_runtimes_in_95th_percentile OK
|
||||
sys.x$statements_with_sorting OK
|
||||
sys.x$statements_with_temp_tables OK
|
||||
sys.x$user_summary OK
|
||||
sys.x$user_summary_by_file_io OK
|
||||
sys.x$user_summary_by_file_io_type OK
|
||||
sys.x$user_summary_by_stages OK
|
||||
sys.x$user_summary_by_statement_latency OK
|
||||
sys.x$user_summary_by_statement_type OK
|
||||
sys.x$wait_classes_global_by_avg_latency OK
|
||||
sys.x$wait_classes_global_by_latency OK
|
||||
sys.x$waits_by_host_by_latency OK
|
||||
sys.x$waits_by_user_by_latency OK
|
||||
sys.x$waits_global_by_latency OK
|
||||
Phase 5/8: Fixing table and database names
|
||||
Phase 6/8: Checking and upgrading tables
|
||||
Processing databases
|
||||
information_schema
|
||||
mtr
|
||||
mtr.global_suppressions OK
|
||||
mtr.test_suppressions OK
|
||||
performance_schema
|
||||
sys
|
||||
sys.sys_config OK
|
||||
test
|
||||
Phase 7/8: uninstalling plugins
|
||||
Phase 8/8: Running 'FLUSH PRIVILEGES'
|
||||
OK
|
||||
SET GLOBAL alter_algorithm=DEFAULT;
|
||||
SHOW GLOBAL VARIABLES LIKE 'alter_algorithm';
|
||||
Variable_name Value
|
||||
alter_algorithm DEFAULT
|
||||
# End of 10.3 tests
|
||||
# switching from mysql.global_priv to mysql.user
|
||||
drop view mysql.user_bak;
|
||||
|
@ -405,19 +405,6 @@ update mysql.db set Delete_history_priv='Y' where db like 'test%';
|
||||
drop table mysql.global_priv;
|
||||
rename table mysql.global_priv_bak to mysql.global_priv;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16735 Upgrades only work if 'alter_algorithm' is 'DEFAULT'
|
||||
--echo # or 'COPY'. Test that the session value 'DEFAULT' in mysql_upgrade
|
||||
--echo # properly overrides the potentially incompatible global value.
|
||||
--echo #
|
||||
|
||||
SET GLOBAL alter_algorithm='INPLACE';
|
||||
SHOW GLOBAL VARIABLES LIKE 'alter_algorithm';
|
||||
--exec $MYSQL_UPGRADE --force 2>&1
|
||||
SET GLOBAL alter_algorithm=DEFAULT;
|
||||
SHOW GLOBAL VARIABLES LIKE 'alter_algorithm';
|
||||
--remove_file $MYSQLD_DATADIR/mariadb_upgrade_info
|
||||
|
||||
--echo # End of 10.3 tests
|
||||
|
||||
--source include/switch_to_mysql_user.inc
|
||||
|
@ -14,8 +14,8 @@ The following specify which files/extra groups are read (specified before remain
|
||||
function from any library, for example exit() from
|
||||
libc.so
|
||||
--alter-algorithm[=name]
|
||||
Specify the alter table algorithm. One of: DEFAULT, COPY,
|
||||
INPLACE, NOCOPY, INSTANT
|
||||
Unused. One of: DEFAULT, COPY, INPLACE, NOCOPY, INSTANT.
|
||||
Deprecated, will be removed in a future release.
|
||||
--analyze-sample-percentage=#
|
||||
Percentage of rows from the table ANALYZE TABLE will
|
||||
sample to collect table statistics. Set to 0 to let
|
||||
|
@ -1,4 +1,5 @@
|
||||
call mtr.add_suppression("character set is multi-byte");
|
||||
call mtr.add_suppression("exists only for compatibility");
|
||||
drop table if exists t1;
|
||||
create table t1 SELECT 1,"table 1";
|
||||
repair table t1 use_frm;
|
||||
@ -251,3 +252,40 @@ test.t1 repair status OK
|
||||
set myisam_repair_threads = default;
|
||||
drop table t1;
|
||||
# End of 10.2 tests
|
||||
#
|
||||
# MDEV-33737 The way of ignoring alter-algorithm is inconsistent with
|
||||
# other options and with itself
|
||||
#
|
||||
select * from information_schema.system_variables where variable_name = 'ALTER_ALGORITHM';
|
||||
VARIABLE_NAME ALTER_ALGORITHM
|
||||
SESSION_VALUE DEFAULT
|
||||
GLOBAL_VALUE DEFAULT
|
||||
GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
||||
DEFAULT_VALUE DEFAULT
|
||||
VARIABLE_SCOPE SESSION
|
||||
VARIABLE_TYPE ENUM
|
||||
VARIABLE_COMMENT Unused
|
||||
NUMERIC_MIN_VALUE NULL
|
||||
NUMERIC_MAX_VALUE NULL
|
||||
NUMERIC_BLOCK_SIZE NULL
|
||||
ENUM_VALUE_LIST DEFAULT,COPY,INPLACE,NOCOPY,INSTANT
|
||||
READ_ONLY NO
|
||||
COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
GLOBAL_VALUE_PATH NULL
|
||||
set alter_algorithm=COPY;
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
select @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
DEFAULT
|
||||
set statement alter_algorithm=COPY FOR SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
DEFAULT
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
# restart: --alter-algorithm=COPY
|
||||
select @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
DEFAULT
|
||||
# End of 11.5 tests
|
||||
|
@ -6,6 +6,7 @@
|
||||
--source include/default_charset.inc
|
||||
|
||||
call mtr.add_suppression("character set is multi-byte");
|
||||
call mtr.add_suppression("exists only for compatibility");
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
@ -269,3 +270,21 @@ set myisam_repair_threads = default;
|
||||
drop table t1;
|
||||
|
||||
--echo # End of 10.2 tests
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-33737 The way of ignoring alter-algorithm is inconsistent with
|
||||
--echo # other options and with itself
|
||||
--echo #
|
||||
|
||||
query_vertical select * from information_schema.system_variables where variable_name = 'ALTER_ALGORITHM';
|
||||
|
||||
set alter_algorithm=COPY;
|
||||
select @@alter_algorithm;
|
||||
set statement alter_algorithm=COPY FOR SELECT @@alter_algorithm;
|
||||
|
||||
--let $restart_parameters= --alter-algorithm=COPY
|
||||
--source include/restart_mysqld.inc
|
||||
|
||||
select @@alter_algorithm;
|
||||
|
||||
--echo # End of 11.5 tests
|
||||
|
@ -20,6 +20,10 @@ SET @save_wsrep_mode=@@WSREP_MODE;
|
||||
|
||||
# Apply on node_1
|
||||
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
'binlog stationary as expected'
|
||||
SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
|
||||
@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@WSREP_ON @@SQL_LOG_BIN
|
||||
@ -73,6 +77,10 @@ COUNT(*)
|
||||
|
||||
connection node_1;
|
||||
SET GLOBAL WSREP_MODE='REPLICATE_ARIA,REPLICATE_MYISAM';
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
'binlog stationary as expected'
|
||||
SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
|
||||
@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@WSREP_ON @@SQL_LOG_BIN
|
||||
@ -128,6 +136,10 @@ COUNT(*)
|
||||
# Apply on node_1
|
||||
|
||||
connection node_1;
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
'binlog advanced as expected'
|
||||
SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
|
||||
@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@WSREP_ON @@SQL_LOG_BIN
|
||||
@ -186,6 +198,10 @@ TRUNCATE TABLE time_zone_leap_second;
|
||||
|
||||
connection node_1;
|
||||
SET GLOBAL WSREP_MODE='';
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
'binlog advanced as expected'
|
||||
SELECT @wsrep_is_on, @wsrep_cannot_replicate_tz, @save_wsrep_on, @save_sql_log_bin, @@WSREP_ON, @@SQL_LOG_BIN;
|
||||
@wsrep_is_on @wsrep_cannot_replicate_tz @save_wsrep_on @save_sql_log_bin @@WSREP_ON @@SQL_LOG_BIN
|
||||
|
@ -1,150 +0,0 @@
|
||||
--- alter_algorithm.result
|
||||
+++ alter_algorithm.reject
|
||||
@@ -7,40 +7,40 @@
|
||||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
-COPY
|
||||
+INPLACE
|
||||
# All the following cases needs table rebuild
|
||||
# Add and Drop primary key
|
||||
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Make existing column NULLABLE
|
||||
ALTER TABLE t1 MODIFY f2 INT;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Drop Stored Column
|
||||
ALTER TABLE t1 DROP COLUMN f5;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add base non-generated column as a last column in the compressed table
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add base non-generated column but not in the last position
|
||||
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Force the table to rebuild
|
||||
ALTER TABLE t1 FORCE;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Row format changes
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Engine table
|
||||
ALTER TABLE t1 ENGINE=INNODB;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
@@ -56,22 +56,22 @@
|
||||
FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
||||
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX idx, page_compression_level=5;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX f4, page_compression_level=9;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t2, t1;
|
||||
affected rows: 0
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
@@ -84,28 +84,27 @@
|
||||
INSERT INTO t1(f1, f2) VALUES(1, 1);
|
||||
# Add column at the end of the table
|
||||
ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL';
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Change virtual column expression
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add virtual column
|
||||
ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename Column
|
||||
ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename table
|
||||
ALTER TABLE t1 RENAME t3;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
# Drop Virtual Column
|
||||
ALTER TABLE t3 DROP COLUMN vcol;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Column length varies
|
||||
ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20);
|
||||
affected rows: 0
|
||||
@@ -113,12 +112,12 @@
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 1;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 DROP FOREIGN KEY fidx;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t3, t2;
|
||||
affected rows: 0
|
@ -1,137 +0,0 @@
|
||||
--- alter_algorithm.result
|
||||
+++ alter_algorithm.reject
|
||||
@@ -7,40 +7,32 @@
|
||||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
-COPY
|
||||
+INSTANT
|
||||
# All the following cases needs table rebuild
|
||||
# Add and Drop primary key
|
||||
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Make existing column NULLABLE
|
||||
ALTER TABLE t1 MODIFY f2 INT;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Drop Stored Column
|
||||
ALTER TABLE t1 DROP COLUMN f5;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Add base non-generated column as a last column in the compressed table
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Add base non-generated column but not in the last position
|
||||
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Force the table to rebuild
|
||||
ALTER TABLE t1 FORCE;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Row format changes
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Engine table
|
||||
ALTER TABLE t1 ENGINE=INNODB;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
@@ -56,22 +48,17 @@
|
||||
FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
||||
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
||||
ALTER TABLE t1 DROP INDEX idx, page_compression_level=5;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
||||
ALTER TABLE t1 DROP INDEX f4, page_compression_level=9;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
||||
DROP TABLE t2, t1;
|
||||
affected rows: 0
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
@@ -84,28 +71,27 @@
|
||||
INSERT INTO t1(f1, f2) VALUES(1, 1);
|
||||
# Add column at the end of the table
|
||||
ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL';
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Change virtual column expression
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add virtual column
|
||||
ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename Column
|
||||
ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename table
|
||||
ALTER TABLE t1 RENAME t3;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
# Drop Virtual Column
|
||||
ALTER TABLE t3 DROP COLUMN vcol;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Column length varies
|
||||
ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20);
|
||||
affected rows: 0
|
||||
@@ -113,12 +99,12 @@
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 1;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 DROP FOREIGN KEY fidx;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t3, t2;
|
||||
affected rows: 0
|
@ -1,142 +0,0 @@
|
||||
--- alter_algorithm.result
|
||||
+++ alter_algorithm.reject
|
||||
@@ -7,40 +7,32 @@
|
||||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
-COPY
|
||||
+NOCOPY
|
||||
# All the following cases needs table rebuild
|
||||
# Add and Drop primary key
|
||||
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Make existing column NULLABLE
|
||||
ALTER TABLE t1 MODIFY f2 INT;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Drop Stored Column
|
||||
ALTER TABLE t1 DROP COLUMN f5;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Add base non-generated column as a last column in the compressed table
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Add base non-generated column but not in the last position
|
||||
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Force the table to rebuild
|
||||
ALTER TABLE t1 FORCE;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Row format changes
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
# Engine table
|
||||
ALTER TABLE t1 ENGINE=INNODB;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+Got one of the listed errors
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
@@ -56,22 +48,22 @@
|
||||
FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
||||
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX idx, page_compression_level=5;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX f4, page_compression_level=9;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t2, t1;
|
||||
affected rows: 0
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
@@ -84,28 +76,27 @@
|
||||
INSERT INTO t1(f1, f2) VALUES(1, 1);
|
||||
# Add column at the end of the table
|
||||
ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL';
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Change virtual column expression
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add virtual column
|
||||
ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename Column
|
||||
ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename table
|
||||
ALTER TABLE t1 RENAME t3;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
# Drop Virtual Column
|
||||
ALTER TABLE t3 DROP COLUMN vcol;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Column length varies
|
||||
ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20);
|
||||
affected rows: 0
|
||||
@@ -113,12 +104,12 @@
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1);
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 1;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 DROP FOREIGN KEY fidx;
|
||||
-affected rows: 1
|
||||
-info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
+affected rows: 0
|
||||
+info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t3, t2;
|
||||
affected rows: 0
|
@ -1,3 +1,6 @@
|
||||
#
|
||||
# sql_mode: alter_algorithm: COPY
|
||||
#
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT NULL,
|
||||
@ -5,40 +8,37 @@ f4 INT as (f2) STORED,
|
||||
f5 INT as (f3) STORED,
|
||||
PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
COPY
|
||||
# All the following cases needs table rebuild
|
||||
# Add and Drop primary key
|
||||
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
|
||||
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1), ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Make existing column NULLABLE
|
||||
ALTER TABLE t1 MODIFY f2 INT;
|
||||
ALTER TABLE t1 MODIFY f2 INT, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Drop Stored Column
|
||||
ALTER TABLE t1 DROP COLUMN f5;
|
||||
ALTER TABLE t1 DROP COLUMN f5, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Add base non-generated column as a last column in the compressed table
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Add base non-generated column but not in the last position
|
||||
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
|
||||
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Force the table to rebuild
|
||||
ALTER TABLE t1 FORCE;
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Row format changes
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Engine table
|
||||
ALTER TABLE t1 ENGINE=INNODB;
|
||||
ALTER TABLE t1 ENGINE=INNODB, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
|
||||
@ -55,21 +55,21 @@ CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1),
|
||||
FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
||||
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
|
||||
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX idx, page_compression_level=5;
|
||||
ALTER TABLE t1 DROP INDEX idx, page_compression_level=5, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2), ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX f4, page_compression_level=9;
|
||||
ALTER TABLE t1 DROP INDEX f4, page_compression_level=9, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1), ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t2, t1;
|
||||
@ -83,42 +83,390 @@ f3 VARCHAR(10),
|
||||
INDEX(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2) VALUES(1, 1);
|
||||
# Add column at the end of the table
|
||||
ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL';
|
||||
ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL', ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Change virtual column expression
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL;
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Add virtual column
|
||||
ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL;
|
||||
ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Rename Column
|
||||
ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL;
|
||||
ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Rename table
|
||||
ALTER TABLE t1 RENAME t3;
|
||||
ALTER TABLE t1 RENAME t3, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Drop Virtual Column
|
||||
ALTER TABLE t3 DROP COLUMN vcol;
|
||||
ALTER TABLE t3 DROP COLUMN vcol, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
# Column length varies
|
||||
ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20);
|
||||
ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20), ALGORITHM=COPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1);
|
||||
ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1), ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 1;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 DROP FOREIGN KEY fidx;
|
||||
ALTER TABLE t3 DROP FOREIGN KEY fidx, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t3, t2;
|
||||
affected rows: 0
|
||||
#
|
||||
# sql_mode: alter_algorithm: INPLACE
|
||||
#
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT NULL,
|
||||
f4 INT as (f2) STORED,
|
||||
f5 INT as (f3) STORED,
|
||||
PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
|
||||
# All the following cases needs table rebuild
|
||||
# Add and Drop primary key
|
||||
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1), ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Make existing column NULLABLE
|
||||
ALTER TABLE t1 MODIFY f2 INT, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Drop Stored Column
|
||||
ALTER TABLE t1 DROP COLUMN f5, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add base non-generated column as a last column in the compressed table
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add base non-generated column but not in the last position
|
||||
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Force the table to rebuild
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Row format changes
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Engine table
|
||||
ALTER TABLE t1 ENGINE=INNODB, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
affected rows: 0
|
||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
f4 INT NOT NULL UNIQUE,
|
||||
f5 INT NOT NULL,
|
||||
INDEX idx(f2))ENGINE=INNODB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1),
|
||||
FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
||||
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX idx, page_compression_level=5, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2), ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX f4, page_compression_level=9, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1), ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t2, t1;
|
||||
affected rows: 0
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
INDEX idx (f2))engine=innodb;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
f3 VARCHAR(10),
|
||||
INDEX(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2) VALUES(1, 1);
|
||||
# Add column at the end of the table
|
||||
ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL', ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Change virtual column expression
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add virtual column
|
||||
ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename Column
|
||||
ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename table
|
||||
ALTER TABLE t1 RENAME t3, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
# Drop Virtual Column
|
||||
ALTER TABLE t3 DROP COLUMN vcol, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Column length varies
|
||||
ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20), ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1), ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 1;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 DROP FOREIGN KEY fidx, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t3, t2;
|
||||
affected rows: 0
|
||||
#
|
||||
# sql_mode: alter_algorithm: NOCOPY
|
||||
#
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT NULL,
|
||||
f4 INT as (f2) STORED,
|
||||
f5 INT as (f3) STORED,
|
||||
PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
|
||||
# All the following cases needs table rebuild
|
||||
# Add and Drop primary key
|
||||
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1), ALGORITHM=NOCOPY;
|
||||
Got one of the listed errors
|
||||
# Make existing column NULLABLE
|
||||
ALTER TABLE t1 MODIFY f2 INT, ALGORITHM=NOCOPY;
|
||||
Got one of the listed errors
|
||||
# Drop Stored Column
|
||||
ALTER TABLE t1 DROP COLUMN f5, ALGORITHM=NOCOPY;
|
||||
Got one of the listed errors
|
||||
# Add base non-generated column as a last column in the compressed table
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL, ALGORITHM=NOCOPY;
|
||||
Got one of the listed errors
|
||||
# Add base non-generated column but not in the last position
|
||||
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3, ALGORITHM=NOCOPY;
|
||||
Got one of the listed errors
|
||||
# Force the table to rebuild
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=NOCOPY;
|
||||
Got one of the listed errors
|
||||
# Row format changes
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED, ALGORITHM=NOCOPY;
|
||||
Got one of the listed errors
|
||||
# Engine table
|
||||
ALTER TABLE t1 ENGINE=INNODB, ALGORITHM=NOCOPY;
|
||||
Got one of the listed errors
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
affected rows: 0
|
||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
f4 INT NOT NULL UNIQUE,
|
||||
f5 INT NOT NULL,
|
||||
INDEX idx(f2))ENGINE=INNODB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1),
|
||||
FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
||||
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1, ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX idx, page_compression_level=5, ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2), ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
ALTER TABLE t1 DROP INDEX f4, page_compression_level=9, ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1), ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t2, t1;
|
||||
affected rows: 0
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
INDEX idx (f2))engine=innodb;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
f3 VARCHAR(10),
|
||||
INDEX(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2) VALUES(1, 1);
|
||||
# Add column at the end of the table
|
||||
ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL', ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Change virtual column expression
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL, ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add virtual column
|
||||
ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL, ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename Column
|
||||
ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL, ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename table
|
||||
ALTER TABLE t1 RENAME t3, ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
# Drop Virtual Column
|
||||
ALTER TABLE t3 DROP COLUMN vcol, ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Column length varies
|
||||
ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20), ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1), ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 1;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 DROP FOREIGN KEY fidx, ALGORITHM=NOCOPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t3, t2;
|
||||
affected rows: 0
|
||||
#
|
||||
# sql_mode: alter_algorithm: INSTANT
|
||||
#
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT NULL,
|
||||
f4 INT as (f2) STORED,
|
||||
f5 INT as (f3) STORED,
|
||||
PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
|
||||
# All the following cases needs table rebuild
|
||||
# Add and Drop primary key
|
||||
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1), ALGORITHM=INSTANT;
|
||||
Got one of the listed errors
|
||||
# Make existing column NULLABLE
|
||||
ALTER TABLE t1 MODIFY f2 INT, ALGORITHM=INSTANT;
|
||||
Got one of the listed errors
|
||||
# Drop Stored Column
|
||||
ALTER TABLE t1 DROP COLUMN f5, ALGORITHM=INSTANT;
|
||||
Got one of the listed errors
|
||||
# Add base non-generated column as a last column in the compressed table
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL, ALGORITHM=INSTANT;
|
||||
Got one of the listed errors
|
||||
# Add base non-generated column but not in the last position
|
||||
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3, ALGORITHM=INSTANT;
|
||||
Got one of the listed errors
|
||||
# Force the table to rebuild
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=INSTANT;
|
||||
Got one of the listed errors
|
||||
# Row format changes
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED, ALGORITHM=INSTANT;
|
||||
Got one of the listed errors
|
||||
# Engine table
|
||||
ALTER TABLE t1 ENGINE=INNODB, ALGORITHM=INSTANT;
|
||||
Got one of the listed errors
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
affected rows: 0
|
||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
f4 INT NOT NULL UNIQUE,
|
||||
f5 INT NOT NULL,
|
||||
INDEX idx(f2))ENGINE=INNODB;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1),
|
||||
FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
||||
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1, ALGORITHM=INSTANT;
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
||||
ALTER TABLE t1 DROP INDEX idx, page_compression_level=5, ALGORITHM=INSTANT;
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2), ALGORITHM=INSTANT;
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
||||
ALTER TABLE t1 DROP INDEX f4, page_compression_level=9, ALGORITHM=INSTANT;
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1), ALGORITHM=INSTANT;
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
||||
DROP TABLE t2, t1;
|
||||
affected rows: 0
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
INDEX idx (f2))engine=innodb;
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
f3 VARCHAR(10),
|
||||
INDEX(f1))ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2) VALUES(1, 1);
|
||||
# Add column at the end of the table
|
||||
ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL', ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Change virtual column expression
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL, ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Add virtual column
|
||||
ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL, ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename Column
|
||||
ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL, ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Rename table
|
||||
ALTER TABLE t1 RENAME t3, ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
# Drop Virtual Column
|
||||
ALTER TABLE t3 DROP COLUMN vcol, ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
# Column length varies
|
||||
ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20), ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 0;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1), ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
SET foreign_key_checks = 1;
|
||||
affected rows: 0
|
||||
ALTER TABLE t3 DROP FOREIGN KEY fidx, ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t3, t2;
|
||||
affected rows: 0
|
||||
|
@ -1,7 +1,5 @@
|
||||
CREATE TABLE t1 (a INT)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
SET alter_algorithm='INPLACE';
|
||||
affected rows: 0
|
||||
PREPARE stmt FROM 'ALTER TABLE t1 ADD KEY idx(a)';
|
||||
affected rows: 0
|
||||
info: Statement prepared
|
||||
@ -18,20 +16,6 @@ BEGIN
|
||||
ALTER TABLE t1 DROP KEY idx2;
|
||||
END|
|
||||
affected rows: 0
|
||||
SET alter_algorithm='COPY';
|
||||
affected rows: 0
|
||||
EXECUTE stmt;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
EXECUTE stmt1;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 0
|
||||
call p1();
|
||||
affected rows: 1
|
||||
call p2();
|
||||
affected rows: 1
|
||||
SET alter_algorithm='NOCOPY';
|
||||
affected rows: 0
|
||||
EXECUTE stmt;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
@ -42,12 +26,6 @@ call p1();
|
||||
affected rows: 0
|
||||
call p2();
|
||||
affected rows: 0
|
||||
SET alter_algorithm='INSTANT';
|
||||
affected rows: 0
|
||||
EXECUTE stmt;
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
||||
call p1();
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
|
||||
DROP TABLE t1;
|
||||
affected rows: 0
|
||||
DROP PROCEDURE p1;
|
||||
@ -64,9 +42,7 @@ affected rows: 0
|
||||
INSERT INTO t1 VALUES(1,1),(2,2),(3,3);
|
||||
affected rows: 3
|
||||
info: Records: 3 Duplicates: 0 Warnings: 0
|
||||
SET ALTER_ALGORITHM=INSTANT;
|
||||
affected rows: 0
|
||||
ALTER TABLE t1 DROP COLUMN col1;
|
||||
ALTER TABLE t1 DROP COLUMN col1, ALGORITHM=INSTANT;
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: innodb_instant_alter_column_allowed=never. Try ALGORITHM=INPLACE
|
||||
ALTER TABLE t1 DROP COLUMN col1, ALGORITHM=NOCOPY;
|
||||
ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: innodb_instant_alter_column_allowed=never. Try ALGORITHM=INPLACE
|
||||
|
@ -1,79 +0,0 @@
|
||||
--- alter_not_null.result
|
||||
+++ alter_not_null,COPY,NON-STRICT.result~
|
||||
@@ -4,8 +4,8 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
+affected rows: 1
|
||||
+info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
@@ -18,8 +18,8 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
+affected rows: 1
|
||||
+info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
@@ -32,8 +32,8 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
+affected rows: 1
|
||||
+info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
@@ -46,8 +46,8 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc';
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
+affected rows: 1
|
||||
+info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
@@ -60,8 +60,8 @@
|
||||
f1 f2 f3
|
||||
2 2 NULL
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2);
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
+affected rows: 1
|
||||
+info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
SELECT * FROM t1;
|
||||
@@ -74,8 +74,8 @@
|
||||
f1 b
|
||||
10 NULL
|
||||
ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0);
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
+affected rows: 1
|
||||
+info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'b' at row 1
|
||||
SELECT * FROM t1;
|
||||
@@ -95,8 +95,8 @@
|
||||
CREATE TABLE t1(c1 INT NOT NULL, c2 INT, PRIMARY KEY(c1))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(1, NULL);
|
||||
ALTER IGNORE TABLE t1 CHANGE c2 c2 INT NOT NULL DEFAULT 2;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
+affected rows: 1
|
||||
+info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c2' at row 1
|
||||
SELECT * FROM t1;
|
@ -1,109 +0,0 @@
|
||||
--- alter_not_null.result
|
||||
+++ alter_not_null,COPY,STRICT.result~
|
||||
@@ -4,13 +4,10 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f1' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
-0
|
||||
+NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 CHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
@@ -18,13 +15,10 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f1' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
-
|
||||
+NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 VARCHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
@@ -32,13 +26,10 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f1' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
-
|
||||
+NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 TEXT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
@@ -46,13 +37,10 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc';
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f1' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
-
|
||||
+NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, f3 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(2, 2, NULL);
|
||||
@@ -60,13 +48,10 @@
|
||||
f1 f2 f3
|
||||
2 2 NULL
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2);
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f3' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f3' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 f2 f3
|
||||
-2 2 0
|
||||
+2 2 NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL DEFAULT 0, b TINYINT)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(10, NULL);
|
||||
@@ -74,13 +59,10 @@
|
||||
f1 b
|
||||
10 NULL
|
||||
ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0);
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'b' at row 1
|
||||
+ERROR 01000: Data truncated for column 'b' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 b
|
||||
-10 0
|
||||
+10 NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT, v INT AS (a), c INT, d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP COLUMN c, CHANGE COLUMN e e INT NOT NULL;
|
||||
@@ -95,8 +77,8 @@
|
||||
CREATE TABLE t1(c1 INT NOT NULL, c2 INT, PRIMARY KEY(c1))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(1, NULL);
|
||||
ALTER IGNORE TABLE t1 CHANGE c2 c2 INT NOT NULL DEFAULT 2;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
+affected rows: 1
|
||||
+info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c2' at row 1
|
||||
SELECT * FROM t1;
|
@ -1,98 +0,0 @@
|
||||
--- alter_not_null.result
|
||||
+++ alter_not_null,INPLACE,STRICT.result~
|
||||
@@ -4,13 +4,10 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f1' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
-0
|
||||
+NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 CHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
@@ -18,13 +15,10 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f1' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
-
|
||||
+NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 VARCHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
@@ -32,13 +26,10 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL;
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f1' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
-
|
||||
+NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 TEXT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
@@ -46,13 +37,10 @@
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc';
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f1' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
-
|
||||
+NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, f3 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(2, 2, NULL);
|
||||
@@ -60,13 +48,10 @@
|
||||
f1 f2 f3
|
||||
2 2 NULL
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2);
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'f3' at row 1
|
||||
+ERROR 01000: Data truncated for column 'f3' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 f2 f3
|
||||
-2 2 0
|
||||
+2 2 NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL DEFAULT 0, b TINYINT)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(10, NULL);
|
||||
@@ -74,13 +59,10 @@
|
||||
f1 b
|
||||
10 NULL
|
||||
ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0);
|
||||
-affected rows: 0
|
||||
-info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
-Warnings:
|
||||
-Warning 1265 Data truncated for column 'b' at row 1
|
||||
+ERROR 01000: Data truncated for column 'b' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 b
|
||||
-10 0
|
||||
+10 NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT, v INT AS (a), c INT, d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP COLUMN c, CHANGE COLUMN e e INT NOT NULL;
|
198
mysql-test/suite/innodb/r/alter_not_null,STRICT.result
Normal file
198
mysql-test/suite/innodb/r/alter_not_null,STRICT.result
Normal file
@ -0,0 +1,198 @@
|
||||
#
|
||||
# sql_mode: STRICT_TRANS_TABLES alter_algorithm: COPY
|
||||
#
|
||||
CREATE TABLE t1(f1 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL, ALGORITHM=COPY;
|
||||
ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 CHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL, ALGORITHM=COPY;
|
||||
ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 VARCHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL, ALGORITHM=COPY;
|
||||
ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 TEXT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc', ALGORITHM=COPY;
|
||||
ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, f3 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(2, 2, NULL);
|
||||
SELECT * FROM t1;
|
||||
f1 f2 f3
|
||||
2 2 NULL
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2), ALGORITHM=COPY;
|
||||
ERROR 01000: Data truncated for column 'f3' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 f2 f3
|
||||
2 2 NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL DEFAULT 0, b TINYINT)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(10, NULL);
|
||||
SELECT * FROM t1;
|
||||
f1 b
|
||||
10 NULL
|
||||
ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0), ALGORITHM=COPY;
|
||||
ERROR 01000: Data truncated for column 'b' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 b
|
||||
10 NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT, v INT AS (a), c INT, d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP COLUMN c, CHANGE COLUMN e e INT NOT NULL, ALGORITHM=COPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, v INT AS (a), d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=COPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 INT NOT NULL, c2 INT, PRIMARY KEY(c1))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(1, NULL);
|
||||
ALTER IGNORE TABLE t1 CHANGE c2 c2 INT NOT NULL DEFAULT 2;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c2' at row 1
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 0
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-16126 Crash or ASAN heap-buffer-overflow in
|
||||
# mach_read_from_n_little_endian upon ALTER TABLE with blob
|
||||
#
|
||||
CREATE TABLE t1(a INT, v INT AS (a), b INT, c BLOB) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=COPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# sql_mode: STRICT_TRANS_TABLES alter_algorithm: INPLACE
|
||||
#
|
||||
CREATE TABLE t1(f1 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL, ALGORITHM=INPLACE;
|
||||
ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 CHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL, ALGORITHM=INPLACE;
|
||||
ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 VARCHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL, ALGORITHM=INPLACE;
|
||||
ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 TEXT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc', ALGORITHM=INPLACE;
|
||||
ERROR 01000: Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, f3 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(2, 2, NULL);
|
||||
SELECT * FROM t1;
|
||||
f1 f2 f3
|
||||
2 2 NULL
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2), ALGORITHM=INPLACE;
|
||||
ERROR 01000: Data truncated for column 'f3' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 f2 f3
|
||||
2 2 NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL DEFAULT 0, b TINYINT)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(10, NULL);
|
||||
SELECT * FROM t1;
|
||||
f1 b
|
||||
10 NULL
|
||||
ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0), ALGORITHM=INPLACE;
|
||||
ERROR 01000: Data truncated for column 'b' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 b
|
||||
10 NULL
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT, v INT AS (a), c INT, d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP COLUMN c, CHANGE COLUMN e e INT NOT NULL, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, v INT AS (a), d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 INT NOT NULL, c2 INT, PRIMARY KEY(c1))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(1, NULL);
|
||||
ALTER IGNORE TABLE t1 CHANGE c2 c2 INT NOT NULL DEFAULT 2;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c2' at row 1
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 0
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-16126 Crash or ASAN heap-buffer-overflow in
|
||||
# mach_read_from_n_little_endian upon ALTER TABLE with blob
|
||||
#
|
||||
CREATE TABLE t1(a INT, v INT AS (a), b INT, c BLOB) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
@ -1,11 +1,14 @@
|
||||
#
|
||||
# sql_mode: alter_algorithm: COPY
|
||||
#
|
||||
CREATE TABLE t1(f1 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
@ -17,9 +20,9 @@ INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
@ -31,9 +34,9 @@ INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL, ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
@ -45,9 +48,9 @@ INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc';
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc', ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
@ -59,9 +62,9 @@ INSERT INTO t1 VALUES(2, 2, NULL);
|
||||
SELECT * FROM t1;
|
||||
f1 f2 f3
|
||||
2 2 NULL
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2);
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2), ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
SELECT * FROM t1;
|
||||
@ -73,9 +76,9 @@ INSERT INTO t1 VALUES(10, NULL);
|
||||
SELECT * FROM t1;
|
||||
f1 b
|
||||
10 NULL
|
||||
ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0);
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0), ALGORITHM=COPY;
|
||||
affected rows: 1
|
||||
info: Records: 1 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'b' at row 1
|
||||
SELECT * FROM t1;
|
||||
@ -83,12 +86,12 @@ f1 b
|
||||
10 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT, v INT AS (a), c INT, d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP COLUMN c, CHANGE COLUMN e e INT NOT NULL;
|
||||
ALTER TABLE t1 DROP COLUMN c, CHANGE COLUMN e e INT NOT NULL, ALGORITHM=COPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, v INT AS (a), d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 FORCE;
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=COPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
@ -108,7 +111,124 @@ DROP TABLE t1;
|
||||
# mach_read_from_n_little_endian upon ALTER TABLE with blob
|
||||
#
|
||||
CREATE TABLE t1(a INT, v INT AS (a), b INT, c BLOB) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(b);
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=COPY;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# sql_mode: alter_algorithm: INPLACE
|
||||
#
|
||||
CREATE TABLE t1(f1 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 CHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 VARCHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 TEXT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
NULL
|
||||
ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc', ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1
|
||||
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, f3 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(2, 2, NULL);
|
||||
SELECT * FROM t1;
|
||||
f1 f2 f3
|
||||
2 2 NULL
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2), ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f3' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 f2 f3
|
||||
2 2 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(f1 INT NOT NULL DEFAULT 0, b TINYINT)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(10, NULL);
|
||||
SELECT * FROM t1;
|
||||
f1 b
|
||||
10 NULL
|
||||
ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0), ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'b' at row 1
|
||||
SELECT * FROM t1;
|
||||
f1 b
|
||||
10 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a INT, v INT AS (a), c INT, d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 DROP COLUMN c, CHANGE COLUMN e e INT NOT NULL, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a INT, v INT AS (a), d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(c1 INT NOT NULL, c2 INT, PRIMARY KEY(c1))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(1, NULL);
|
||||
ALTER IGNORE TABLE t1 CHANGE c2 c2 INT NOT NULL DEFAULT 2;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 1
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'c2' at row 1
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
1 0
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# MDEV-16126 Crash or ASAN heap-buffer-overflow in
|
||||
# mach_read_from_n_little_endian upon ALTER TABLE with blob
|
||||
#
|
||||
CREATE TABLE t1(a INT, v INT AS (a), b INT, c BLOB) ENGINE=InnoDB;
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=INPLACE;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
|
@ -1,18 +1,3 @@
|
||||
set alter_algorithm=0;
|
||||
create table bug53592(a int) engine=innodb row_format=compact;
|
||||
alter table bug53592 add column b text charset utf8;
|
||||
alter table bug53592 add column c blob not null;
|
||||
create index bug53592_b on bug53592(b(81));
|
||||
create unique index bug53592_c on bug53592(c(1));
|
||||
set statement sql_mode = '' for
|
||||
replace into bug53592 values (),();
|
||||
Warnings:
|
||||
Warning 1364 Field 'c' doesn't have a default value
|
||||
check table bug53592;
|
||||
Table Op Msg_type Msg_text
|
||||
test.bug53592 check status OK
|
||||
drop table bug53592;
|
||||
set alter_algorithm=1;
|
||||
create table bug53592(a int) engine=innodb row_format=compact;
|
||||
alter table bug53592 add column b text charset utf8;
|
||||
alter table bug53592 add column c blob not null;
|
||||
|
1
mysql-test/suite/innodb/t/alter_algorithm-master.opt
Normal file
1
mysql-test/suite/innodb/t/alter_algorithm-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--skip-innodb-read-only-compressed
|
@ -1,15 +0,0 @@
|
||||
[COPY]
|
||||
--alter_algorithm=copy
|
||||
--skip-innodb-read-only-compressed
|
||||
|
||||
[INPLACE]
|
||||
--alter_algorithm=inplace
|
||||
--skip-innodb-read-only-compressed
|
||||
|
||||
[NOCOPY]
|
||||
--alter_algorithm=nocopy
|
||||
--skip-innodb-read-only-compressed
|
||||
|
||||
[INSTANT]
|
||||
--alter_algorithm=instant
|
||||
--skip-innodb-read-only-compressed
|
@ -1,2 +1,144 @@
|
||||
# See also alter_algorithm.combinations
|
||||
--source include/have_innodb.inc
|
||||
let $algorithm = $alter_algorithm;
|
||||
let $error_code = 0;
|
||||
|
||||
--echo #
|
||||
--echo # sql_mode: $sql_mode alter_algorithm: $alter_algorithm
|
||||
--echo #
|
||||
|
||||
if ($algorithm == "NOCOPY") {
|
||||
let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON;
|
||||
}
|
||||
|
||||
if ($algorithm == "INSTANT") {
|
||||
let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON;
|
||||
}
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT NULL,
|
||||
f4 INT as (f2) STORED,
|
||||
f5 INT as (f3) STORED,
|
||||
PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
|
||||
|
||||
--enable_info
|
||||
--echo # All the following cases needs table rebuild
|
||||
|
||||
--echo # Add and Drop primary key
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1), ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Make existing column NULLABLE
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 MODIFY f2 INT, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Drop Stored Column
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 DROP COLUMN f5, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Add base non-generated column as a last column in the compressed table
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Add base non-generated column but not in the last position
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Force the table to rebuild
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 FORCE, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Row format changes
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 ROW_FORMAT=COMPRESSED, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Engine table
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 ENGINE=INNODB, ALGORITHM=$alter_algorithm
|
||||
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
|
||||
|
||||
DROP TABLE t1;
|
||||
--disable_info
|
||||
|
||||
if ($algorithm == "NOCOPY") {
|
||||
let $error_code = 0;
|
||||
}
|
||||
|
||||
if ($algorithm == "INSTANT") {
|
||||
let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED_REASON;
|
||||
}
|
||||
|
||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
f4 INT NOT NULL UNIQUE,
|
||||
f5 INT NOT NULL,
|
||||
INDEX idx(f2))ENGINE=INNODB;
|
||||
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1),
|
||||
FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
|
||||
|
||||
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
||||
|
||||
--enable_info
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1, ALGORITHM=$alter_algorithm
|
||||
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 DROP INDEX idx, page_compression_level=5, ALGORITHM=$alter_algorithm
|
||||
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 ADD UNIQUE INDEX u1(f2), ALGORITHM=$alter_algorithm
|
||||
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 DROP INDEX f4, page_compression_level=9, ALGORITHM=$alter_algorithm
|
||||
|
||||
SET foreign_key_checks = 0;
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1), ALGORITHM=$alter_algorithm
|
||||
|
||||
DROP TABLE t2, t1;
|
||||
--disable_info
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
INDEX idx (f2))engine=innodb;
|
||||
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
f3 VARCHAR(10),
|
||||
INDEX(f1))ENGINE=INNODB;
|
||||
|
||||
INSERT INTO t1(f1, f2) VALUES(1, 1);
|
||||
|
||||
--enable_info
|
||||
--echo # Add column at the end of the table
|
||||
--eval ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL', ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Change virtual column expression
|
||||
--eval ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Add virtual column
|
||||
--eval ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Rename Column
|
||||
--eval ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Rename table
|
||||
--eval ALTER TABLE t1 RENAME t3, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Drop Virtual Column
|
||||
--eval ALTER TABLE t3 DROP COLUMN vcol, ALGORITHM=$alter_algorithm
|
||||
|
||||
--echo # Column length varies
|
||||
--eval ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20), ALGORITHM=$alter_algorithm
|
||||
|
||||
SET foreign_key_checks = 0;
|
||||
--eval ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1), ALGORITHM=$alter_algorithm
|
||||
|
||||
SET foreign_key_checks = 1;
|
||||
--eval ALTER TABLE t3 DROP FOREIGN KEY fidx, ALGORITHM=$alter_algorithm
|
||||
|
||||
DROP TABLE t3, t2;
|
||||
--disable_info
|
||||
|
@ -1,145 +1,10 @@
|
||||
--source include/have_innodb.inc
|
||||
let $algorithm = `SELECT @@ALTER_ALGORITHM`;
|
||||
let $error_code = 0;
|
||||
|
||||
if ($algorithm == "NOCOPY") {
|
||||
let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON;
|
||||
}
|
||||
|
||||
if ($algorithm == "INSTANT") {
|
||||
let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON;
|
||||
}
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT NULL,
|
||||
f4 INT as (f2) STORED,
|
||||
f5 INT as (f3) STORED,
|
||||
PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB;
|
||||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
|
||||
|
||||
SELECT @@alter_algorithm;
|
||||
|
||||
--enable_info
|
||||
--echo # All the following cases needs table rebuild
|
||||
|
||||
--echo # Add and Drop primary key
|
||||
--error $error_code
|
||||
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
|
||||
|
||||
--echo # Make existing column NULLABLE
|
||||
--error $error_code
|
||||
ALTER TABLE t1 MODIFY f2 INT;
|
||||
|
||||
--echo # Drop Stored Column
|
||||
--error $error_code
|
||||
ALTER TABLE t1 DROP COLUMN f5;
|
||||
|
||||
--echo # Add base non-generated column as a last column in the compressed table
|
||||
--error $error_code
|
||||
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
|
||||
|
||||
--echo # Add base non-generated column but not in the last position
|
||||
--error $error_code
|
||||
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
|
||||
|
||||
--echo # Force the table to rebuild
|
||||
--error $error_code
|
||||
ALTER TABLE t1 FORCE;
|
||||
|
||||
--echo # Row format changes
|
||||
--error $error_code
|
||||
ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
|
||||
|
||||
--echo # Engine table
|
||||
--error $error_code
|
||||
ALTER TABLE t1 ENGINE=INNODB;
|
||||
|
||||
# Irrespective of alter_algorithm value, the following command
|
||||
# should succeed because of explicitly mentioning ALGORTHM=DEFAULT
|
||||
ALTER TABLE t1 FORCE, ALGORITHM=DEFAULT;
|
||||
|
||||
DROP TABLE t1;
|
||||
--disable_info
|
||||
|
||||
if ($algorithm == "NOCOPY") {
|
||||
let $error_code = 0;
|
||||
}
|
||||
|
||||
if ($algorithm == "INSTANT") {
|
||||
let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED_REASON;
|
||||
}
|
||||
|
||||
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
f4 INT NOT NULL UNIQUE,
|
||||
f5 INT NOT NULL,
|
||||
INDEX idx(f2))ENGINE=INNODB;
|
||||
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
INDEX(f1),
|
||||
FOREIGN KEY fidx(f1) REFERENCES t1(f1))ENGINE=INNODB;
|
||||
|
||||
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
||||
|
||||
--enable_info
|
||||
--error $error_code
|
||||
ALTER TABLE t1 ADD INDEX idx1(f4), page_compressed=1;
|
||||
|
||||
--error $error_code
|
||||
ALTER TABLE t1 DROP INDEX idx, page_compression_level=5;
|
||||
|
||||
--error $error_code
|
||||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
|
||||
|
||||
--error $error_code
|
||||
ALTER TABLE t1 DROP INDEX f4, page_compression_level=9;
|
||||
|
||||
SET foreign_key_checks = 0;
|
||||
--error $error_code
|
||||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
|
||||
|
||||
DROP TABLE t2, t1;
|
||||
--disable_info
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL,
|
||||
f2 INT NOT NULL,
|
||||
f3 INT AS (f2 * f2) VIRTUAL,
|
||||
INDEX idx (f2))engine=innodb;
|
||||
|
||||
CREATE TABLE t2(f1 INT NOT NULL, f2 INT NOT NULL,
|
||||
f3 VARCHAR(10),
|
||||
INDEX(f1))ENGINE=INNODB;
|
||||
|
||||
INSERT INTO t1(f1, f2) VALUES(1, 1);
|
||||
|
||||
--enable_info
|
||||
--echo # Add column at the end of the table
|
||||
ALTER TABLE t1 ADD COLUMN f4 char(100) default 'BIG WALL';
|
||||
|
||||
--echo # Change virtual column expression
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT AS (f2 * f2) VIRTUAL;
|
||||
|
||||
--echo # Add virtual column
|
||||
ALTER TABLE t1 ADD COLUMN f5 INT AS (f2) VIRTUAL;
|
||||
|
||||
--echo # Rename Column
|
||||
ALTER TABLE t1 CHANGE f3 vcol INT AS (f2) VIRTUAL;
|
||||
|
||||
--echo # Rename table
|
||||
ALTER TABLE t1 RENAME t3;
|
||||
|
||||
--echo # Drop Virtual Column
|
||||
ALTER TABLE t3 DROP COLUMN vcol;
|
||||
|
||||
--echo # Column length varies
|
||||
ALTER TABLE t2 CHANGE f3 f3 VARCHAR(20);
|
||||
|
||||
SET foreign_key_checks = 0;
|
||||
ALTER TABLE t3 ADD FOREIGN KEY fidx(f2) REFERENCES t2(f1);
|
||||
|
||||
SET foreign_key_checks = 1;
|
||||
ALTER TABLE t3 DROP FOREIGN KEY fidx;
|
||||
|
||||
DROP TABLE t3, t2;
|
||||
--disable_info
|
||||
let $alter_algorithm=COPY;
|
||||
--source alter_algorithm.inc
|
||||
let $alter_algorithm=INPLACE;
|
||||
--source alter_algorithm.inc
|
||||
let $alter_algorithm=NOCOPY;
|
||||
--source alter_algorithm.inc
|
||||
let $alter_algorithm=INSTANT;
|
||||
--source alter_algorithm.inc
|
||||
|
@ -2,13 +2,7 @@
|
||||
CREATE TABLE t1 (a INT)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
|
||||
# alter_algorithm variable doesn't affect when ALTER stmt
|
||||
# during PREPARE PHASE or CREATE PROCEDURE
|
||||
# Only when execution/call happens, alter uses the alter_algorithm
|
||||
# variable when user does not mention algorithm explicitly.
|
||||
|
||||
--enable_info
|
||||
SET alter_algorithm='INPLACE';
|
||||
PREPARE stmt FROM 'ALTER TABLE t1 ADD KEY idx(a)';
|
||||
PREPARE stmt1 FROM 'ALTER TABLE t1 DROP KEY idx';
|
||||
DELIMITER |;
|
||||
@ -23,24 +17,11 @@ BEGIN
|
||||
END|
|
||||
DELIMITER ;|
|
||||
|
||||
SET alter_algorithm='COPY';
|
||||
EXECUTE stmt;
|
||||
EXECUTE stmt1;
|
||||
call p1();
|
||||
call p2();
|
||||
|
||||
SET alter_algorithm='NOCOPY';
|
||||
EXECUTE stmt;
|
||||
EXECUTE stmt1;
|
||||
call p1();
|
||||
call p2();
|
||||
|
||||
SET alter_algorithm='INSTANT';
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
||||
EXECUTE stmt;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
||||
call p1();
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
@ -51,9 +32,8 @@ SET GLOBAL innodb_instant_alter_column_allowed=never;
|
||||
CREATE TABLE t1(id INT PRIMARY KEY,
|
||||
col1 INT UNSIGNED NOT NULL UNIQUE)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(1,1),(2,2),(3,3);
|
||||
SET ALTER_ALGORITHM=INSTANT;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
||||
ALTER TABLE t1 DROP COLUMN col1;
|
||||
ALTER TABLE t1 DROP COLUMN col1, ALGORITHM=INSTANT;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
|
||||
ALTER TABLE t1 DROP COLUMN col1, ALGORITHM=NOCOPY;
|
||||
ALTER TABLE t1 DROP COLUMN col1, ALGORITHM=DEFAULT;
|
||||
|
@ -1,5 +0,0 @@
|
||||
[COPY]
|
||||
--alter_algorithm=copy
|
||||
|
||||
[INPLACE]
|
||||
--alter_algorithm=inplace
|
106
mysql-test/suite/innodb/t/alter_not_null.inc
Normal file
106
mysql-test/suite/innodb/t/alter_not_null.inc
Normal file
@ -0,0 +1,106 @@
|
||||
# This test is run from alter_not_null.test with different combinations of
|
||||
# alter_algorithm and strict mode
|
||||
|
||||
let $sql_mode = `SELECT @@SQL_MODE`;
|
||||
let $error_code = 0;
|
||||
|
||||
if ($sql_mode == "STRICT_TRANS_TABLES") {
|
||||
let $error_code = WARN_DATA_TRUNCATED;
|
||||
}
|
||||
|
||||
--echo #
|
||||
--echo # sql_mode: $sql_mode alter_algorithm: $alter_algorithm
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(f1 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL, ALGORITHM=$alter_algorithm
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 CHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL, ALGORITHM=$alter_algorithm
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 VARCHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL, ALGORITHM=$alter_algorithm
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 TEXT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc', ALGORITHM=$alter_algorithm
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, f3 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(2, 2, NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2), ALGORITHM=$alter_algorithm
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL DEFAULT 0, b TINYINT)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(10, NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
--eval ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0), ALGORITHM=$alter_algorithm
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(a INT, v INT AS (a), c INT, d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
--enable_info
|
||||
--eval ALTER TABLE t1 DROP COLUMN c, CHANGE COLUMN e e INT NOT NULL, ALGORITHM=$alter_algorithm
|
||||
--disable_info
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a INT, v INT AS (a), d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
--enable_info
|
||||
--eval ALTER TABLE t1 FORCE, ALGORITHM=$alter_algorithm
|
||||
--disable_info
|
||||
DROP TABLE t1;
|
||||
|
||||
# Alter ignore should work irrespective of sql mode
|
||||
|
||||
CREATE TABLE t1(c1 INT NOT NULL, c2 INT, PRIMARY KEY(c1))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(1, NULL);
|
||||
--enable_info
|
||||
ALTER IGNORE TABLE t1 CHANGE c2 c2 INT NOT NULL DEFAULT 2;
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16126 Crash or ASAN heap-buffer-overflow in
|
||||
--echo # mach_read_from_n_little_endian upon ALTER TABLE with blob
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a INT, v INT AS (a), b INT, c BLOB) ENGINE=InnoDB;
|
||||
--enable_info
|
||||
--eval ALTER TABLE t1 ADD PRIMARY KEY(b), ALGORITHM=$alter_algorithm
|
||||
--disable_info
|
||||
DROP TABLE t1;
|
@ -1,102 +1,7 @@
|
||||
--source include/have_innodb.inc
|
||||
# Run with STRICT and NOSCRIPT modes
|
||||
--source alter_sql_mode.inc
|
||||
|
||||
let $sql_mode = `SELECT @@SQL_MODE`;
|
||||
let $error_code = 0;
|
||||
|
||||
if ($sql_mode == "STRICT_TRANS_TABLES") {
|
||||
let $error_code = WARN_DATA_TRUNCATED;
|
||||
}
|
||||
|
||||
CREATE TABLE t1(f1 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
ALTER TABLE t1 CHANGE f1 f1 INT NOT NULL;
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 CHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
ALTER TABLE t1 CHANGE f1 f1 CHAR(10) NOT NULL;
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 VARCHAR(10))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
ALTER TABLE t1 CHANGE f1 f1 VARCHAR(20) NOT NULL;
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 TEXT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
ALTER TABLE t1 CHANGE f1 f1 TEXT NOT NULL DEFAULT 'abc';
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL, f3 INT)ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(2, 2, NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
ALTER TABLE t1 CHANGE f3 f3 INT NOT NULL DEFAULT (f1 + f2);
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(f1 INT NOT NULL DEFAULT 0, b TINYINT)ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES(10, NULL);
|
||||
SELECT * FROM t1;
|
||||
--enable_info
|
||||
--error $error_code
|
||||
ALTER TABLE t1 CHANGE b b TINYINT NOT NULL DEFAULT if(unix_timestamp()>1,1000,0);
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1(a INT, v INT AS (a), c INT, d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
--enable_info
|
||||
ALTER TABLE t1 DROP COLUMN c, CHANGE COLUMN e e INT NOT NULL;
|
||||
--disable_info
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a INT, v INT AS (a), d INT NOT NULL, e INT) ENGINE=InnoDB;
|
||||
--enable_info
|
||||
ALTER TABLE t1 FORCE;
|
||||
--disable_info
|
||||
DROP TABLE t1;
|
||||
|
||||
# Alter ignore should work irrespective of sql mode
|
||||
|
||||
CREATE TABLE t1(c1 INT NOT NULL, c2 INT, PRIMARY KEY(c1))ENGINE=INNODB;
|
||||
INSERT INTO t1 VALUES(1, NULL);
|
||||
--enable_info
|
||||
ALTER IGNORE TABLE t1 CHANGE c2 c2 INT NOT NULL DEFAULT 2;
|
||||
--disable_info
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16126 Crash or ASAN heap-buffer-overflow in
|
||||
--echo # mach_read_from_n_little_endian upon ALTER TABLE with blob
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1(a INT, v INT AS (a), b INT, c BLOB) ENGINE=InnoDB;
|
||||
--enable_info
|
||||
ALTER TABLE t1 ADD PRIMARY KEY(b);
|
||||
--disable_info
|
||||
DROP TABLE t1;
|
||||
let $alter_algorithm=COPY;
|
||||
--source alter_not_null.inc
|
||||
let $alter_algorithm=INPLACE;
|
||||
--source alter_not_null.inc
|
||||
|
@ -4,9 +4,6 @@
|
||||
|
||||
--source include/have_innodb.inc
|
||||
|
||||
# Use FIC for index creation
|
||||
set alter_algorithm=0;
|
||||
|
||||
create table bug53592(a int) engine=innodb row_format=compact;
|
||||
|
||||
alter table bug53592 add column b text charset utf8;
|
||||
@ -33,32 +30,6 @@ check table bug53592;
|
||||
|
||||
drop table bug53592;
|
||||
|
||||
# Running the same set of test when "alter_algorithm" is turned on
|
||||
set alter_algorithm=1;
|
||||
|
||||
create table bug53592(a int) engine=innodb row_format=compact;
|
||||
|
||||
alter table bug53592 add column b text charset utf8;
|
||||
|
||||
alter table bug53592 add column c blob not null;
|
||||
|
||||
# Create a non-unique nonclustered index
|
||||
create index bug53592_b on bug53592(b(81));
|
||||
|
||||
# Create a unique index
|
||||
create unique index bug53592_c on bug53592(c(1));
|
||||
|
||||
# This will trigger a dup key error and will require fetching
|
||||
# the index number through a index structure for the error reporting.
|
||||
# To get the correct index number, the code should go through index
|
||||
# translation table. Otherwise, it will get the wrong index
|
||||
# number and later trigger a server crash.
|
||||
set statement sql_mode = '' for
|
||||
replace into bug53592 values (),();
|
||||
|
||||
check table bug53592;
|
||||
drop table bug53592;
|
||||
|
||||
# Test a dup key reported by foreign key constriant.
|
||||
CREATE TABLE bug53592_1(
|
||||
col1 int, col2 int,
|
||||
|
@ -1,8 +1,6 @@
|
||||
#
|
||||
# MDEV-22649 SIGSEGV in ha_partition::create_partitioning_metadata on ALTER
|
||||
#
|
||||
set @save_alter_algorithm= @@session.alter_algorithm;
|
||||
SET SESSION alter_algorithm=4;
|
||||
CREATE TABLE t1(a INT) engine=myisam PARTITION BY RANGE(a) SUBPARTITION BY KEY(a) (PARTITION p0 VALUES LESS THAN (10) (SUBPARTITION s0,SUBPARTITION s1), PARTITION p1 VALUES LESS THAN (20) (SUBPARTITION s2,SUBPARTITION s3));
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
@ -17,10 +15,9 @@ SUBPARTITION BY KEY (`a`)
|
||||
PARTITION `p1` VALUES LESS THAN (20)
|
||||
(SUBPARTITION `s2` ENGINE = MyISAM,
|
||||
SUBPARTITION `s3` ENGINE = MyISAM))
|
||||
ALTER TABLE t1 ADD COLUMN c INT;
|
||||
ALTER TABLE t1 ADD COLUMN c INT,ALGORITHM=INSTANT;
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=COPY
|
||||
DROP table if exists t1;
|
||||
set @@session.alter_algorithm= @save_alter_algorithm;
|
||||
#
|
||||
# MDEV-22804 SIGSEGV in ha_partition::create_partitioning_metadata |
|
||||
# ERROR 1507 (HY000): Error in list of partitions to DROP
|
||||
|
@ -25,10 +25,7 @@ t2 CREATE TABLE `t2` (
|
||||
`id` int(11) NOT NULL,
|
||||
`name` varchar(30) DEFAULT NULL
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci ROW_FORMAT=COMPACT
|
||||
SET ALTER_ALGORITHM=INSTANT;
|
||||
ALTER TABLE t1 ADD COLUMN col1 VARCHAR(255) NOT NULL DEFAULT repeat('a', 255);
|
||||
ALTER TABLE t1 ADD COLUMN col1 VARCHAR(255) NOT NULL DEFAULT repeat('a', 255), ALGORITHM=INSTANT;
|
||||
ERROR 0A000: ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=INPLACE
|
||||
SET ALTER_ALGORITHM=INPLACE;
|
||||
ALTER TABLE t1 ADD COLUMN col1 VARCHAR(255) NOT NULL DEFAULT repeat('a', 255);
|
||||
ALTER TABLE t1 ADD COLUMN col1 VARCHAR(255) NOT NULL DEFAULT repeat('a', 255), ALGORITHM=INPLACE;
|
||||
DROP TABLE t1, t2;
|
||||
SET ALTER_ALGORITHM=DEFAULT;
|
||||
|
@ -14,15 +14,11 @@
|
||||
--echo # MDEV-22649 SIGSEGV in ha_partition::create_partitioning_metadata on ALTER
|
||||
--echo #
|
||||
|
||||
set @save_alter_algorithm= @@session.alter_algorithm;
|
||||
SET SESSION alter_algorithm=4;
|
||||
CREATE TABLE t1(a INT) engine=myisam PARTITION BY RANGE(a) SUBPARTITION BY KEY(a) (PARTITION p0 VALUES LESS THAN (10) (SUBPARTITION s0,SUBPARTITION s1), PARTITION p1 VALUES LESS THAN (20) (SUBPARTITION s2,SUBPARTITION s3));
|
||||
show create table t1;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
ALTER TABLE t1 ADD COLUMN c INT;
|
||||
ALTER TABLE t1 ADD COLUMN c INT,ALGORITHM=INSTANT;
|
||||
DROP table if exists t1;
|
||||
set @@session.alter_algorithm= @save_alter_algorithm;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-22804 SIGSEGV in ha_partition::create_partitioning_metadata |
|
||||
|
@ -34,10 +34,7 @@ SHOW CREATE TABLE t2;
|
||||
ALTER TABLE t2 REMOVE PARTITIONING;
|
||||
ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
|
||||
SHOW CREATE TABLE t2;
|
||||
SET ALTER_ALGORITHM=INSTANT;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
ALTER TABLE t1 ADD COLUMN col1 VARCHAR(255) NOT NULL DEFAULT repeat('a', 255);
|
||||
SET ALTER_ALGORITHM=INPLACE;
|
||||
ALTER TABLE t1 ADD COLUMN col1 VARCHAR(255) NOT NULL DEFAULT repeat('a', 255);
|
||||
ALTER TABLE t1 ADD COLUMN col1 VARCHAR(255) NOT NULL DEFAULT repeat('a', 255), ALGORITHM=INSTANT;
|
||||
ALTER TABLE t1 ADD COLUMN col1 VARCHAR(255) NOT NULL DEFAULT repeat('a', 255), ALGORITHM=INPLACE;
|
||||
DROP TABLE t1, t2;
|
||||
SET ALTER_ALGORITHM=DEFAULT;
|
||||
|
@ -14,9 +14,8 @@ include/save_master_gtid.inc
|
||||
connection slave;
|
||||
include/sync_with_master_gtid.inc
|
||||
connection master;
|
||||
SET @@session.alter_algorithm='INSTANT';
|
||||
SET @@session.gtid_domain_id=11;
|
||||
ALTER TABLE t1 ADD COLUMN b int;
|
||||
ALTER TABLE t1 ADD COLUMN b int, algorithm=instant;
|
||||
# START Alter having exclusive lock is waiting for the signal
|
||||
connection slave;
|
||||
# FTWRL is sent first to wait for SA
|
||||
@ -43,9 +42,9 @@ Log_name Pos Event_type Server_id End_log_pos Info
|
||||
slave-bin.000001 # Gtid # # GTID #-#-#
|
||||
slave-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT) ENGINE=innodb
|
||||
slave-bin.000001 # Gtid # # GTID #-#-# START ALTER
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN b int
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN b int, algorithm=instant
|
||||
slave-bin.000001 # Gtid # # GTID #-#-# COMMIT ALTER id=#
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN b int
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE t1 ADD COLUMN b int, algorithm=instant
|
||||
connection master;
|
||||
DROP TABLE t1;
|
||||
connection slave;
|
||||
|
@ -7,10 +7,8 @@ a int PRIMARY KEY,
|
||||
b varchar(50),
|
||||
c varchar(50)
|
||||
) CHARACTER SET=latin1 engine=innodb;
|
||||
SET SESSION alter_algorithm='INSTANT';
|
||||
ALTER TABLE tab MODIFY COLUMN b varchar(100);
|
||||
SET SESSION alter_algorithm='NOCOPY';
|
||||
ALTER TABLE tab MODIFY COLUMN c varchar(100);
|
||||
ALTER TABLE tab MODIFY COLUMN b varchar(100), algorithm=instant;
|
||||
ALTER TABLE tab MODIFY COLUMN c varchar(100), algorithm=nocopy;
|
||||
SHOW CREATE TABLE tab;
|
||||
Table Create Table
|
||||
tab CREATE TABLE `tab` (
|
||||
@ -28,13 +26,13 @@ b varchar(50),
|
||||
c varchar(50)
|
||||
) CHARACTER SET=latin1 engine=innodb
|
||||
master-bin.000001 # Gtid # # GTID #-#-# START ALTER
|
||||
master-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN b varchar(100)
|
||||
master-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN b varchar(100), algorithm=instant
|
||||
master-bin.000001 # Gtid # # GTID #-#-# COMMIT ALTER id=#
|
||||
master-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN b varchar(100)
|
||||
master-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN b varchar(100), algorithm=instant
|
||||
master-bin.000001 # Gtid # # GTID #-#-# START ALTER
|
||||
master-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN c varchar(100)
|
||||
master-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN c varchar(100), algorithm=nocopy
|
||||
master-bin.000001 # Gtid # # GTID #-#-# COMMIT ALTER id=#
|
||||
master-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN c varchar(100)
|
||||
master-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN c varchar(100), algorithm=nocopy
|
||||
connection slave;
|
||||
SHOW CREATE TABLE tab;
|
||||
Table Create Table
|
||||
@ -53,13 +51,13 @@ b varchar(50),
|
||||
c varchar(50)
|
||||
) CHARACTER SET=latin1 engine=innodb
|
||||
slave-bin.000001 # Gtid # # GTID #-#-# START ALTER
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN b varchar(100)
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN b varchar(100), algorithm=instant
|
||||
slave-bin.000001 # Gtid # # GTID #-#-# COMMIT ALTER id=#
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN b varchar(100)
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN b varchar(100), algorithm=instant
|
||||
slave-bin.000001 # Gtid # # GTID #-#-# START ALTER
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN c varchar(100)
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN c varchar(100), algorithm=nocopy
|
||||
slave-bin.000001 # Gtid # # GTID #-#-# COMMIT ALTER id=#
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN c varchar(100)
|
||||
slave-bin.000001 # Query # # use `test`; ALTER TABLE tab MODIFY COLUMN c varchar(100), algorithm=nocopy
|
||||
connection master;
|
||||
DROP TABLE tab;
|
||||
connection slave;
|
||||
|
@ -1,493 +0,0 @@
|
||||
include/master-slave.inc
|
||||
[connection master]
|
||||
connection slave;
|
||||
stop slave;
|
||||
change master to master_use_gtid= current_pos;
|
||||
SET GLOBAL slave_parallel_threads=4;
|
||||
set global slave_parallel_mode=optimistic;
|
||||
set global gtid_strict_mode=1;
|
||||
start slave;
|
||||
connection master;
|
||||
set binlog_alter_two_phase=true;
|
||||
create table t1(a int , b int) engine=innodb;
|
||||
create table a1(a int , b int) engine=myisam;
|
||||
create temporary table tmp_tbl(a int, b int) engine=innodb;
|
||||
alter table t1 add column if not exists c int , force , algorithm=default;
|
||||
alter table t1 add column d int first, force , algorithm=default;
|
||||
alter table t1 add column e int after c, force , algorithm=default;
|
||||
alter table t1 add column f int after c, force , add column g int first ,add column h char, algorithm=default;
|
||||
alter table t1 drop column c, drop column d, drop column e, drop column f, drop column g , drop column h, force , algorithm=default;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f int after b, force , add column g int first ,add column h varchar(100), algorithm=default;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=default;
|
||||
alter table t1 drop index index_1, force , algorithm=default;
|
||||
alter table t1 add unique key unique_1(g), force , algorithm=default;
|
||||
alter table t1 drop index unique_1, force , algorithm=default;
|
||||
alter table t1 add fulltext key f_1(h), force , algorithm=default;
|
||||
alter table t1 drop column f, drop column g , force , algorithm=default;
|
||||
alter table t1 add primary key(h), force , algorithm=copy;
|
||||
alter table t1 drop primary key, force , algorithm=copy;
|
||||
alter table t1 drop column h, force , algorithm=copy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b, add column g varchar(100) first ,add column h char, force , algorithm=default;
|
||||
alter table t1 add period for system_time(f,h);
|
||||
alter table t1 add system versioning;
|
||||
alter table t1 drop system versioning;
|
||||
alter table t1 drop column f, drop column g , drop column h, force , algorithm=default;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=default ;;
|
||||
alter table t1 alter column f set default "****", force , algorithm=default ;;
|
||||
alter table t1 alter column f drop default, force , algorithm=default ;;
|
||||
alter table t1 change column g new_g char, force , algorithm=copy;;
|
||||
alter table t1 modify column h varchar(100), force , algorithm=copy;;
|
||||
alter table t1 drop column new_g ,drop column f, drop column h, force , algorithm=default ;;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=default;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=default;
|
||||
alter table t1 disable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`t1` doesn't have this option
|
||||
alter table t1 enable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`t1` doesn't have this option
|
||||
alter table t1 rename t2, force , algorithm=default;
|
||||
alter table t2 rename t1, force , algorithm=default;
|
||||
alter table a1 order by a;
|
||||
alter table t1 rename column f to new_f, force , algorithm=copy;
|
||||
alter table t1 convert to character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default collate 'utf8_icelandic_ci', force , algorithm=copy;
|
||||
alter table t1 drop column new_f ,drop column g, drop column h, force , algorithm=default;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=default;
|
||||
alter table t1 partition by hash(b) partitions 8;
|
||||
alter table t1 remove partitioning;
|
||||
alter table t1 drop column f ,drop column g, drop column h, force , algorithm=default;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
connection master;
|
||||
drop table t1, a1;
|
||||
drop temporary table tmp_tbl;
|
||||
connection slave;
|
||||
include/stop_slave.inc
|
||||
set global slave_parallel_threads = 0;;
|
||||
set global slave_parallel_mode = optimistic;;
|
||||
set global gtid_strict_mode = 0;;
|
||||
include/start_slave.inc
|
||||
connection slave;
|
||||
stop slave;
|
||||
change master to master_use_gtid= current_pos;
|
||||
SET GLOBAL slave_parallel_threads=4;
|
||||
set global slave_parallel_mode=optimistic;
|
||||
set global gtid_strict_mode=1;
|
||||
start slave;
|
||||
connection master;
|
||||
set binlog_alter_two_phase=true;
|
||||
create table t1(a int , b int) engine=innodb;
|
||||
create table a1(a int , b int) engine=myisam;
|
||||
create temporary table tmp_tbl(a int, b int) engine=innodb;
|
||||
alter table t1 add column if not exists c int , force , algorithm=inplace;
|
||||
alter table t1 add column d int first, force , algorithm=inplace;
|
||||
alter table t1 add column e int after c, force , algorithm=inplace;
|
||||
alter table t1 add column f int after c, force , add column g int first ,add column h char, algorithm=inplace;
|
||||
alter table t1 drop column c, drop column d, drop column e, drop column f, drop column g , drop column h, force , algorithm=inplace;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f int after b, force , add column g int first ,add column h varchar(100), algorithm=inplace;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=inplace;
|
||||
alter table t1 drop index index_1, force , algorithm=inplace;
|
||||
alter table t1 add unique key unique_1(g), force , algorithm=inplace;
|
||||
alter table t1 drop index unique_1, force , algorithm=inplace;
|
||||
alter table t1 add fulltext key f_1(h), force , algorithm=inplace;
|
||||
alter table t1 drop column f, drop column g , force , algorithm=inplace;
|
||||
alter table t1 add primary key(h), force , algorithm=copy;
|
||||
alter table t1 drop primary key, force , algorithm=copy;
|
||||
alter table t1 drop column h, force , algorithm=copy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b, add column g varchar(100) first ,add column h char, force , algorithm=inplace;
|
||||
alter table t1 add period for system_time(f,h);
|
||||
alter table t1 add system versioning;
|
||||
alter table t1 drop system versioning;
|
||||
alter table t1 drop column f, drop column g , drop column h, force , algorithm=inplace;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=inplace ;;
|
||||
alter table t1 alter column f set default "****", force , algorithm=inplace ;;
|
||||
alter table t1 alter column f drop default, force , algorithm=inplace ;;
|
||||
alter table t1 change column g new_g char, force , algorithm=copy;;
|
||||
alter table t1 modify column h varchar(100), force , algorithm=copy;;
|
||||
alter table t1 drop column new_g ,drop column f, drop column h, force , algorithm=inplace ;;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=inplace;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=inplace;
|
||||
alter table t1 disable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`t1` doesn't have this option
|
||||
alter table t1 enable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`t1` doesn't have this option
|
||||
alter table t1 rename t2, force , algorithm=inplace;
|
||||
alter table t2 rename t1, force , algorithm=inplace;
|
||||
alter table a1 order by a;
|
||||
alter table t1 rename column f to new_f, force , algorithm=copy;
|
||||
alter table t1 convert to character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default collate 'utf8_icelandic_ci', force , algorithm=copy;
|
||||
alter table t1 drop column new_f ,drop column g, drop column h, force , algorithm=inplace;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=inplace;
|
||||
alter table t1 partition by hash(b) partitions 8;
|
||||
alter table t1 remove partitioning;
|
||||
alter table t1 drop column f ,drop column g, drop column h, force , algorithm=inplace;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
connection master;
|
||||
drop table t1, a1;
|
||||
drop temporary table tmp_tbl;
|
||||
connection slave;
|
||||
include/stop_slave.inc
|
||||
set global slave_parallel_threads = 0;;
|
||||
set global slave_parallel_mode = optimistic;;
|
||||
set global gtid_strict_mode = 0;;
|
||||
include/start_slave.inc
|
||||
connection slave;
|
||||
stop slave;
|
||||
change master to master_use_gtid= current_pos;
|
||||
SET GLOBAL slave_parallel_threads=4;
|
||||
set global slave_parallel_mode=optimistic;
|
||||
set global gtid_strict_mode=1;
|
||||
start slave;
|
||||
connection master;
|
||||
set binlog_alter_two_phase=true;
|
||||
create table t1(a int , b int) engine=innodb;
|
||||
create table a1(a int , b int) engine=myisam;
|
||||
create temporary table tmp_tbl(a int, b int) engine=innodb;
|
||||
alter table t1 add column if not exists c int , force , algorithm=copy;
|
||||
alter table t1 add column d int first, force , algorithm=copy;
|
||||
alter table t1 add column e int after c, force , algorithm=copy;
|
||||
alter table t1 add column f int after c, force , add column g int first ,add column h char, algorithm=copy;
|
||||
alter table t1 drop column c, drop column d, drop column e, drop column f, drop column g , drop column h, force , algorithm=copy;
|
||||
alter table tmp_tbl add column if not exists c int , force , algorithm=copy;
|
||||
alter table tmp_tbl add column d int first, force , algorithm=copy;
|
||||
alter table tmp_tbl add column e int after c, force , algorithm=copy;
|
||||
alter table tmp_tbl add column f int after c, force , add column g int first ,add column h char, algorithm=copy;
|
||||
alter table tmp_tbl drop column c, drop column d, drop column e, drop column f, drop column g , drop column h, force , algorithm=copy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f int after b, force , add column g int first ,add column h varchar(100), algorithm=copy;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=copy;
|
||||
alter table t1 drop index index_1, force , algorithm=copy;
|
||||
alter table t1 add unique key unique_1(g), force , algorithm=copy;
|
||||
alter table t1 drop index unique_1, force , algorithm=copy;
|
||||
alter table t1 add fulltext key f_1(h), force , algorithm=copy;
|
||||
alter table t1 drop column f, drop column g , force , algorithm=copy;
|
||||
alter table tmp_tbl add column f int after b, force , add column g int first ,add column h varchar(100), algorithm=copy;
|
||||
alter table tmp_tbl add index if not exists index_1(f), force , algorithm=copy;
|
||||
alter table tmp_tbl drop index index_1, force , algorithm=copy;
|
||||
alter table tmp_tbl add unique key unique_1(g), force , algorithm=copy;
|
||||
alter table tmp_tbl drop index unique_1, force , algorithm=copy;
|
||||
alter table tmp_tbl drop column f, drop column g , force , algorithm=copy;
|
||||
alter table t1 add primary key(h), force , algorithm=copy;
|
||||
alter table t1 drop primary key, force , algorithm=copy;
|
||||
alter table t1 drop column h, force , algorithm=copy;
|
||||
alter table tmp_tbl add primary key(h), force , algorithm=copy;
|
||||
alter table tmp_tbl drop primary key, force , algorithm=copy;
|
||||
alter table tmp_tbl drop column h, force , algorithm=copy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b, add column g varchar(100) first ,add column h char, force , algorithm=copy;
|
||||
alter table t1 add period for system_time(f,h);
|
||||
alter table t1 add system versioning;
|
||||
alter table t1 drop system versioning;
|
||||
alter table t1 drop column f, drop column g , drop column h, force , algorithm=copy;
|
||||
# show binlog and clear status
|
||||
alter table tmp_tbl add column f varchar(100) after b, add column g varchar(100) first ,add column h char, force , algorithm=copy;
|
||||
alter table tmp_tbl drop column f, drop column g , drop column h, force , algorithm=copy;
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=copy ;;
|
||||
alter table t1 alter column f set default "****", force , algorithm=copy ;;
|
||||
alter table t1 alter column f drop default, force , algorithm=copy ;;
|
||||
alter table t1 change column g new_g char, force , algorithm=copy;;
|
||||
alter table t1 modify column h varchar(100), force , algorithm=copy;;
|
||||
alter table t1 drop column new_g ,drop column f, drop column h, force , algorithm=copy ;;
|
||||
alter table tmp_tbl add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=copy ;;
|
||||
alter table tmp_tbl alter column f set default "****", force , algorithm=copy ;;
|
||||
alter table tmp_tbl alter column f drop default, force , algorithm=copy ;;
|
||||
alter table tmp_tbl change column g new_g char, force , algorithm=copy;;
|
||||
alter table tmp_tbl modify column h varchar(100), force , algorithm=copy;;
|
||||
alter table tmp_tbl drop column new_g ,drop column f, drop column h, force , algorithm=copy ;;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=copy;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=copy;
|
||||
alter table t1 disable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`t1` doesn't have this option
|
||||
alter table t1 enable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`t1` doesn't have this option
|
||||
alter table t1 rename t2, force , algorithm=copy;
|
||||
alter table t2 rename t1, force , algorithm=copy;
|
||||
alter table a1 order by a;
|
||||
alter table t1 rename column f to new_f, force , algorithm=copy;
|
||||
alter table t1 convert to character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default collate 'utf8_icelandic_ci', force , algorithm=copy;
|
||||
alter table t1 drop column new_f ,drop column g, drop column h, force , algorithm=copy;
|
||||
alter table tmp_tbl add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=copy;
|
||||
alter table tmp_tbl add index if not exists index_1(f), force , algorithm=copy;
|
||||
alter table tmp_tbl disable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`tmp_tbl` doesn't have this option
|
||||
alter table tmp_tbl enable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`tmp_tbl` doesn't have this option
|
||||
alter table a1 order by a;
|
||||
alter table tmp_tbl rename column f to new_f, force , algorithm=copy;
|
||||
alter table tmp_tbl convert to character set 'utf8', force , algorithm=copy;
|
||||
alter table tmp_tbl default character set 'utf8', force , algorithm=copy;
|
||||
alter table tmp_tbl default collate 'utf8_icelandic_ci', force , algorithm=copy;
|
||||
alter table tmp_tbl drop column new_f ,drop column g, drop column h, force , algorithm=copy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=copy;
|
||||
alter table t1 partition by hash(b) partitions 8;
|
||||
alter table t1 remove partitioning;
|
||||
alter table t1 drop column f ,drop column g, drop column h, force , algorithm=copy;
|
||||
alter table tmp_tbl add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=copy;
|
||||
alter table tmp_tbl drop column f ,drop column g, drop column h, force , algorithm=copy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
connection master;
|
||||
drop table t1, a1;
|
||||
drop temporary table tmp_tbl;
|
||||
connection slave;
|
||||
include/stop_slave.inc
|
||||
set global slave_parallel_threads = 0;;
|
||||
set global slave_parallel_mode = optimistic;;
|
||||
set global gtid_strict_mode = 0;;
|
||||
include/start_slave.inc
|
||||
# Prove formal support for nocopy and instant
|
||||
connection slave;
|
||||
stop slave;
|
||||
change master to master_use_gtid= current_pos;
|
||||
SET GLOBAL slave_parallel_threads=4;
|
||||
set global slave_parallel_mode=optimistic;
|
||||
set global gtid_strict_mode=1;
|
||||
start slave;
|
||||
connection master;
|
||||
set binlog_alter_two_phase=true;
|
||||
create table t1(a int , b int) engine=innodb;
|
||||
create table a1(a int , b int) engine=myisam;
|
||||
create temporary table tmp_tbl(a int, b int) engine=innodb;
|
||||
alter table t1 add column if not exists c int , force , algorithm=instant;
|
||||
alter table t1 add column d int first, force , algorithm=instant;
|
||||
alter table t1 add column e int after c, force , algorithm=instant;
|
||||
alter table t1 add column f int after c, force , add column g int first ,add column h char, algorithm=instant;
|
||||
alter table t1 drop column c, drop column d, drop column e, drop column f, drop column g , drop column h, force , algorithm=instant;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f int after b, force , add column g int first ,add column h varchar(100), algorithm=instant;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=instant;
|
||||
alter table t1 drop index index_1, force , algorithm=instant;
|
||||
alter table t1 add unique key unique_1(g), force , algorithm=instant;
|
||||
alter table t1 drop index unique_1, force , algorithm=instant;
|
||||
alter table t1 add fulltext key f_1(h), force , algorithm=instant;
|
||||
alter table t1 drop column f, drop column g , force , algorithm=instant;
|
||||
alter table t1 add primary key(h), force , algorithm=copy;
|
||||
alter table t1 drop primary key, force , algorithm=copy;
|
||||
alter table t1 drop column h, force , algorithm=copy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b, add column g varchar(100) first ,add column h char, force , algorithm=instant;
|
||||
alter table t1 add period for system_time(f,h);
|
||||
alter table t1 add system versioning;
|
||||
alter table t1 drop system versioning;
|
||||
alter table t1 drop column f, drop column g , drop column h, force , algorithm=instant;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=instant ;;
|
||||
alter table t1 alter column f set default "****", force , algorithm=instant ;;
|
||||
alter table t1 alter column f drop default, force , algorithm=instant ;;
|
||||
alter table t1 change column g new_g char, force , algorithm=copy;;
|
||||
alter table t1 modify column h varchar(100), force , algorithm=copy;;
|
||||
alter table t1 drop column new_g ,drop column f, drop column h, force , algorithm=instant ;;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=instant;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=instant;
|
||||
alter table t1 disable keys, force , algorithm=copy;
|
||||
alter table t1 enable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`t1` doesn't have this option
|
||||
alter table t1 rename t2, force , algorithm=instant;
|
||||
alter table t2 rename t1, force , algorithm=instant;
|
||||
alter table a1 order by a;
|
||||
alter table t1 rename column f to new_f, force , algorithm=copy;
|
||||
alter table t1 convert to character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default collate 'utf8_icelandic_ci', force , algorithm=copy;
|
||||
alter table t1 drop column new_f ,drop column g, drop column h, force , algorithm=instant;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=instant;
|
||||
alter table t1 partition by hash(b) partitions 8;
|
||||
alter table t1 remove partitioning;
|
||||
alter table t1 drop column f ,drop column g, drop column h, force , algorithm=instant;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
connection master;
|
||||
drop table t1, a1;
|
||||
drop temporary table tmp_tbl;
|
||||
connection slave;
|
||||
include/stop_slave.inc
|
||||
set global slave_parallel_threads = 0;;
|
||||
set global slave_parallel_mode = optimistic;;
|
||||
set global gtid_strict_mode = 0;;
|
||||
include/start_slave.inc
|
||||
connection slave;
|
||||
stop slave;
|
||||
change master to master_use_gtid= current_pos;
|
||||
SET GLOBAL slave_parallel_threads=4;
|
||||
set global slave_parallel_mode=optimistic;
|
||||
set global gtid_strict_mode=1;
|
||||
start slave;
|
||||
connection master;
|
||||
set binlog_alter_two_phase=true;
|
||||
create table t1(a int , b int) engine=innodb;
|
||||
create table a1(a int , b int) engine=myisam;
|
||||
create temporary table tmp_tbl(a int, b int) engine=innodb;
|
||||
alter table t1 add column if not exists c int , force , algorithm=nocopy;
|
||||
alter table t1 add column d int first, force , algorithm=nocopy;
|
||||
alter table t1 add column e int after c, force , algorithm=nocopy;
|
||||
alter table t1 add column f int after c, force , add column g int first ,add column h char, algorithm=nocopy;
|
||||
alter table t1 drop column c, drop column d, drop column e, drop column f, drop column g , drop column h, force , algorithm=nocopy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f int after b, force , add column g int first ,add column h varchar(100), algorithm=nocopy;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=nocopy;
|
||||
alter table t1 drop index index_1, force , algorithm=nocopy;
|
||||
alter table t1 add unique key unique_1(g), force , algorithm=nocopy;
|
||||
alter table t1 drop index unique_1, force , algorithm=nocopy;
|
||||
alter table t1 add fulltext key f_1(h), force , algorithm=nocopy;
|
||||
alter table t1 drop column f, drop column g , force , algorithm=nocopy;
|
||||
alter table t1 add primary key(h), force , algorithm=copy;
|
||||
alter table t1 drop primary key, force , algorithm=copy;
|
||||
alter table t1 drop column h, force , algorithm=copy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b, add column g varchar(100) first ,add column h char, force , algorithm=nocopy;
|
||||
alter table t1 add period for system_time(f,h);
|
||||
alter table t1 add system versioning;
|
||||
alter table t1 drop system versioning;
|
||||
alter table t1 drop column f, drop column g , drop column h, force , algorithm=nocopy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=nocopy ;;
|
||||
alter table t1 alter column f set default "****", force , algorithm=nocopy ;;
|
||||
alter table t1 alter column f drop default, force , algorithm=nocopy ;;
|
||||
alter table t1 change column g new_g char, force , algorithm=copy;;
|
||||
alter table t1 modify column h varchar(100), force , algorithm=copy;;
|
||||
alter table t1 drop column new_g ,drop column f, drop column h, force , algorithm=nocopy ;;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=nocopy;
|
||||
alter table t1 add index if not exists index_1(f), force , algorithm=nocopy;
|
||||
alter table t1 disable keys, force , algorithm=copy;
|
||||
alter table t1 enable keys, force , algorithm=copy;
|
||||
Warnings:
|
||||
Note 1031 Storage engine InnoDB of the table `test`.`t1` doesn't have this option
|
||||
alter table t1 rename t2, force , algorithm=nocopy;
|
||||
alter table t2 rename t1, force , algorithm=nocopy;
|
||||
alter table a1 order by a;
|
||||
alter table t1 rename column f to new_f, force , algorithm=copy;
|
||||
alter table t1 convert to character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default character set 'utf8', force , algorithm=copy;
|
||||
alter table t1 default collate 'utf8_icelandic_ci', force , algorithm=copy;
|
||||
alter table t1 drop column new_f ,drop column g, drop column h, force , algorithm=nocopy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
alter table t1 add column f varchar(100) after b,add column g varchar(100) first ,add column h char, force , algorithm=nocopy;
|
||||
alter table t1 partition by hash(b) partitions 8;
|
||||
alter table t1 remove partitioning;
|
||||
alter table t1 drop column f ,drop column g, drop column h, force , algorithm=nocopy;
|
||||
# show binlog and clear status
|
||||
connection slave;
|
||||
reset master;
|
||||
connection master;
|
||||
connection master;
|
||||
drop table t1, a1;
|
||||
drop temporary table tmp_tbl;
|
||||
connection slave;
|
||||
include/stop_slave.inc
|
||||
set global slave_parallel_threads = 0;;
|
||||
set global slave_parallel_mode = optimistic;;
|
||||
set global gtid_strict_mode = 0;;
|
||||
include/start_slave.inc
|
||||
include/rpl_end.inc
|
@ -33,9 +33,8 @@ CREATE TABLE t1 (a INT) ENGINE=innodb;
|
||||
--source include/sync_with_master_gtid.inc
|
||||
|
||||
--connection master
|
||||
SET @@session.alter_algorithm='INSTANT';
|
||||
SET @@session.gtid_domain_id=11;
|
||||
ALTER TABLE t1 ADD COLUMN b int;
|
||||
ALTER TABLE t1 ADD COLUMN b int, algorithm=instant;
|
||||
|
||||
|
||||
--echo # START Alter having exclusive lock is waiting for the signal
|
||||
|
@ -11,10 +11,9 @@ CREATE OR REPLACE TABLE tab (
|
||||
c varchar(50)
|
||||
) CHARACTER SET=latin1 engine=innodb;
|
||||
|
||||
SET SESSION alter_algorithm='INSTANT';
|
||||
ALTER TABLE tab MODIFY COLUMN b varchar(100);
|
||||
SET SESSION alter_algorithm='NOCOPY';
|
||||
ALTER TABLE tab MODIFY COLUMN c varchar(100);
|
||||
|
||||
ALTER TABLE tab MODIFY COLUMN b varchar(100), algorithm=instant;
|
||||
ALTER TABLE tab MODIFY COLUMN c varchar(100), algorithm=nocopy;
|
||||
SHOW CREATE TABLE tab;
|
||||
--source include/show_binlog_events.inc
|
||||
|
||||
|
@ -1,31 +0,0 @@
|
||||
# This test will test all the option related to the Alter Table command
|
||||
# NOTE not all alter statements will follow alter_algorithm since for some statements
|
||||
# copy is only option
|
||||
# parameters
|
||||
# $alter_algorithm {DEFAULT|INPLACE|COPY|NOCOPY|INSTANT}
|
||||
# $show_binlog
|
||||
#
|
||||
|
||||
--source include/have_partition.inc
|
||||
--source include/have_innodb.inc
|
||||
--source include/master-slave.inc
|
||||
|
||||
--let $alter_algorithm= default
|
||||
#--let $show_binlog= false
|
||||
--source include/start_alter_options.inc
|
||||
|
||||
--let $alter_algorithm= inplace
|
||||
--source include/start_alter_options.inc
|
||||
|
||||
--let $alter_algorithm= copy
|
||||
--source include/start_alter_options.inc
|
||||
|
||||
--echo # Prove formal support for nocopy and instant
|
||||
--let $alter_algorithm= instant
|
||||
--source include/start_alter_options.inc
|
||||
|
||||
--let $alter_algorithm= nocopy
|
||||
--source include/start_alter_options.inc
|
||||
|
||||
|
||||
--source include/rpl_end.inc
|
@ -1,89 +1,21 @@
|
||||
SET @start_global_value = @@global.alter_algorithm;
|
||||
SET GLOBAL alter_algorithm=1.1;
|
||||
ERROR 42000: Incorrect argument type to variable 'alter_algorithm'
|
||||
SET GLOBAL alter_algorithm=-1;
|
||||
ERROR 42000: Variable 'alter_algorithm' can't be set to the value of '-1'
|
||||
SET GLOBAL alter_algorithm=weird;
|
||||
ERROR 42000: Variable 'alter_algorithm' can't be set to the value of 'weird'
|
||||
SET GLOBAL alter_algorithm=4;
|
||||
SELECT @@global.alter_algorithm;
|
||||
@@global.alter_algorithm
|
||||
INSTANT
|
||||
SET GLOBAL alter_algorithm=3;
|
||||
SELECT @@global.alter_algorithm;
|
||||
@@global.alter_algorithm
|
||||
NOCOPY
|
||||
SET GLOBAL alter_algorithm=0;
|
||||
SELECT @@global.alter_algorithm;
|
||||
@@global.alter_algorithm
|
||||
DEFAULT
|
||||
SET GLOBAL alter_algorithm=1;
|
||||
SELECT @@global.alter_algorithm;
|
||||
@@global.alter_algorithm
|
||||
COPY
|
||||
SET GLOBAL alter_algorithm=2;
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
SELECT @@global.alter_algorithm;
|
||||
@@global.alter_algorithm
|
||||
INPLACE
|
||||
DEFAULT
|
||||
SET GLOBAL alter_algorithm=5;
|
||||
ERROR 42000: Variable 'alter_algorithm' can't be set to the value of '5'
|
||||
SELECT @@global.alter_algorithm;
|
||||
@@global.alter_algorithm
|
||||
INPLACE
|
||||
SET GLOBAL alter_algorithm=NOCOPY;
|
||||
SET alter_algorithm=1.1;
|
||||
ERROR 42000: Incorrect argument type to variable 'alter_algorithm'
|
||||
SET alter_algorithm=-1;
|
||||
ERROR 42000: Variable 'alter_algorithm' can't be set to the value of '-1'
|
||||
SET alter_algorithm=weird;
|
||||
ERROR 42000: Variable 'alter_algorithm' can't be set to the value of 'weird'
|
||||
SET alter_algorithm=4;
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
INSTANT
|
||||
SET alter_algorithm=3;
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
NOCOPY
|
||||
SET alter_algorithm=0;
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
DEFAULT
|
||||
SET alter_algorithm=1;
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
COPY
|
||||
SET alter_algorithm=2;
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
INPLACE
|
||||
SET alter_algorithm=5;
|
||||
ERROR 42000: Variable 'alter_algorithm' can't be set to the value of '5'
|
||||
SELECT @@alter_algorithm;
|
||||
@@alter_algorithm
|
||||
INPLACE
|
||||
SET SESSION alter_algorithm=INSTANT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
Variable_name Value
|
||||
alter_algorithm INSTANT
|
||||
SET SESSION alter_algorithm=DEFAULT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
Variable_name Value
|
||||
alter_algorithm NOCOPY
|
||||
SET SESSION alter_algorithm='DEFAULT';
|
||||
Warnings:
|
||||
Warning 4200 The variable '@@alter_algorithm' is deleted and ignored. It it only exists for compatiblity with old installations
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
Variable_name Value
|
||||
alter_algorithm DEFAULT
|
||||
SET SESSION alter_algorithm=DEFAULT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
Variable_name Value
|
||||
alter_algorithm NOCOPY
|
||||
SET GLOBAL alter_algorithm=DEFAULT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
Variable_name Value
|
||||
alter_algorithm NOCOPY
|
||||
SET SESSION alter_algorithm=DEFAULT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
Variable_name Value
|
||||
alter_algorithm DEFAULT
|
||||
SET GLOBAL alter_algorithm = @start_global_value;
|
||||
|
@ -25,7 +25,7 @@ COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
VARIABLE_NAME ALTER_ALGORITHM
|
||||
VARIABLE_SCOPE SESSION
|
||||
VARIABLE_TYPE ENUM
|
||||
VARIABLE_COMMENT Specify the alter table algorithm
|
||||
VARIABLE_COMMENT Unused
|
||||
NUMERIC_MIN_VALUE NULL
|
||||
NUMERIC_MAX_VALUE NULL
|
||||
NUMERIC_BLOCK_SIZE NULL
|
||||
|
@ -25,7 +25,7 @@ COMMAND_LINE_ARGUMENT OPTIONAL
|
||||
VARIABLE_NAME ALTER_ALGORITHM
|
||||
VARIABLE_SCOPE SESSION
|
||||
VARIABLE_TYPE ENUM
|
||||
VARIABLE_COMMENT Specify the alter table algorithm
|
||||
VARIABLE_COMMENT Unused
|
||||
NUMERIC_MIN_VALUE NULL
|
||||
NUMERIC_MAX_VALUE NULL
|
||||
NUMERIC_BLOCK_SIZE NULL
|
||||
|
@ -1,18 +1,5 @@
|
||||
SET @start_global_value = @@global.alter_algorithm;
|
||||
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
SET GLOBAL alter_algorithm=1.1;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET GLOBAL alter_algorithm=-1;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET GLOBAL alter_algorithm=weird;
|
||||
SET GLOBAL alter_algorithm=4;
|
||||
SELECT @@global.alter_algorithm;
|
||||
SET GLOBAL alter_algorithm=3;
|
||||
SELECT @@global.alter_algorithm;
|
||||
SET GLOBAL alter_algorithm=0;
|
||||
SELECT @@global.alter_algorithm;
|
||||
SET GLOBAL alter_algorithm=1;
|
||||
SELECT @@global.alter_algorithm;
|
||||
SET GLOBAL alter_algorithm=2;
|
||||
SELECT @@global.alter_algorithm;
|
||||
@ -20,39 +7,5 @@ SELECT @@global.alter_algorithm;
|
||||
SET GLOBAL alter_algorithm=5;
|
||||
SELECT @@global.alter_algorithm;
|
||||
|
||||
SET GLOBAL alter_algorithm=NOCOPY;
|
||||
|
||||
--error ER_WRONG_TYPE_FOR_VAR
|
||||
SET alter_algorithm=1.1;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET alter_algorithm=-1;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET alter_algorithm=weird;
|
||||
SET alter_algorithm=4;
|
||||
SELECT @@alter_algorithm;
|
||||
SET alter_algorithm=3;
|
||||
SELECT @@alter_algorithm;
|
||||
SET alter_algorithm=0;
|
||||
SELECT @@alter_algorithm;
|
||||
SET alter_algorithm=1;
|
||||
SELECT @@alter_algorithm;
|
||||
SET alter_algorithm=2;
|
||||
SELECT @@alter_algorithm;
|
||||
--error ER_WRONG_VALUE_FOR_VAR
|
||||
SET alter_algorithm=5;
|
||||
SELECT @@alter_algorithm;
|
||||
|
||||
SET SESSION alter_algorithm=INSTANT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
SET SESSION alter_algorithm=DEFAULT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
SET SESSION alter_algorithm='DEFAULT';
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
SET SESSION alter_algorithm=DEFAULT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
SET GLOBAL alter_algorithm=DEFAULT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
SET SESSION alter_algorithm=DEFAULT;
|
||||
SHOW SESSION VARIABLES LIKE 'alter_algorithm';
|
||||
|
||||
SET GLOBAL alter_algorithm = @start_global_value;
|
||||
|
@ -5333,6 +5333,7 @@ static int init_server_components()
|
||||
|
||||
/* removed in 11.5 */
|
||||
MARIADB_REMOVED_OPTION("wsrep-load-data-splitting"),
|
||||
MARIADB_REMOVED_OPTION("alter-algorithm"),
|
||||
|
||||
{0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
|
||||
};
|
||||
|
@ -1235,8 +1235,6 @@ handle_rpl_parallel_thread(void *arg)
|
||||
thd->system_thread= SYSTEM_THREAD_SLAVE_SQL;
|
||||
thd->security_ctx->skip_grants();
|
||||
thd->variables.max_allowed_packet= slave_max_allowed_packet;
|
||||
/* Ensure that slave can exeute any alter table it gets from master */
|
||||
thd->variables.alter_algorithm= (ulong) Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT;
|
||||
thd->slave_thread= 1;
|
||||
|
||||
set_slave_thread_options(thd);
|
||||
|
@ -5531,9 +5531,6 @@ pthread_handler_t handle_slave_sql(void *arg)
|
||||
*/
|
||||
thd->variables.binlog_annotate_row_events= 0;
|
||||
|
||||
/* Ensure that slave can exeute any alter table it gets from master */
|
||||
thd->variables.alter_algorithm= (ulong) Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT;
|
||||
|
||||
server_threads.insert(thd);
|
||||
/*
|
||||
We are going to set slave_running to 1. Assuming slave I/O thread is
|
||||
|
@ -186,9 +186,7 @@ bool Alter_info::supports_lock(THD *thd, bool online,
|
||||
case HA_ALTER_INPLACE_EXCLUSIVE_LOCK:
|
||||
// If SHARED lock and no particular algorithm was requested, use COPY.
|
||||
if (requested_lock == Alter_info::ALTER_TABLE_LOCK_SHARED &&
|
||||
algorithm(thd) == Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT &&
|
||||
thd->variables.alter_algorithm ==
|
||||
Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT)
|
||||
algorithm(thd) == Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT)
|
||||
return false;
|
||||
|
||||
if (requested_lock == Alter_info::ALTER_TABLE_LOCK_SHARED ||
|
||||
@ -258,7 +256,7 @@ Alter_info::enum_alter_table_algorithm
|
||||
Alter_info::algorithm(const THD *thd) const
|
||||
{
|
||||
if (requested_algorithm == ALTER_TABLE_ALGORITHM_NONE)
|
||||
return (Alter_info::enum_alter_table_algorithm) thd->variables.alter_algorithm;
|
||||
return ALTER_TABLE_ALGORITHM_DEFAULT;
|
||||
return requested_algorithm;
|
||||
}
|
||||
|
||||
|
@ -816,7 +816,7 @@ typedef struct system_variables
|
||||
ulong query_cache_type;
|
||||
ulong tx_isolation;
|
||||
ulong updatable_views_with_limit;
|
||||
ulong alter_algorithm;
|
||||
ulong alter_algorithm_unused;
|
||||
ulong server_id;
|
||||
ulong session_track_transaction_info;
|
||||
ulong threadpool_priority;
|
||||
|
@ -11177,10 +11177,7 @@ do_continue:;
|
||||
// If SHARED lock and no particular algorithm was requested, use COPY.
|
||||
if (ha_alter_info.inplace_supported == HA_ALTER_INPLACE_EXCLUSIVE_LOCK &&
|
||||
alter_info->requested_lock == Alter_info::ALTER_TABLE_LOCK_SHARED &&
|
||||
alter_info->algorithm(thd) ==
|
||||
Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT &&
|
||||
thd->variables.alter_algorithm ==
|
||||
Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT)
|
||||
alter_info->algorithm(thd) == Alter_info::ALTER_TABLE_ALGORITHM_DEFAULT)
|
||||
use_inplace= false;
|
||||
|
||||
if (ha_alter_info.inplace_supported == HA_ALTER_INPLACE_NOT_SUPPORTED)
|
||||
|
@ -2831,10 +2831,23 @@ static Sys_var_mybool Sys_skip_grant_tables(
|
||||
static const char *alter_algorithm_modes[]= {"DEFAULT", "COPY", "INPLACE",
|
||||
"NOCOPY", "INSTANT", NULL};
|
||||
|
||||
|
||||
static bool variable_is_ignored(sys_var *self, THD *thd, set_var *var)
|
||||
{
|
||||
var->save_result.longlong_value= 0;
|
||||
return false;
|
||||
}
|
||||
|
||||
static Sys_var_enum Sys_alter_algorithm(
|
||||
"alter_algorithm", "Specify the alter table algorithm",
|
||||
SESSION_VAR(alter_algorithm), CMD_LINE(OPT_ARG),
|
||||
alter_algorithm_modes, DEFAULT(0));
|
||||
"alter_algorithm",
|
||||
UNUSED_HELP,
|
||||
SESSION_VAR(alter_algorithm_unused),
|
||||
CMD_LINE(OPT_ARG, OPT_REMOVED_OPTION),
|
||||
alter_algorithm_modes, DEFAULT(0),
|
||||
NO_MUTEX_GUARD, NOT_IN_BINLOG,
|
||||
ON_CHECK(variable_is_ignored), ON_UPDATE(0),
|
||||
DEPRECATED(1105,""));
|
||||
|
||||
|
||||
static bool check_old_passwords(sys_var *self, THD *thd, set_var *var)
|
||||
{
|
||||
|
@ -1,16 +0,0 @@
|
||||
#
|
||||
# MDEV-32683 Spider engine does not load with non-default alter-algorithm
|
||||
#
|
||||
set global alter_algorithm=INSTANT;
|
||||
install plugin spider soname 'ha_spider';
|
||||
select plugin_name, plugin_status, plugin_type, plugin_license, load_option from information_schema.plugins where plugin_name like 'spider';
|
||||
plugin_name plugin_status plugin_type plugin_license load_option
|
||||
SPIDER ACTIVE STORAGE ENGINE GPL ON
|
||||
uninstall plugin spider;
|
||||
drop table mysql.spider_link_failed_log, mysql.spider_link_mon_servers, mysql.spider_tables, mysql.spider_table_crd, mysql.spider_table_position_for_recovery, mysql.spider_table_sts, mysql.spider_xa, mysql.spider_xa_failed_log, mysql.spider_xa_member;
|
||||
drop function spider_direct_sql;
|
||||
drop function spider_bg_direct_sql;
|
||||
drop function spider_ping_table;
|
||||
drop function spider_copy_tables;
|
||||
drop function spider_flush_table_mon_cache;
|
||||
set global alter_algorithm=DEFAULT;
|
@ -1,14 +0,0 @@
|
||||
--echo #
|
||||
--echo # MDEV-32683 Spider engine does not load with non-default alter-algorithm
|
||||
--echo #
|
||||
set global alter_algorithm=INSTANT;
|
||||
install plugin spider soname 'ha_spider';
|
||||
select plugin_name, plugin_status, plugin_type, plugin_license, load_option from information_schema.plugins where plugin_name like 'spider';
|
||||
uninstall plugin spider;
|
||||
drop table mysql.spider_link_failed_log, mysql.spider_link_mon_servers, mysql.spider_tables, mysql.spider_table_crd, mysql.spider_table_position_for_recovery, mysql.spider_table_sts, mysql.spider_xa, mysql.spider_xa_failed_log, mysql.spider_xa_member;
|
||||
drop function spider_direct_sql;
|
||||
drop function spider_bg_direct_sql;
|
||||
drop function spider_ping_table;
|
||||
drop function spider_copy_tables;
|
||||
drop function spider_flush_table_mon_cache;
|
||||
set global alter_algorithm=DEFAULT;
|
Reference in New Issue
Block a user