mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 10:14:19 +01:00
Bug#46339 - crash on REPAIR TABLE merge table USE_FRM
Merge from saved bundle.
This commit is contained in:
commit
386d50478c
3 changed files with 119 additions and 3 deletions
|
@ -2298,4 +2298,45 @@ t2 WHERE b SOUNDS LIKE e AND d = 1;
|
|||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
|
||||
DROP TABLE t2, t1;
|
||||
#
|
||||
# Bug#46339 - crash on REPAIR TABLE merge table USE_FRM
|
||||
#
|
||||
DROP TABLE IF EXISTS m1, t1;
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MYISAM;
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1) INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 READ;
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
Table Op Msg_type Msg_text
|
||||
test.m1 repair note The storage engine for the table doesn't support repair
|
||||
UNLOCK TABLES;
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
Table Op Msg_type Msg_text
|
||||
test.m1 repair note The storage engine for the table doesn't support repair
|
||||
DROP TABLE m1,t1;
|
||||
CREATE TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1);
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
Table Op Msg_type Msg_text
|
||||
test.m1 repair Error Can't open table
|
||||
test.m1 repair error Corrupt
|
||||
CREATE TABLE t1 (f1 BIGINT) ENGINE = MyISAM;
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
Table Op Msg_type Msg_text
|
||||
test.m1 repair note The storage engine for the table doesn't support repair
|
||||
REPAIR TABLE m1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.m1 repair note The storage engine for the table doesn't support repair
|
||||
DROP TABLE m1, t1;
|
||||
CREATE TEMPORARY TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1);
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
Table Op Msg_type Msg_text
|
||||
test.m1 repair Error Table 'test.m1' doesn't exist
|
||||
test.m1 repair error Corrupt
|
||||
CREATE TEMPORARY TABLE t1 (f1 BIGINT) ENGINE=MyISAM;
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
Table Op Msg_type Msg_text
|
||||
m1 repair error Cannot repair temporary table from .frm file
|
||||
REPAIR TABLE m1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.m1 repair note The storage engine for the table doesn't support repair
|
||||
DROP TABLE m1, t1;
|
||||
End of 5.1 tests
|
||||
|
|
|
@ -1705,4 +1705,82 @@ t2 WHERE b SOUNDS LIKE e AND d = 1;
|
|||
|
||||
DROP TABLE t2, t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#46339 - crash on REPAIR TABLE merge table USE_FRM
|
||||
--echo #
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS m1, t1;
|
||||
--enable_warnings
|
||||
#
|
||||
# Test derived from a proposal of Shane Bester.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MYISAM;
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1) INSERT_METHOD=LAST;
|
||||
#
|
||||
# REPAIR ... USE_FRM with LOCK TABLES.
|
||||
#
|
||||
LOCK TABLE m1 READ;
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
# REPAIR ... USE_FRM without LOCK TABLES.
|
||||
#
|
||||
# This statement crashed the server (Bug#46339).
|
||||
#
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
#
|
||||
DROP TABLE m1,t1;
|
||||
#
|
||||
# Test derived from a proposal of Matthias Leich.
|
||||
#
|
||||
# Base table is missing.
|
||||
#
|
||||
CREATE TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1);
|
||||
#
|
||||
# This statement crashed the server (Bug#46339).
|
||||
#
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
#
|
||||
# Create base table.
|
||||
#
|
||||
CREATE TABLE t1 (f1 BIGINT) ENGINE = MyISAM;
|
||||
#
|
||||
# This statement crashed the server (Bug#46339).
|
||||
#
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
#
|
||||
# Normal repair as reference.
|
||||
#
|
||||
REPAIR TABLE m1;
|
||||
#
|
||||
# Cleanup.
|
||||
#
|
||||
DROP TABLE m1, t1;
|
||||
#
|
||||
# Same with temporary tables.
|
||||
#
|
||||
# Base table is missing.
|
||||
#
|
||||
CREATE TEMPORARY TABLE m1 (f1 BIGINT) ENGINE=MRG_MyISAM UNION(t1);
|
||||
#
|
||||
# This statement crashed the server (Bug#46339).
|
||||
#
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
#
|
||||
# Create base table.
|
||||
#
|
||||
CREATE TEMPORARY TABLE t1 (f1 BIGINT) ENGINE=MyISAM;
|
||||
#
|
||||
# This statement crashed the server (Bug#46339).
|
||||
#
|
||||
REPAIR TABLE m1 USE_FRM;
|
||||
#
|
||||
# Normal repair as reference.
|
||||
#
|
||||
REPAIR TABLE m1;
|
||||
#
|
||||
# Cleanup.
|
||||
#
|
||||
DROP TABLE m1, t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
|
|
@ -4416,9 +4416,6 @@ static int prepare_for_repair(THD *thd, TABLE_LIST *table_list,
|
|||
pthread_mutex_unlock(&LOCK_open);
|
||||
}
|
||||
|
||||
/* A MERGE table must not come here. */
|
||||
DBUG_ASSERT(!table->child_l);
|
||||
|
||||
/*
|
||||
REPAIR TABLE ... USE_FRM for temporary tables makes little sense.
|
||||
*/
|
||||
|
|
Loading…
Add table
Reference in a new issue