mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
move alter_table combinations to a separate test file
no need to run all alter tests three times with no changes whatsoever
This commit is contained in:
@ -2,10 +2,6 @@
|
||||
#
|
||||
# Test of alter table
|
||||
#
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2;
|
||||
drop database if exists mysqltest;
|
||||
--enable_warnings
|
||||
set @save_max_allowed_packet=@@global.max_allowed_packet;
|
||||
|
||||
create table t1 (
|
||||
@ -2099,47 +2095,6 @@ set max_statement_time= 0;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-25803 Inplace ALTER breaks MyISAM/Aria tables when order of keys is changed
|
||||
--echo #
|
||||
set @save_default_engine= @@default_storage_engine;
|
||||
--disable_query_log
|
||||
if ($MTR_COMBINATION_INNODB)
|
||||
{
|
||||
set default_storage_engine= innodb;
|
||||
}
|
||||
if ($MTR_COMBINATION_ARIA)
|
||||
{
|
||||
set default_storage_engine= aria;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
if (!$MTR_COMBINATION_INNODB)
|
||||
{
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
# There is no inplace ADD INDEX for MyISAM/Aria:
|
||||
create or replace table t1 (x int);
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 add unique (x), algorithm=inplace;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 add primary key(x), algorithm=inplace;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 add index(x), algorithm=inplace;
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
}
|
||||
|
||||
create or replace table t1 (x int, y int, unique (y), unique (x), primary key(x)) engine myisam;
|
||||
alter table t1 change x xx int, algorithm=inplace;
|
||||
check table t1;
|
||||
create or replace table t1 (x int, y int, unique (y), unique (x), primary key(x));
|
||||
alter table t1 change x xx int, algorithm=inplace;
|
||||
check table t1;
|
||||
# cleanup
|
||||
drop table t1;
|
||||
set @@default_storage_engine= @save_default_engine;
|
||||
|
||||
--echo #
|
||||
--echo # End of 10.3 tests
|
||||
--echo #
|
||||
@ -2192,205 +2147,6 @@ DROP TABLE t1;
|
||||
--echo # End of 10.4 tests
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-16290 ALTER TABLE ... RENAME COLUMN syntax
|
||||
--echo #
|
||||
SET @save_default_engine= @@DEFAULT_STORAGE_ENGINE;
|
||||
--disable_query_log
|
||||
if ($MTR_COMBINATION_INNODB)
|
||||
{
|
||||
SET DEFAULT_STORAGE_ENGINE= INNODB;
|
||||
}
|
||||
if ($MTR_COMBINATION_ARIA)
|
||||
{
|
||||
SET DEFAULT_STORAGE_ENGINE= ARIA;
|
||||
}
|
||||
if ($MTR_COMBINATION_HEAP)
|
||||
{
|
||||
SET DEFAULT_STORAGE_ENGINE= MEMORY;
|
||||
}
|
||||
--enable_query_log
|
||||
let $default_engine= `select @@default_storage_engine`;
|
||||
|
||||
CREATE TABLE t1(a INT, b VARCHAR(30), c FLOAT);
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES(1,'abcd',1.234);
|
||||
CREATE TABLE t2(a INT, b VARCHAR(30), c FLOAT) ENGINE=MyIsam;
|
||||
SHOW CREATE TABLE t2;
|
||||
INSERT INTO t2 VALUES(1,'abcd',1.234);
|
||||
|
||||
# Rename one column
|
||||
ALTER TABLE t1 RENAME COLUMN a TO a;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 RENAME COLUMN a TO m;
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
ALTER TABLE t1 RENAME COLUMN a TO m;
|
||||
ALTER TABLE t1 RENAME COLUMN IF EXISTS a TO m;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
# Rename multiple column
|
||||
ALTER TABLE t1 RENAME COLUMN m TO x,
|
||||
RENAME COLUMN b TO y,
|
||||
RENAME COLUMN c TO z;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
# Rename multiple columns with MyIsam Engine
|
||||
ALTER TABLE t2 RENAME COLUMN a TO d, RENAME COLUMN b TO e, RENAME COLUMN c to f;
|
||||
SHOW CREATE TABLE t2;
|
||||
SELECT * FROM t2;
|
||||
|
||||
# Mix different ALTER operations with RENAME COLUMN
|
||||
ALTER TABLE t1 CHANGE COLUMN x a INT, RENAME COLUMN y TO b;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 CHANGE COLUMN z c DOUBLE, RENAME COLUMN b to b;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 CHANGE COLUMN a b int, RENAME COLUMN b TO c, CHANGE COLUMN c d FLOAT;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 ADD COLUMN zz INT, RENAME COLUMN d TO f;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 DROP COLUMN zz, RENAME COLUMN c TO zz;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 RENAME COLUMN zz to c, DROP COLUMN f;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 ADD COLUMN d INT DEFAULT 5, RENAME COLUMN c TO b, DROP COLUMN b;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
#Cyclic Rename
|
||||
ALTER TABLE t1 RENAME COLUMN b TO d, RENAME COLUMN d TO b;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
# Rename with Indexes
|
||||
ALTER TABLE t1 ADD KEY(b);
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t1 RENAME COLUMN b TO bb;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
# Rename with Foreign keys.
|
||||
CREATE TABLE t3(a int, b int, KEY(b));
|
||||
ALTER TABLE t3 ADD CONSTRAINT FOREIGN KEY(b) REFERENCES t1(bb);
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t3;
|
||||
ALTER TABLE t1 RENAME COLUMN bb TO b;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
ALTER TABLE t3 RENAME COLUMN b TO c;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t3;
|
||||
|
||||
# Different Algorithm
|
||||
CREATE TABLE t4(a int);
|
||||
ALTER TABLE t4 RENAME COLUMN a TO aa, ALGORITHM = INPLACE;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t4;
|
||||
ALTER TABLE t4 RENAME COLUMN aa TO a, ALGORITHM = COPY;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t4;
|
||||
DROP TABLE t4;
|
||||
|
||||
# View, Trigger and SP
|
||||
CREATE VIEW v1 AS SELECT d,e,f FROM t2;
|
||||
CREATE TRIGGER trg1 BEFORE UPDATE on t2 FOR EACH ROW SET NEW.d=OLD.d + 10;
|
||||
CREATE PROCEDURE sp1() INSERT INTO t2(d) VALUES(10);
|
||||
ALTER TABLE t2 RENAME COLUMN d TO g;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t2;
|
||||
SHOW CREATE VIEW v1;
|
||||
--error ER_VIEW_INVALID
|
||||
SELECT * FROM v1;
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
UPDATE t2 SET f = f + 10;
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
CALL sp1();
|
||||
DROP TRIGGER trg1;
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
# Generated Columns
|
||||
if (!$MTR_COMBINATION_HEAP)
|
||||
{
|
||||
CREATE TABLE t_gen(a INT, b DOUBLE GENERATED ALWAYS AS (SQRT(a)));
|
||||
INSERT INTO t_gen(a) VALUES(4);
|
||||
SELECT * FROM t_gen;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t_gen;
|
||||
ALTER TABLE t_gen RENAME COLUMN a TO c, CHANGE COLUMN b b DOUBLE GENERATED ALWAYS AS (SQRT(c));
|
||||
SELECT * FROM t_gen;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t_gen;
|
||||
#--error ER_DEPENDENT_BY_GENERATED_COLUMN
|
||||
ALTER TABLE t_gen CHANGE COLUMN c x INT;
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
show create table t_gen;
|
||||
#--error ER_DEPENDENT_BY_GENERATED_COLUMN
|
||||
ALTER TABLE t_gen RENAME COLUMN x TO a;
|
||||
DROP TABLE t_gen;
|
||||
}
|
||||
|
||||
|
||||
#
|
||||
# Negative tests
|
||||
#
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
# Invalid Syntax
|
||||
--error ER_PARSE_ERROR
|
||||
ALTER TABLE t1 RENAME COLUMN b z;
|
||||
--error ER_PARSE_ERROR
|
||||
ALTER TABLE t1 RENAME COLUMN FROM b TO z;
|
||||
--error ER_PARSE_ERROR
|
||||
ALTER TABLE t1 RENAME COLUMN b TO 1;
|
||||
|
||||
# Duplicate column name
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
ALTER TABLE t1 RENAME COLUMN b TO e, RENAME COLUMN c TO e;
|
||||
--error ER_DUP_FIELDNAME
|
||||
ALTER TABLE t1 ADD COLUMN z INT, RENAME COLUMN b TO z;
|
||||
|
||||
# Multiple operation on same column
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
ALTER TABLE t1 DROP COLUMN b, RENAME COLUMN b TO z;
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
ALTER TABLE t1 RENAME COLUMN b TO b, RENAME COLUMN b TO b;
|
||||
--error ER_CANT_DROP_FIELD_OR_KEY
|
||||
ALTER TABLE t1 RENAME COLUMN b TO c3, DROP COLUMN c3;
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
ALTER TABLE t1 ADD COLUMN z INT, CHANGE COLUMN z y INT, DROP COLUMN y;
|
||||
--error ER_BAD_FIELD_ERROR
|
||||
ALTER TABLE t1 ADD COLUMN z INT, RENAME COLUMN z TO y, DROP COLUMN y;
|
||||
|
||||
# Invalid column name while renaming
|
||||
--error ER_WRONG_COLUMN_NAME
|
||||
ALTER TABLE t1 RENAME COLUMN b TO `nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn`;
|
||||
# This error is different compared to ALTER TABLE ... CHANGE command
|
||||
--error ER_TOO_LONG_IDENT
|
||||
ALTER TABLE t1 CHANGE b `nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn` int;
|
||||
|
||||
--replace_result $default_engine DEFAULT_ENGINE " PAGE_CHECKSUM=1" ""
|
||||
SHOW CREATE TABLE t1;
|
||||
SELECT * FROM t1;
|
||||
|
||||
# Cleanup
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t3,t1,t2;
|
||||
SET DEFAULT_STORAGE_ENGINE= @save_default_engine;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-7318 RENAME INDEX
|
||||
--echo #
|
||||
@ -2608,47 +2364,6 @@ alter table t1 rename column abc to ABC;
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-25803 Inplace ALTER breaks MyISAM/Aria tables when order of keys is changed
|
||||
--echo #
|
||||
set @save_default_engine= @@default_storage_engine;
|
||||
--disable_query_log
|
||||
if ($MTR_COMBINATION_INNODB)
|
||||
{
|
||||
set default_storage_engine= innodb;
|
||||
}
|
||||
if ($MTR_COMBINATION_ARIA)
|
||||
{
|
||||
set default_storage_engine= aria;
|
||||
}
|
||||
--enable_query_log
|
||||
|
||||
if (!$MTR_COMBINATION_INNODB)
|
||||
{
|
||||
--disable_query_log
|
||||
--disable_result_log
|
||||
# There is no inplace ADD INDEX for MyISAM/Aria:
|
||||
create or replace table t1 (x int);
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 add unique (x), algorithm=inplace;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 add primary key(x), algorithm=inplace;
|
||||
--error ER_ALTER_OPERATION_NOT_SUPPORTED
|
||||
alter table t1 add index(x), algorithm=inplace;
|
||||
--enable_query_log
|
||||
--enable_result_log
|
||||
}
|
||||
|
||||
create or replace table t1 (x int, y int, unique (y), unique (x), primary key(x)) engine myisam;
|
||||
alter table t1 change x xx int, algorithm=inplace;
|
||||
check table t1;
|
||||
create or replace table t1 (x int, y int, unique (y), unique (x), primary key(x));
|
||||
alter table t1 change x xx int, algorithm=inplace;
|
||||
check table t1;
|
||||
# cleanup
|
||||
drop table t1;
|
||||
set @@default_storage_engine= @save_default_engine;
|
||||
|
||||
--echo #
|
||||
--echo # MDEV-25555 Server crashes in tree_record_pos after INPLACE-recreating index on HEAP table
|
||||
--echo #
|
||||
|
Reference in New Issue
Block a user