mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-31 15:50:51 +03:00 
			
		
		
		
	fil_delete_tablespace(): Remove the unused parameter drop_ahi, and add the parameter if_exists=false. We want to suppress error messages if we know that the tablespace has been discarded. dict_table_rename_in_cache(): Pass the new parameter to fil_delete_tablespace(), that is, do not complain about missing tablespace if the tablespace has been discarded. row_make_new_pathname(): Declare as static. row_drop_table_for_mysql(): Tolerate !table->data_dir_path when the tablespace has been discarded. row_rename_table_for_mysql(): Skip part of the RENAME TABLE when fil_space_get_first_path() returns NULL.
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| --source include/not_embedded.inc
 | |
| --source include/innodb_page_size.inc
 | |
| 
 | |
| --echo #
 | |
| --echo # Bug#13955083 ALLOW IN-PLACE DDL OPERATIONS ON MISSING
 | |
| --echo # OR DISCARDED TABLESPACES
 | |
| --echo #
 | |
| 
 | |
| --disable_query_log
 | |
| call mtr.add_suppression("InnoDB: Cannot open datafile for read-only: ");
 | |
| call mtr.add_suppression("InnoDB: Operating system error number .* in a file operation");
 | |
| call mtr.add_suppression("InnoDB: The error means the system cannot find the path specified");
 | |
| call mtr.add_suppression("InnoDB: If you are installing InnoDB, remember that you must create directories yourself, InnoDB does not create them");
 | |
| call mtr.add_suppression("InnoDB: Ignoring tablespace for `test`.`\(t\|x\.\.d\)` because it could not be opened");
 | |
| call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing");
 | |
| call mtr.add_suppression("Could not find a valid tablespace file for");
 | |
| call mtr.add_suppression("InnoDB: Failed to find tablespace for table `test`\.`\(t\|x\.\.d\)` in the cache");
 | |
| call mtr.add_suppression("InnoDB: Cannot delete tablespace [0-9]+.*not found");
 | |
| call mtr.add_suppression("Table .* in the InnoDB data dictionary has tablespace id .*, but tablespace with that id or name does not exist");
 | |
| --enable_query_log
 | |
| 
 | |
| let $MYSQLD_DATADIR=`select @@datadir`;
 | |
| SET GLOBAL innodb_file_per_table=1;
 | |
| CREATE TABLE t(a SERIAL)ENGINE=InnoDB;
 | |
| CREATE TABLE `x..d` (a INT PRIMARY KEY, b INT) ENGINE=InnoDB;
 | |
| CREATE TABLE t1(a SERIAL)ENGINE=InnoDB;
 | |
| INSERT INTO t1 VALUES(1),(2),(3);
 | |
| 
 | |
| --source include/shutdown_mysqld.inc
 | |
| 
 | |
| # Remove the tablespace files.
 | |
| --remove_file $MYSQLD_DATADIR/test/t.ibd
 | |
| --remove_file $MYSQLD_DATADIR/test/x@002e@002ed.ibd
 | |
| 
 | |
| --source include/start_mysqld.inc
 | |
| 
 | |
| # The table does exist, only the tablespace does not exist.
 | |
| --error ER_GET_ERRNO
 | |
| SELECT * FROM t;
 | |
| 
 | |
| --error ER_GET_ERRNO
 | |
| ALTER TABLE t ADD INDEX (a), ALGORITHM=INPLACE;
 | |
| SHOW WARNINGS;
 | |
| 
 | |
| --error ER_GET_ERRNO
 | |
| ALTER TABLE t ADD INDEX (a), ALGORITHM=COPY;
 | |
| SHOW WARNINGS;
 | |
| 
 | |
| --error ER_GET_ERRNO
 | |
| ALTER TABLE t AUTO_INCREMENT=1, ALGORITHM=INPLACE;
 | |
| --error ER_GET_ERRNO
 | |
| ALTER TABLE t AUTO_INCREMENT=1, ALGORITHM=COPY;
 | |
| 
 | |
| --error ER_PARSE_ERROR
 | |
| ALTER TABLE t ALGORITHM=INPLACE, DISCARD TABLESPACE;
 | |
| --error ER_PARSE_ERROR
 | |
| ALTER TABLE t ALGORITHM=COPY, DISCARD TABLESPACE;
 | |
| --error ER_PARSE_ERROR
 | |
| ALTER TABLE t ALGORITHM=DEFAULT, DISCARD TABLESPACE;
 | |
| ALTER TABLE t DISCARD TABLESPACE;
 | |
| RENAME TABLE t TO u;
 | |
| RENAME TABLE u TO v;
 | |
| DROP TABLE v;
 | |
| --error ER_GET_ERRNO
 | |
| SELECT * FROM `x..d`;
 | |
| DROP TABLE `x..d`;
 | |
| 
 | |
| ALTER TABLE t1 DISCARD TABLESPACE;
 | |
| --error ER_TABLESPACE_DISCARDED
 | |
| ALTER TABLE t1 AUTO_INCREMENT=1, ALGORITHM=INPLACE;
 | |
| --error ER_TABLESPACE_DISCARDED
 | |
| ALTER TABLE t1 AUTO_INCREMENT=1, FORCE, ALGORITHM=INPLACE;
 | |
| --error ER_TABLESPACE_DISCARDED
 | |
| ALTER TABLE t1 AUTO_INCREMENT=1, ALGORITHM=COPY;
 | |
| DROP TABLE t1;
 |