mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 10:56:12 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			524 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			524 lines
		
	
	
	
		
			14 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| ########################################################################
 | |
| # Tests how BACKUP STAGE interacts with other commands (MDEV-5336)
 | |
| ########################################################################
 | |
| 
 | |
| --source include/have_innodb.inc
 | |
| --source include/have_metadata_lock_info.inc
 | |
| 
 | |
| --echo #
 | |
| --echo # Check backup and FTWRL
 | |
| --echo #
 | |
| 
 | |
| flush tables with read lock;
 | |
| --error ER_CANT_UPDATE_WITH_READLOCK
 | |
| backup stage start;
 | |
| unlock tables;
 | |
| backup stage start;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| flush tables with read lock;
 | |
| backup stage end;
 | |
| 
 | |
| --echo #
 | |
| --echo # Check backup and FLUSH TABLES
 | |
| --echo #
 | |
| 
 | |
| flush tables;
 | |
| backup stage start;
 | |
| flush tables;
 | |
| backup stage end;
 | |
| 
 | |
| --echo #
 | |
| --echo # Check BACKUP STAGE under lock tables
 | |
| --echo #
 | |
| 
 | |
| create table t1 (a int);
 | |
| lock table t1 write;
 | |
| --error ER_LOCK_OR_ACTIVE_TRANSACTION
 | |
| backup stage start;
 | |
| --error ER_BACKUP_NOT_RUNNING
 | |
| backup stage end;
 | |
| unlock tables;
 | |
| 
 | |
| lock table t1 read;
 | |
| --error ER_LOCK_OR_ACTIVE_TRANSACTION
 | |
| backup stage start;
 | |
| --error ER_BACKUP_NOT_RUNNING
 | |
| backup stage end;
 | |
| unlock tables;
 | |
| 
 | |
| 
 | |
| --echo #
 | |
| --echo # Check lock tables under BACKUP STAGE
 | |
| --echo #
 | |
| --disable_service_connection
 | |
| backup stage start;
 | |
| unlock tables;
 | |
| select lock_mode from information_schema.metadata_lock_info where thread_id>0;
 | |
| 
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| lock table t1 write;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| lock table t1 read;
 | |
| unlock tables;
 | |
| backup stage end;
 | |
| drop table t1;
 | |
| --enable_service_connection
 | |
| 
 | |
| --echo #
 | |
| --echo # Check setting readonly under BACKUP STAGE
 | |
| --echo #
 | |
| backup stage start;
 | |
| --error ER_LOCK_OR_ACTIVE_TRANSACTION
 | |
| set @@global.read_only=1;
 | |
| backup stage end;
 | |
| 
 | |
| --echo # also make sure going back from read-only mode is not allowed
 | |
| set @@global.read_only=1;
 | |
| backup stage start;
 | |
| --error ER_LOCK_OR_ACTIVE_TRANSACTION
 | |
| set @@global.read_only=0;
 | |
| backup stage end;
 | |
| set @@global.read_only=0;
 | |
| 
 | |
| --echo #
 | |
| --echo # Check BACKUP STAGE under read_only
 | |
| --echo #
 | |
| 
 | |
| set @@global.read_only=1;
 | |
| backup stage start;
 | |
| backup stage end;
 | |
| set @@global.read_only=0;
 | |
| 
 | |
| --echo #
 | |
| --echo # Check that we can't create tables during backup
 | |
| --echo #
 | |
| 
 | |
| backup stage start;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| create table t1 (a int);
 | |
| backup stage end;
 | |
| 
 | |
| --echo # also make sure we can't write to a table during backup
 | |
| create table t1(a INT);
 | |
| backup stage start;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| insert into t1 values(1);
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| insert delayed into t1 values(1);
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| update t1 set a=1;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| delete from t1;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| truncate table t1;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| drop table t1;
 | |
| backup stage end;
 | |
| drop table t1;
 | |
| 
 | |
| --echo #
 | |
| --echo # BACKUP STAGE performs implicit commits
 | |
| --echo #
 | |
| --disable_view_protocol
 | |
| create table t1(a int) stats_persistent=0, engine=InnoDB;
 | |
| begin;
 | |
| insert into t1 values(1);
 | |
| select lock_mode from information_schema.metadata_lock_info where thread_id>0;
 | |
| backup stage start;
 | |
| select lock_mode from information_schema.metadata_lock_info where thread_id>0;
 | |
