mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-13134 Introduce ALTER TABLE attributes ALGORITHM=NOCOPY and ALGORITHM=INSTANT
Introduced new alter algorithm type called NOCOPY & INSTANT for inplace alter operation. NOCOPY - Algorithm refuses any alter operation that would rebuild the clustered index. It is a subset of INPLACE algorithm. INSTANT - Algorithm allow any alter operation that would modify only meta data. It is a subset of NOCOPY algorithm. Introduce new variable called alter_algorithm. The values are DEFAULT(0), COPY(1), INPLACE(2), NOCOPY(3), INSTANT(4) Message to deprecate old_alter_table variable and make it alias for alter_algorithm variable. alter_algorithm variable for slave is always set to default.
This commit is contained in:
@ -1,45 +1,105 @@
|
||||
SET @start_global_value = @@global.old_alter_table;
|
||||
SELECT @start_global_value;
|
||||
@start_global_value
|
||||
0
|
||||
DEFAULT
|
||||
select @@global.old_alter_table;
|
||||
@@global.old_alter_table
|
||||
0
|
||||
DEFAULT
|
||||
select @@session.old_alter_table;
|
||||
@@session.old_alter_table
|
||||
0
|
||||
DEFAULT
|
||||
show global variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table OFF
|
||||
old_alter_table DEFAULT
|
||||
show session variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table OFF
|
||||
old_alter_table DEFAULT
|
||||
select * from information_schema.global_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE OFF
|
||||
OLD_ALTER_TABLE DEFAULT
|
||||
select * from information_schema.session_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE OFF
|
||||
OLD_ALTER_TABLE DEFAULT
|
||||
set global old_alter_table=1;
|
||||
set session old_alter_table=ON;
|
||||
set session old_alter_table=1;
|
||||
select @@global.old_alter_table;
|
||||
@@global.old_alter_table
|
||||
1
|
||||
COPY
|
||||
select @@session.old_alter_table;
|
||||
@@session.old_alter_table
|
||||
1
|
||||
COPY
|
||||
show global variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table ON
|
||||
old_alter_table COPY
|
||||
show session variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table ON
|
||||
old_alter_table COPY
|
||||
select * from information_schema.global_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE ON
|
||||
OLD_ALTER_TABLE COPY
|
||||
select * from information_schema.session_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE ON
|
||||
OLD_ALTER_TABLE COPY
|
||||
set global old_alter_table=2;
|
||||
set session old_alter_table=2;
|
||||
select @@global.old_alter_table;
|
||||
@@global.old_alter_table
|
||||
INPLACE
|
||||
select @@session.old_alter_table;
|
||||
@@session.old_alter_table
|
||||
INPLACE
|
||||
show global variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table INPLACE
|
||||
show session variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table INPLACE
|
||||
select * from information_schema.global_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE INPLACE
|
||||
select * from information_schema.session_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE INPLACE
|
||||
set global old_alter_table=3;
|
||||
set session old_alter_table=3;
|
||||
select @@global.old_alter_table;
|
||||
@@global.old_alter_table
|
||||
NOCOPY
|
||||
select @@session.old_alter_table;
|
||||
@@session.old_alter_table
|
||||
NOCOPY
|
||||
show global variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table NOCOPY
|
||||
show session variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table NOCOPY
|
||||
select * from information_schema.global_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE NOCOPY
|
||||
select * from information_schema.session_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE NOCOPY
|
||||
set global old_alter_table=4;
|
||||
set session old_alter_table=4;
|
||||
select @@global.old_alter_table;
|
||||
@@global.old_alter_table
|
||||
INSTANT
|
||||
select @@session.old_alter_table;
|
||||
@@session.old_alter_table
|
||||
INSTANT
|
||||
show global variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table INSTANT
|
||||
show session variables like 'old_alter_table';
|
||||
Variable_name Value
|
||||
old_alter_table INSTANT
|
||||
select * from information_schema.global_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE INSTANT
|
||||
select * from information_schema.session_variables where variable_name='old_alter_table';
|
||||
VARIABLE_NAME VARIABLE_VALUE
|
||||
OLD_ALTER_TABLE INSTANT
|
||||
set global old_alter_table=1.1;
|
||||
ERROR 42000: Incorrect argument type to variable 'old_alter_table'
|
||||
set global old_alter_table=1e1;
|
||||
@ -49,4 +109,4 @@ ERROR 42000: Variable 'old_alter_table' can't be set to the value of 'foo'
|
||||
SET @@global.old_alter_table = @start_global_value;
|
||||
SELECT @@global.old_alter_table;
|
||||
@@global.old_alter_table
|
||||
0
|
||||
DEFAULT
|
||||
|
Reference in New Issue
Block a user