Bug #31893 Partitions: crash if subpartitions and engine change.
The new default database engine for altered table was reassigned to the old one. That's wrong thing by itself, and (as the engine for a subpartition gets that new value) leads to DBUG_ASSERTION in mysql_unpack_partition() mysql-test/r/partition.result: Bug #31893 Partitions: crash if subpartitions and engine change. test result mysql-test/t/partition.test: Bug #31893 Partitions: crash if subpartitions and engine change. test case sql/sql_partition.cc: Bug #31893 Partitions: crash if subpartitions and engine change. Don't change part_info->default_engine_type if it's already set
This commit is contained in:
parent
f97b8e48b8
commit
ee4452dba4
@ -1291,4 +1291,18 @@ t1 CREATE TABLE `t1` (
|
||||
`b` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (b) (PARTITION p1 VALUES LESS THAN (10) ENGINE = MyISAM, PARTITION p2 VALUES LESS THAN (20) ENGINE = MyISAM) */
|
||||
drop table t1, t2;
|
||||
create table t1 (int_column int, char_column char(5))
|
||||
PARTITION BY RANGE (int_column) subpartition by key (char_column)
|
||||
(PARTITION p1 VALUES LESS THAN (5) ENGINE = InnoDB);
|
||||
Warnings:
|
||||
Warning 1286 Unknown table engine 'InnoDB'
|
||||
alter table t1 PARTITION BY RANGE (int_column) subpartition by key (char_column)
|
||||
(PARTITION p1 VALUES LESS THAN (5) ENGINE = myisam);
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`int_column` int(11) DEFAULT NULL,
|
||||
`char_column` char(5) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY RANGE (int_column) SUBPARTITION BY KEY (char_column) (PARTITION p1 VALUES LESS THAN (5) ENGINE = MyISAM) */
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
|
@ -1528,4 +1528,15 @@ PARTITION BY RANGE (b) (
|
||||
show create table t1;
|
||||
drop table t1, t2;
|
||||
|
||||
#
|
||||
# Bug #31893 Partitions: crash if subpartitions and engine change
|
||||
#
|
||||
create table t1 (int_column int, char_column char(5))
|
||||
PARTITION BY RANGE (int_column) subpartition by key (char_column)
|
||||
(PARTITION p1 VALUES LESS THAN (5) ENGINE = InnoDB);
|
||||
alter table t1 PARTITION BY RANGE (int_column) subpartition by key (char_column)
|
||||
(PARTITION p1 VALUES LESS THAN (5) ENGINE = myisam);
|
||||
show create table t1;
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
@ -5031,7 +5031,10 @@ the generated partition syntax in a correct manner.
|
||||
*partition_changed= TRUE;
|
||||
}
|
||||
if (create_info->db_type == partition_hton)
|
||||
part_info->default_engine_type= table->part_info->default_engine_type;
|
||||
{
|
||||
if (!part_info->default_engine_type)
|
||||
part_info->default_engine_type= table->part_info->default_engine_type;
|
||||
}
|
||||
else
|
||||
part_info->default_engine_type= create_info->db_type;
|
||||
if (check_native_partitioned(create_info, &is_native_partitioned,
|
||||
|
Loading…
x
Reference in New Issue
Block a user