polardbxengine/mysql-test/suite/innodb_undo/r/undo_tablespace.result

288 lines
12 KiB
Plaintext

#
# InnoDB supports CREATE/ALTER/DROP UNDO TABLESPACE
#
SET GLOBAL innodb_fast_shutdown = 0;
# restart
SET GLOBAL innodb_undo_log_truncate = OFF;
CREATE UNDO TABLESPACE undo_003 ADD DATAFILE 'undo_003.ibu';
CREATE UNDO TABLESPACE undo_004 ADD DATAFILE 'undo_004.ibu';
CREATE UNDO TABLESPACE undo_005 ADD DATAFILE '5.ibu';
SELECT NAME, SPACE_TYPE, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo' ORDER BY NAME;
NAME SPACE_TYPE STATE
innodb_undo_001 Undo active
innodb_undo_002 Undo active
undo_003 Undo active
undo_004 Undo active
undo_005 Undo active
SELECT TABLESPACE_NAME, FILE_TYPE, FILE_NAME FROM INFORMATION_SCHEMA.FILES
WHERE FILE_NAME LIKE '%undo%' ORDER BY TABLESPACE_NAME;
TABLESPACE_NAME FILE_TYPE FILE_NAME
innodb_undo_001 UNDO LOG ./undo_001
innodb_undo_002 UNDO LOG ./undo_002
undo_003 UNDO LOG ./undo_003.ibu
undo_004 UNDO LOG ./undo_004.ibu
CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.ibd';
CREATE TABLE t1 (a int primary key) TABLESPACE ts1;
#
# Populate t1 with separate INSERTs so that all rsegs are used.
#
CREATE PROCEDURE populate_t1(IN BASE INT, IN SIZE INT)
BEGIN
DECLARE i INT DEFAULT BASE;
WHILE (i <= SIZE) DO
INSERT INTO t1 values (i);
SET i = i + 1;
END WHILE;
END|
CALL populate_t1(1, 1000);
#
# Show that the implicit undo tablespaces may be set inactive
# and that a minimum of 2 undo tablespaces must remain active.
#
ALTER UNDO TABLESPACE innodb_undo_001 SET INACTIVE;
ALTER UNDO TABLESPACE innodb_undo_002 SET INACTIVE;
ALTER UNDO TABLESPACE undo_003 SET INACTIVE;
ALTER UNDO TABLESPACE undo_004 SET INACTIVE;
ERROR HY000: Cannot set undo_004 inactive since there would be less than 2 undo tablespaces left active.
SHOW WARNINGS;
Level Code Message
Error 3655 Cannot set undo_004 inactive since there would be less than 2 undo tablespaces left active.
Error 1533 Failed to alter: UNDO TABLESPACE undo_004
Error 3655 ALTER UNDO TABLEPSPACE operation is disallowed on undo_004
ALTER UNDO TABLESPACE undo_005 SET INACTIVE;
ERROR HY000: Cannot set undo_005 inactive since there would be less than 2 undo tablespaces left active.
SHOW WARNINGS;
Level Code Message
Error 3655 Cannot set undo_005 inactive since there would be less than 2 undo tablespaces left active.
Error 1533 Failed to alter: UNDO TABLESPACE undo_005
Error 3655 ALTER UNDO TABLEPSPACE operation is disallowed on undo_005
SELECT NAME, SPACE_TYPE, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo' ORDER BY NAME;
NAME SPACE_TYPE STATE
innodb_undo_001 Undo empty
innodb_undo_002 Undo empty
undo_003 Undo empty
undo_004 Undo active
undo_005 Undo active
ALTER UNDO TABLESPACE innodb_undo_001 SET ACTIVE;
ALTER UNDO TABLESPACE innodb_undo_002 SET ACTIVE;
SELECT NAME, SPACE_TYPE, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo' ORDER BY NAME;
NAME SPACE_TYPE STATE
innodb_undo_001 Undo active
innodb_undo_002 Undo active
undo_003 Undo empty
undo_004 Undo active
undo_005 Undo active
#
# Show that SET ACTIVE and SET INACTIVE are indempotent.
#
ALTER UNDO TABLESPACE undo_003 SET ACTIVE;
ALTER UNDO TABLESPACE undo_003 SET ACTIVE;
ALTER UNDO TABLESPACE undo_003 SET INACTIVE;
ALTER UNDO TABLESPACE undo_003 SET INACTIVE;
ALTER UNDO TABLESPACE undo_003 SET INACTIVE;
#
# SET the explicit tablespaces INACTIVE.
#
ALTER UNDO TABLESPACE undo_004 SET INACTIVE;
ALTER UNDO TABLESPACE undo_005 SET INACTIVE;
SELECT NAME, SPACE_TYPE, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo' ORDER BY NAME;
NAME SPACE_TYPE STATE
innodb_undo_001 Undo active
innodb_undo_002 Undo active
undo_003 Undo empty
undo_004 Undo empty
undo_005 Undo empty
#
# Drop undo_003
#
DROP UNDO TABLESPACE undo_003;
SELECT NAME, SPACE_TYPE, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo' ORDER BY NAME;
NAME SPACE_TYPE STATE
innodb_undo_001 Undo active
innodb_undo_002 Undo active
undo_004 Undo empty
undo_005 Undo empty
ALTER UNDO TABLESPACE undo_005 SET ACTIVE;
SELECT NAME, SPACE_TYPE, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo' ORDER BY NAME;
NAME SPACE_TYPE STATE
innodb_undo_001 Undo active
innodb_undo_002 Undo active
undo_004 Undo empty
undo_005 Undo active
#
# Try various bad CREATE UNDO TABLESPACE commands
#
CREATE UNDO TABLESPACE innodb_undo_001 ADD DATAFILE 'undo_001.ibu';
ERROR 42000: InnoDB: Tablespace names starting with `innodb_` are reserved.
SHOW WARNINGS;
Level Code Message
Error 3119 InnoDB: Tablespace names starting with `innodb_` are reserved.
Error 3119 Incorrect tablespace name `innodb_undo_001`
CREATE UNDO TABLESPACE undo_5 ADD DATAFILE '5.ibu';
ERROR HY000: Duplicate file name for tablespace 'undo_5'
SHOW WARNINGS;
Level Code Message
Error 3606 Duplicate file name for tablespace 'undo_5'
CREATE UNDO TABLESPACE undo_99 ADD DATAFILE 'undo_99.ibu';
ERROR HY000: The ADD DATAFILE filepath already exists.
SHOW WARNINGS;
Level Code Message
Error 3121 The ADD DATAFILE filepath already exists.
Error 1528 Failed to create UNDO TABLESPACE undo_99
Error 3121 Incorrect File Name 'undo_99.ibu'.
CREATE UNDO TABLESPACE 'undo_99' ADD DATAFILE 'undo_001.ibu';
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''undo_99' ADD DATAFILE 'undo_001.ibu'' at line 1
CREATE UNDO TABLESPACE `undo_99`;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
CREATE UNDO TABLESPACE undo_99 ADD DATAFILE 'undo_99';
ERROR HY000: The ADD DATAFILE filepath must end with '.ibu'.
SHOW WARNINGS;
Level Code Message
Error 3121 The ADD DATAFILE filepath must end with '.ibu'.
Error 1528 Failed to create UNDO TABLESPACE undo_99
Error 3121 Incorrect File Name 'undo_99'.
CREATE UNDO TABLESPACE undo_99 ADD DATAFILE 'undo_99.ibd';
ERROR HY000: The ADD DATAFILE filepath must end with '.ibu'.
SHOW WARNINGS;
Level Code Message
Error 3121 The ADD DATAFILE filepath must end with '.ibu'.
Error 1528 Failed to create UNDO TABLESPACE undo_99
Error 3121 Incorrect File Name 'undo_99.ibd'.
CREATE UNDO TABLESPACE undo_99 ADD DATAFILE '/dir_does_not_exist/undo_99.ibu';
ERROR HY000: The directory does not exist.
SHOW WARNINGS;
Level Code Message
Error 3121 The directory does not exist.
Error 3121 CREATE UNDO TABLESPACE data file must be in one of these directories './'.
Error 1528 Failed to create UNDO TABLESPACE undo_99
Error 3121 Incorrect File Name '/dir_does_not_exist/undo_99.ibu'.
CREATE UNDO TABLESPACE undo_99 ADD DATAFILE '../undo_99.ibu';
ERROR HY000: The ADD DATAFILE filepath for an UNDO TABLESPACE cannot be a relative path.
SHOW WARNINGS;
Level Code Message
Error 3121 The ADD DATAFILE filepath for an UNDO TABLESPACE cannot be a relative path.
Error 3121 CREATE UNDO TABLESPACE data file must be in one of these directories './'.
Error 1528 Failed to create UNDO TABLESPACE undo_99
Error 3121 Incorrect File Name '../undo_99.ibu'.
#
# Try various bad ALTER UNDO TABLESPACE commands
#
ALTER UNDO TABLESPACE `undo_99`;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
ALTER UNDO TABLESPACE `undo_99` SET INACTIVE;
ERROR HY000: Tablespace undo_99 doesn't exist.
SHOW WARNINGS;
Level Code Message
Error 3510 Tablespace undo_99 doesn't exist.
ALTER UNDO TABLESPACE `undo_99` SET ACTIVE;
ERROR HY000: Tablespace undo_99 doesn't exist.
SHOW WARNINGS;
Level Code Message
Error 3510 Tablespace undo_99 doesn't exist.
ALTER UNDO TABLESPACE `ts1` SET INACTIVE;
ERROR 42000: Cannot ALTER UNDO TABLESPACE `ts1` because it is a general tablespace. Please use ALTER TABLESPACE.
SHOW WARNINGS;
Level Code Message
Error 3119 Cannot ALTER UNDO TABLESPACE `ts1` because it is a general tablespace. Please use ALTER TABLESPACE.
Error 1533 Failed to alter: UNDO TABLESPACE ts1
Error 3655 ALTER UNDO TABLEPSPACE operation is disallowed on ts1
ALTER UNDO TABLESPACE `ts1` SET ACTIVE;
ERROR 42000: Cannot ALTER UNDO TABLESPACE `ts1` because it is a general tablespace. Please use ALTER TABLESPACE.
SHOW WARNINGS;
Level Code Message
Error 3119 Cannot ALTER UNDO TABLESPACE `ts1` because it is a general tablespace. Please use ALTER TABLESPACE.
Error 1533 Failed to alter: UNDO TABLESPACE ts1
Error 3655 ALTER UNDO TABLEPSPACE operation is disallowed on ts1
ALTER TABLESPACE undo_005 RENAME TO undo_5;
ERROR 42000: Cannot ALTER TABLESPACE `undo_005` because it is an undo tablespace. Please use ALTER UNDO TABLESPACE.
SHOW WARNINGS;
Level Code Message
Error 3119 Cannot ALTER TABLESPACE `undo_005` because it is an undo tablespace. Please use ALTER UNDO TABLESPACE.
Error 1533 Failed to alter: TABLESPACE undo_005
Error 3655 ALTER TABLESPACE ... RENAME TO operation is disallowed on undo_005
ALTER UNDO TABLESPACE undo_005 SET EMPTY;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EMPTY' at line 1
#
# Try various bad DROP UNDO TABLESPACE commands
#
DROP UNDO TABLESPACE innodb_undo_001;
ERROR 42000: InnoDB: Tablespace names starting with `innodb_` are reserved.
SHOW WARNINGS;
Level Code Message
Error 3119 InnoDB: Tablespace names starting with `innodb_` are reserved.
Error 3119 Incorrect tablespace name `innodb_undo_001`
DROP UNDO TABLESPACE undo_99;
ERROR HY000: Tablespace undo_99 doesn't exist.
SHOW WARNINGS;
Level Code Message
Error 3510 Tablespace undo_99 doesn't exist.
DROP UNDO TABLESPACE undo_005;
ERROR HY000: Failed to drop UNDO TABLESPACE undo_005
SHOW WARNINGS;
Level Code Message
Error 1529 Failed to drop UNDO TABLESPACE undo_005
Error 3120 Tablespace `undo_005` is not empty.
DROP TABLESPACE undo_005;
ERROR 42000: Cannot DROP TABLESPACE `undo_005` because it is an undo tablespace. Please use DROP UNDO TABLESPACE.
SHOW WARNINGS;
Level Code Message
Error 3119 Cannot DROP TABLESPACE `undo_005` because it is an undo tablespace. Please use DROP UNDO TABLESPACE.
Error 1529 Failed to drop TABLESPACE undo_005
Error 3655 DROP TABLEPSPACE operation is disallowed on undo_005
DROP UNDO TABLESPACE ts1;
ERROR 42000: Cannot DROP UNDO TABLESPACE `ts1` because it is a general tablespace. Please use DROP TABLESPACE.
SHOW WARNINGS;
Level Code Message
Error 3119 Cannot DROP UNDO TABLESPACE `ts1` because it is a general tablespace. Please use DROP TABLESPACE.
Error 1529 Failed to drop UNDO TABLESPACE ts1
Error 3655 DROP UNDO TABLEPSPACE operation is disallowed on ts1
#
# Show that tables cannot be added to an undo tablespace.
#
CREATE TABLE t2 (a int primary key) TABLESPACE undo_004;
ERROR 42000: InnoDB: An undo tablespace cannot contain tables.
SHOW WARNINGS;
Level Code Message
Error 3119 InnoDB: An undo tablespace cannot contain tables.
Error 1031 Table storage engine for 't2' doesn't have this option
ALTER TABLE t1 TABLESPACE undo_004;
ERROR 42000: InnoDB: An undo tablespace cannot contain tables.
SHOW WARNINGS;
Level Code Message
Error 3119 InnoDB: An undo tablespace cannot contain tables.
Error 1478 Table storage engine 'InnoDB' does not support the create option 'TABLESPACE'
#
# Show that a missing undo tablespace can be dropped
#
# restart
SELECT NAME, SPACE_TYPE, STATE FROM INFORMATION_SCHEMA.INNODB_TABLESPACES
WHERE SPACE_TYPE = 'Undo' ORDER BY NAME;
NAME SPACE_TYPE STATE
innodb_undo_001 Undo active
innodb_undo_002 Undo active
undo_004 Undo empty
undo_005 Undo active
SELECT TABLESPACE_NAME, FILE_TYPE, FILE_NAME FROM INFORMATION_SCHEMA.FILES
WHERE FILE_NAME LIKE '%undo%' ORDER BY TABLESPACE_NAME;
TABLESPACE_NAME FILE_TYPE FILE_NAME
innodb_undo_001 UNDO LOG ./undo_001
innodb_undo_002 UNDO LOG ./undo_002
undo_004 NULL ./undo_004.ibu
Warnings:
Warning 1812 Tablespace is missing for table undo_004.
DROP UNDO TABLESPACE undo_004;
#
# Cleanup
#
DROP TABLE t1;
DROP TABLESPACE ts1;
DROP PROCEDURE populate_t1;
ALTER UNDO TABLESPACE undo_005 SET INACTIVE;
DROP UNDO TABLESPACE undo_005;