| backup stage block_commit;
 | |
| commit;
 | |
| backup stage end;
 | |
| drop table t1;
 | |
| --enable_view_protocol
 | |
| 
 | |
| --echo # Ensure that BACKUP STAGE ... does AUTOCOMMIT like most DDL.
 | |
| --echo # Sideeffect:
 | |
| --echo # Show the impact of not yet committed INSERT before sequence start
 | |
| --echo # and ROLLBACK sliding through the sequence.
 | |
| --disable_service_connection
 | |
| CREATE TABLE t1 (col1 INT) ENGINE = InnoDB;
 | |
| SET AUTOCOMMIT = 0;
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| ROLLBACK;
 | |
| BACKUP STAGE END;
 | |
| --echo #----
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| BACKUP STAGE FLUSH;
 | |
| ROLLBACK;
 | |
| BACKUP STAGE END;
 | |
| --echo #----
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| BACKUP STAGE FLUSH;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| ROLLBACK;
 | |
| BACKUP STAGE END;
 | |
| --echo #----
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| BACKUP STAGE FLUSH;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| ROLLBACK;
 | |
| BACKUP STAGE END;
 | |
| --echo #----
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| BACKUP STAGE FLUSH;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| BACKUP STAGE END;
 | |
| ROLLBACK;
 | |
| SELECT COUNT(*) = 5 AS expect_1 FROM t1;
 | |
| 
 | |
| --echo # Show the impact of not yet committed INSERT before sequence start
 | |
| --echo # and a COMMIT sliding through the sequence.
 | |
| 
 | |
| SET AUTOCOMMIT = 0;
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| COMMIT;
 | |
| BACKUP STAGE END;
 | |
| --echo #----
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| BACKUP STAGE FLUSH;
 | |
| COMMIT;
 | |
| BACKUP STAGE END;
 | |
| --echo #----
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| BACKUP STAGE FLUSH;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| COMMIT;
 | |
| BACKUP STAGE END;
 | |
| --echo #----
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| BACKUP STAGE FLUSH;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| COMMIT;
 | |
| BACKUP STAGE END;
 | |
| --echo #----
 | |
| INSERT INTO t1 SET col1 = 1;
 | |
| BACKUP STAGE START;
 | |
| BACKUP STAGE FLUSH;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| BACKUP STAGE END;
 | |
| COMMIT;
 | |
| SELECT COUNT(*) = 10 AS expect_1 FROM t1;
 | |
| DELETE FROM t1;
 | |
| COMMIT;
 | |
| drop table t1;
 | |
| 
 | |
| --echo #
 | |
| --echo # CHECK: RO transaction under BACKUP STAGE is a potential deadlock
 | |
| --echo # OTOH we most probably allow them under FTWRL as well
 | |
| --echo #
 | |
| --disable_view_protocol
 | |
| CREATE TABLE t1 (col1 INT)stats_persistent=0, ENGINE = InnoDB;
 | |
| insert into t1 values (1);
 | |
| --source ../suite/innodb/include/wait_all_purged.inc
 | |
| backup stage start;
 | |
| backup stage block_commit;
 | |
| begin;
 | |
| select * from t1;
 | |
| select lock_mode from information_schema.metadata_lock_info where thread_id>0;
 | |
| backup stage end;
 | |
| select lock_mode from information_schema.metadata_lock_info where thread_id>0;
 | |
| drop table t1;
 | |
| --enable_view_protocol
 | |
| 
 | |
| --echo #
 | |
| --echo # Check that handler are closed by backup stage block_ddl
 | |
| --echo #
 | |
| 
 | |
| create table t1 (a int, key a (a));
 | |
| insert into t1 (a) values (1), (2), (3), (4), (5);
 | |
| handler t1 open;
 | |
| handler t1 read a prev;
 | |
| backup stage start;
 | |
| handler t1 read a prev;
 | |
| backup stage flush;
 | |
| backup stage block_ddl;
 | |
| handler t1 read a prev;
 | |
| backup stage block_commit;
 | |
| handler t1 read a prev;
 | |
| backup stage end;
 | |
| handler t1 close;
 | |
| drop table t1;
 | |
| 
 | |
| --echo # Show the fate and impact of some SELECT /HANDLER ... READ
 | |
| --echo # sliding through the sequence.
 | |
| 
 | |
