mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-04 12:56:14 +01:00 
			
		
		
		
	whenever possible, partitioning should use the full partition plugin name, not the one byte legacy code. Normally, ha_partition can get the engine plugin from table_share->default_part_plugin. But in some cases, e.g. in DROP TABLE, the table isn't opened, table_share is NULL, and ha_partition has to parse the frm, much like dd_frm_type() does. temporary_tables.cc, sql_table.cc: When dropping a table, it must be deleted in the engine first, then frm file. Because frm can be the only true source of metadata that the engine might need for DROP. table.cc: when opening a partitioned table, if the engine for partitions is not found, do not fallback to MyISAM.
		
			
				
	
	
		
			29 lines
		
	
	
	
		
			961 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
	
		
			961 B
		
	
	
	
		
			Text
		
	
	
	
	
	
--source include/have_partition.inc
 | 
						|
--source include/not_blackhole.inc
 | 
						|
 | 
						|
--disable_warnings
 | 
						|
DROP TABLE IF EXISTS t1;
 | 
						|
--enable_warnings
 | 
						|
 | 
						|
let $MYSQLD_DATADIR= `SELECT @@datadir`;
 | 
						|
 | 
						|
--echo #
 | 
						|
--echo # Bug#46086: crash when dropping a partitioned table and
 | 
						|
--echo #            the original engine is disabled
 | 
						|
--echo # Copy a .frm and .par file which was created with:
 | 
						|
--echo # create table `t1` (`id` int primary key) engine=blackhole
 | 
						|
--echo # partition by key () partitions 1;
 | 
						|
--copy_file std_data/parts/t1_blackhole.frm $MYSQLD_DATADIR/test/t1.frm
 | 
						|
--copy_file std_data/parts/t1_blackhole.par $MYSQLD_DATADIR/test/t1.par
 | 
						|
SHOW TABLES;
 | 
						|
--replace_result $MYSQLD_DATADIR ./
 | 
						|
--error ER_NOT_FORM_FILE
 | 
						|
SHOW CREATE TABLE t1;
 | 
						|
 | 
						|
# The replace is needed for Solaris
 | 
						|
--replace_result "Not owner" "Operation not permitted"
 | 
						|
--error ER_GET_ERRNO
 | 
						|
DROP TABLE t1;
 | 
						|
--list_files $MYSQLD_DATADIR/test t1*
 | 
						|
--remove_file $MYSQLD_DATADIR/test/t1.frm
 | 
						|
--remove_file $MYSQLD_DATADIR/test/t1.par
 |