mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-26131 SEGV in ha_innobase::discard_or_import_tablespace
Import operation without .cfg file fails when there is mismatch of index between metadata table and .ibd file. Moreover, MDEV-19022 shows that InnoDB can end up with index tree where non-leaf page has only one child page. So it is unsafe to find the secondary index root page. This patch does the following when importing the table without .cfg file: 1) If the metadata contains more than one index then InnoDB stops the import operation and report the user to drop all secondary indexes before doing import operation. 2) When the metadata contain only clustered index then InnoDB finds the index id by reading page 0 & page 3 instead of traversing the whole tablespace.
This commit is contained in:
@ -277,8 +277,17 @@ SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab;
|
||||
|
||||
--disable_query_log
|
||||
|
||||
--error ER_INTERNAL_ERROR
|
||||
ALTER TABLE tab IMPORT TABLESPACE;
|
||||
|
||||
ALTER TABLE tab DROP INDEX idx2;
|
||||
ALTER TABLE tab DROP INDEX idx3;
|
||||
ALTER TABLE tab DROP INDEX idx4;
|
||||
ALTER TABLE tab DROP INDEX idx5;
|
||||
ALTER TABLE tab DROP INDEX idx6;
|
||||
|
||||
SHOW CREATE TABLE tab;
|
||||
ALTER TABLE tab IMPORT TABLESPACE;
|
||||
--enable_query_log
|
||||
|
||||
CHECK TABLE tab;
|
||||
@ -308,7 +317,6 @@ INSERT INTO tab SELECT * FROM tab1;
|
||||
--enable_info
|
||||
ALTER TABLE tab DROP PRIMARY KEY;
|
||||
|
||||
ALTER TABLE tab DROP INDEX idx2;
|
||||
--disable_info
|
||||
|
||||
# Check spatial index on temp tables
|
||||
|
Reference in New Issue
Block a user