| CREATE TABLE t1_innodb (col1 INT) ENGINE = InnoDB;
 | |
| INSERT INTO t1_innodb values (1),(2),(3);
 | |
| COMMIT;
 | |
| CREATE TABLE t1_myisam (col1 INT) ENGINE = MyISAM;
 | |
| INSERT INTO t1_myisam values (1),(2),(3);
 | |
| BACKUP STAGE START;
 | |
| SELECT COUNT(*) FROM t1_innodb;
 | |
| SELECT * FROM t1_innodb;
 | |
| HANDLER t1_innodb OPEN;
 | |
| HANDLER t1_innodb READ FIRST;
 | |
| HANDLER t1_innodb CLOSE;
 | |
| SELECT COUNT(*) FROM t1_myisam;
 | |
| HANDLER t1_myisam OPEN;
 | |
| HANDLER t1_myisam READ FIRST;
 | |
| HANDLER t1_myisam CLOSE;
 | |
| BACKUP STAGE FLUSH;
 | |
| SELECT COUNT(*) FROM t1_innodb;
 | |
| HANDLER t1_innodb OPEN;
 | |
| HANDLER t1_innodb READ FIRST;
 | |
| HANDLER t1_innodb CLOSE;
 | |
| SELECT COUNT(*) FROM t1_myisam;
 | |
| HANDLER t1_myisam OPEN;
 | |
| HANDLER t1_myisam READ FIRST;
 | |
| HANDLER t1_myisam CLOSE;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| SELECT COUNT(*) FROM t1_innodb;
 | |
| HANDLER t1_innodb OPEN;
 | |
| HANDLER t1_innodb READ FIRST;
 | |
| HANDLER t1_innodb CLOSE;
 | |
| SELECT COUNT(*) FROM t1_myisam;
 | |
| HANDLER t1_myisam OPEN;
 | |
| HANDLER t1_myisam READ FIRST;
 | |
| HANDLER t1_myisam CLOSE;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| SELECT COUNT(*) FROM t1_innodb;
 | |
| HANDLER t1_innodb OPEN;
 | |
| HANDLER t1_innodb READ FIRST;
 | |
| HANDLER t1_innodb CLOSE;
 | |
| SELECT COUNT(*) FROM t1_myisam;
 | |
| HANDLER t1_myisam OPEN;
 | |
| HANDLER t1_myisam READ FIRST;
 | |
| HANDLER t1_myisam CLOSE;
 | |
| BACKUP STAGE END;
 | |
| drop table t1_innodb,t1_myisam;
 | |
| 
 | |
| --echo # Show the fate and impact of some SET GLOBAL transaction_read_only = 1/0
 | |
| --echo # sliding through the sequence.
 | |
| 
 | |
| BACKUP STAGE START;
 | |
| SET GLOBAL transaction_read_only = 1;
 | |
| SET GLOBAL transaction_read_only = 0;
 | |
| BACKUP STAGE FLUSH;
 | |
| SET GLOBAL transaction_read_only = 1;
 | |
| SET GLOBAL transaction_read_only = 0;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| SET GLOBAL transaction_read_only = 1;
 | |
| SET GLOBAL transaction_read_only = 0;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| SET GLOBAL transaction_read_only = 1;
 | |
| SET GLOBAL transaction_read_only = 0;
 | |
| BACKUP STAGE END;
 | |
| 
 | |
| --echo # Show the fate and impact of some SET SESSION sql_log_bin = 0/1
 | |
| --echo # sliding through the sequence.
 | |
| COMMIT;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| BACKUP STAGE START;
 | |
| SET SESSION sql_log_bin = 0;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| BACKUP STAGE FLUSH;
 | |
| SET SESSION sql_log_bin = 0;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| SET SESSION sql_log_bin = 0;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| SET SESSION sql_log_bin = 0;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| BACKUP STAGE END;
 | |
| 
 | |
| --echo #----
 | |
| SET SESSION sql_log_bin = 0;
 | |
| BACKUP STAGE START;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| SET SESSION sql_log_bin = 0;
 | |
| BACKUP STAGE FLUSH;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| SET SESSION sql_log_bin = 0;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| SET SESSION sql_log_bin = 0;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| SET SESSION sql_log_bin = 0;
 | |
| BACKUP STAGE END;
 | |
| SET SESSION sql_log_bin = 1;
 | |
| --enable_service_connection
 | |
