mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
BUG#19140: Create index caused crash
This commit is contained in:
parent
4ba1a4b3cd
commit
b8227de1bf
6 changed files with 40 additions and 4 deletions
|
@ -197,3 +197,7 @@ ENGINE=NDB
|
|||
PARTITION BY KEY(c3);
|
||||
ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1;
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB);
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -886,4 +886,9 @@ s1
|
|||
2
|
||||
3
|
||||
drop table t1;
|
||||
create table t1 (a int) engine=memory
|
||||
partition by key(a);
|
||||
insert into t1 values (1);
|
||||
create index inx1 on t1(a);
|
||||
drop table t1;
|
||||
End of 5.1 tests
|
||||
|
|
|
@ -196,3 +196,10 @@ CREATE TABLE t1 (
|
|||
|
||||
ALTER TABLE t1 ADD COLUMN c4 INT AFTER c1;
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 (a int)
|
||||
PARTITION BY KEY(a)
|
||||
(PARTITION p0 ENGINE = NDB);
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
|
|
|
@ -9,6 +9,11 @@
|
|||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (a int)
|
||||
partition by key(a)
|
||||
(partition p0 engine = MEMORY);
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Partition by key no partition defined => OK
|
||||
#
|
||||
|
@ -1009,4 +1014,13 @@ select auto_increment from information_schema.tables where table_name='t1';
|
|||
select * from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# BUG 19140 Partitions: Create index for partitioned table crashes
|
||||
#
|
||||
create table t1 (a int) engine=memory
|
||||
partition by key(a);
|
||||
insert into t1 values (1);
|
||||
create index inx1 on t1(a);
|
||||
drop table t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
|
|
@ -4509,7 +4509,7 @@ the generated partition syntax in a correct manner.
|
|||
if (alter_info->flags & ALTER_REMOVE_PARTITIONING)
|
||||
{
|
||||
DBUG_PRINT("info", ("Remove partitioning"));
|
||||
if (!(thd->lex->create_info.used_fields & HA_CREATE_USED_ENGINE))
|
||||
if (!(create_info->used_fields & HA_CREATE_USED_ENGINE))
|
||||
{
|
||||
DBUG_PRINT("info", ("No explicit engine used"));
|
||||
create_info->db_type= table->part_info->default_engine_type;
|
||||
|
@ -4526,7 +4526,7 @@ the generated partition syntax in a correct manner.
|
|||
beneath.
|
||||
*/
|
||||
thd->work_part_info= table->part_info;
|
||||
if (thd->lex->create_info.used_fields & HA_CREATE_USED_ENGINE &&
|
||||
if (create_info->used_fields & HA_CREATE_USED_ENGINE &&
|
||||
create_info->db_type != table->part_info->default_engine_type)
|
||||
{
|
||||
/*
|
||||
|
|
|
@ -3105,8 +3105,8 @@ bool mysql_create_table_internal(THD *thd,
|
|||
}
|
||||
DBUG_PRINT("info", ("db_type = %d",
|
||||
ha_legacy_type(part_info->default_engine_type)));
|
||||
if (part_info->check_partition_info( &engine_type, file,
|
||||
create_info->max_rows))
|
||||
if (part_info->check_partition_info(&engine_type, file,
|
||||
create_info->max_rows))
|
||||
goto err;
|
||||
part_info->default_engine_type= engine_type;
|
||||
|
||||
|
@ -3165,6 +3165,12 @@ bool mysql_create_table_internal(THD *thd,
|
|||
}
|
||||
else if (create_info->db_type != engine_type)
|
||||
{
|
||||
/*
|
||||
We come here when we don't use a partitioned handler.
|
||||
Since we use a partitioned table it must be "native partitioned".
|
||||
We have switched engine from defaults, most likely only specified
|
||||
engines in partition clauses.
|
||||
*/
|
||||
delete file;
|
||||
if (!(file= get_new_handler((TABLE_SHARE*) 0, thd->mem_root, engine_type)))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue