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
|
`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) */
|
) 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;
|
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
|
End of 5.1 tests
|
||||||
|
@ -1528,4 +1528,15 @@ PARTITION BY RANGE (b) (
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
drop table t1, t2;
|
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
|
--echo End of 5.1 tests
|
||||||
|
@ -5031,7 +5031,10 @@ the generated partition syntax in a correct manner.
|
|||||||
*partition_changed= TRUE;
|
*partition_changed= TRUE;
|
||||||
}
|
}
|
||||||
if (create_info->db_type == partition_hton)
|
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
|
else
|
||||||
part_info->default_engine_type= create_info->db_type;
|
part_info->default_engine_type= create_info->db_type;
|
||||||
if (check_native_partitioned(create_info, &is_native_partitioned,
|
if (check_native_partitioned(create_info, &is_native_partitioned,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user