| 
 | |
| --echo #-----------------------------------------------------------------------
 | |
| --echo # BACKUP STAGE statements are not allowed in stored routines
 | |
| --echo #-----------------------------------------------------------------------
 | |
| 
 | |
| CREATE TABLE t1 (col1 INT);
 | |
| 
 | |
| delimiter |;
 | |
| --error ER_SP_BADSTATEMENT
 | |
| CREATE PROCEDURE p1()
 | |
| BEGIN
 | |
|   BACKUP STAGE START;
 | |
|   BACKUP STAGE FLUSH;
 | |
|   BACKUP STAGE BLOCK_DDL;
 | |
|   BACKUP STAGE BLOCK_COMMIT;
 | |
|   BACKUP STAGE END;
 | |
| END|
 | |
| 
 | |
| --error ER_SP_BADSTATEMENT
 | |
| CREATE FUNCTION f1 (s CHAR(20)) RETURNS INT DETERMINISTIC
 | |
| BEGIN
 | |
|   BACKUP STAGE START;
 | |
|   BACKUP STAGE FLUSH;
 | |
|   BACKUP STAGE BLOCK_DDL;
 | |
|   BACKUP STAGE BLOCK_COMMIT;
 | |
|   BACKUP STAGE END;
 | |
|   RETURN 1;
 | |
| END|
 | |
| 
 | |
| --error ER_SP_BADSTATEMENT
 | |
| CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW
 | |
| BEGIN
 | |
|     BACKUP STAGE START;
 | |
|     BACKUP STAGE FLUSH;
 | |
|     BACKUP STAGE BLOCK_DDL;
 | |
|     BACKUP STAGE BLOCK_COMMIT;
 | |
|     BACKUP STAGE END;
 | |
| END|
 | |
| 
 | |
| delimiter ;|
 | |
| DROP TABLE t1;
 | |
| 
 | |
| --echo #-----------------------------------------------------------------------
 | |
| --echo # Check BACKUP status variables
 | |
| --echo #-----------------------------------------------------------------------
 | |
| 
 | |
| SET SESSION lock_wait_timeout = 1;
 | |
| 
 | |
| FLUSH STATUS;
 | |
| 
 | |
| # MDEV-5336 introduces the status variable Com_backup
 | |
| --echo # Show how the status variable 'Com_backup' changes after BACKUP STAGE ..
 | |
| 
 | |
| SHOW STATUS LIKE 'Com_backup';
 | |
| BACKUP STAGE START;
 | |
| SHOW STATUS LIKE 'Com_backup';
 | |
| --error ER_BACKUP_WRONG_STAGE
 | |
| BACKUP STAGE START;
 | |
| SHOW STATUS LIKE 'Com_backup';
 | |
| BACKUP STAGE FLUSH;
 | |
| SHOW STATUS LIKE 'Com_backup';
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| SHOW STATUS LIKE 'Com_backup';
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| SHOW STATUS LIKE 'Com_backup';
 | |
| BACKUP STAGE END;
 | |
| 
 | |
| --echo # In case the backup lock is taken by the current connection than
 | |
| --echo # - DML modifying some permanent table is not allowed
 | |
| 
 | |
| CREATE TABLE t1_innodb (col1 INT) ENGINE = InnoDB;
 | |
| CREATE TABLE t1_myisam (col1 INT) ENGINE = MyISAM;
 | |
| 
 | |
| BACKUP STAGE START;
 | |
| SET AUTOCOMMIT = 0;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| INSERT INTO t1_innodb SET col1 = 1;
 | |
| SET AUTOCOMMIT = 1;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| INSERT INTO t1_innodb SET col1 = 1;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| INSERT INTO t1_myisam SET col1 = 1;
 | |
| --echo # - DDL creating or renaming a permanent table or a procedure etc.
 | |
| --echo #   is not allowed.                                                               
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| CREATE TABLE throw_away (col1 INT) ENGINE = InnoDB;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| RENAME TABLE t1_innodb To throw_away;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| CREATE PROCEDURE p1() SELECT 13;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| CREATE PROCEDURE p1() SELECT 13;
 | |
| BACKUP STAGE END;
 | |
| DROP TABLE t1_innodb;
 | |
| DROP TABLE t1_myisam;
 | |
| 
 | |
| --echo #
 | |
| --echo # Creating and modifying TEMPORARY TABLES are allowed
 | |
