1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +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:
Monty
2024-03-12 13:54:30 +02:00
committed by Sergei Golubchik
parent 6254fcf84a
commit 2464ee758a
58 changed files with 1171 additions and 2205 deletions

View File

@@ -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;