| --echo #
 | |
| --disable_view_protocol
 | |
| BACKUP STAGE START;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| CREATE TEMPORARY TABLE tmp (col1 INT);
 | |
| DROP TEMPORARY TABLE tmp;
 | |
| 
 | |
| CREATE TEMPORARY TABLE t_temporary_innodb (col1 INT) ENGINE = InnoDB;
 | |
| CREATE TEMPORARY TABLE t_temporary_myisam (col1 INT) ENGINE = MyISAM;
 | |
| --echo # - DML modifying that temporary table is allowed.
 | |
| INSERT INTO t_temporary_innodb SET col1 = 1;
 | |
| SELECT COUNT(*) FROM t_temporary_innodb;
 | |
| INSERT INTO t_temporary_myisam SET col1 = 1;
 | |
| SELECT COUNT(*) FROM t_temporary_myisam;
 | |
| BACKUP STAGE END;
 | |
| 
 | |
| --echo # Show the fate and impact of some auto committed INSERT into temporary
 | |
| --echo # table sliding through the sequence.
 | |
| SET AUTOCOMMIT = 1;
 | |
| BACKUP STAGE START;
 | |
| INSERT INTO t_temporary_innodb SET col1 = 1;
 | |
| INSERT INTO t_temporary_myisam SET col1 = 1;
 | |
| BACKUP STAGE FLUSH;
 | |
| INSERT INTO t_temporary_innodb SET col1 = 1;
 | |
| INSERT INTO t_temporary_myisam SET col1 = 1;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| INSERT INTO t_temporary_innodb SET col1 = 1;
 | |
| INSERT INTO t_temporary_myisam SET col1 = 1;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| INSERT INTO t_temporary_innodb SET col1 = 1;
 | |
| INSERT INTO t_temporary_myisam SET col1 = 1;
 | |
| BACKUP STAGE END;
 | |
| SELECT COUNT(*) FROM t_temporary_innodb;
 | |
| 
 | |
| --echo # Show the fate and impact of some DROP/CREATE TEMPORARY TABLE sliding
 | |
| --echo # through the sequence.
 | |
| SET AUTOCOMMIT = 1;
 | |
| BACKUP STAGE START;
 | |
| DROP TEMPORARY TABLE t_temporary_innodb;
 | |
| CREATE TEMPORARY TABLE t_temporary_innodb (col1 INT) ENGINE = InnoDB;
 | |
| BACKUP STAGE FLUSH;
 | |
| DROP TEMPORARY TABLE t_temporary_innodb;
 | |
| CREATE TEMPORARY TABLE t_temporary_innodb (col1 INT) ENGINE = InnoDB;
 | |
| BACKUP STAGE BLOCK_DDL;
 | |
| DROP TEMPORARY TABLE t_temporary_innodb;
 | |
| CREATE TEMPORARY TABLE t_temporary_innodb (col1 INT) ENGINE = InnoDB;
 | |
| BACKUP STAGE BLOCK_COMMIT;
 | |
| DROP TEMPORARY TABLE t_temporary_innodb;
 | |
| CREATE TEMPORARY TABLE t_temporary_innodb (col1 INT) ENGINE = InnoDB;
 | |
| BACKUP STAGE END;
 | |
| --echo # Show that even more DDL on the temporary table is allowed.
 | |
| BACKUP STAGE START;
 | |
| TRUNCATE t_temporary_innodb;
 | |
| ALTER TABLE t_temporary_innodb ADD COLUMN col2 INT;
 | |
| ALTER TABLE t_temporary_innodb ADD KEY idx(col2);
 | |
| BACKUP STAGE END;
 | |
| --enable_view_protocol
 | |
| 
 | |
| #
 | |
| # MDEV-18067, MDEV-18068 and MDEV-18069
 | |
| # Server crashes with BACKUP STAGE and FLUSH TABLE table_name
 | |
| #
 | |
| 
 | |
| CREATE OR REPLACE TABLE t1 (pk INT PRIMARY KEY, f INT);
 | |
| BACKUP STAGE START;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| FLUSH TABLE t1 FOR EXPORT;
 | |
| --error ER_BACKUP_LOCK_IS_ACTIVE
 | |
| FLUSH TABLE t1 WITH READ LOCK;
 | |
| BACKUP STAGE END;
 | |
| DROP TABLE t1;
 | 
