BUG#19304: Merge handler allowed in partitioned tables

parent 4ba1a4b3
...@@ -886,4 +886,8 @@ s1 ...@@ -886,4 +886,8 @@ s1
2 2
3 3
drop table t1; drop table t1;
create table t1 (a int)
partition by key (a)
(partition p0 engine = MERGE);
ERROR HY000: MyISAM Merge handler cannot be used in partitioned tables
End of 5.1 tests End of 5.1 tests
...@@ -1009,4 +1009,12 @@ select auto_increment from information_schema.tables where table_name='t1'; ...@@ -1009,4 +1009,12 @@ select auto_increment from information_schema.tables where table_name='t1';
select * from t1; select * from t1;
drop table t1; drop table t1;
#
# BUG 19304 Partitions: MERGE handler not allowed in partitioned tables
#
--error ER_PARTITION_MERGE_ERROR
create table t1 (a int)
partition by key (a)
(partition p0 engine = MERGE);
--echo End of 5.1 tests --echo End of 5.1 tests
...@@ -431,18 +431,22 @@ char *partition_info::has_unique_names() ...@@ -431,18 +431,22 @@ char *partition_info::has_unique_names()
bool partition_info::check_engine_mix(handlerton **engine_array, uint no_parts) bool partition_info::check_engine_mix(handlerton **engine_array, uint no_parts)
{ {
uint i= 0; uint i= 0;
bool result= FALSE;
DBUG_ENTER("partition_info::check_engine_mix"); DBUG_ENTER("partition_info::check_engine_mix");
do do
{ {
if (engine_array[i] != engine_array[0]) if (engine_array[i] != engine_array[0])
{ {
result= TRUE; my_error(ER_MIX_HANDLER_ERROR, MYF(0));
break; DBUG_RETURN(TRUE);
} }
} while (++i < no_parts); } while (++i < no_parts);
DBUG_RETURN(result); if (!strcmp(engine_array[0]->name,"MRG_MYISAM"))
{
my_error(ER_PARTITION_MERGE_ERROR, MYF(0));
DBUG_RETURN(TRUE);
}
DBUG_RETURN(FALSE);
} }
...@@ -756,10 +760,7 @@ bool partition_info::check_partition_info(handlerton **eng_type, ...@@ -756,10 +760,7 @@ bool partition_info::check_partition_info(handlerton **eng_type,
} while (++i < no_parts); } while (++i < no_parts);
} }
if (unlikely(partition_info::check_engine_mix(engine_array, part_count))) if (unlikely(partition_info::check_engine_mix(engine_array, part_count)))
{
my_error(ER_MIX_HANDLER_ERROR, MYF(0));
goto end; goto end;
}
if (eng_type) if (eng_type)
*eng_type= (handlerton*)engine_array[0]; *eng_type= (handlerton*)engine_array[0];
......
...@@ -5840,3 +5840,6 @@ ER_NULL_IN_VALUES_LESS_THAN ...@@ -5840,3 +5840,6 @@ ER_NULL_IN_VALUES_LESS_THAN
ER_WRONG_PARTITION_NAME ER_WRONG_PARTITION_NAME
eng "Incorrect partition name" eng "Incorrect partition name"
swe "Felaktigt partitionsnamn" swe "Felaktigt partitionsnamn"
ER_PARTITION_MERGE_ERROR
eng "MyISAM Merge handler cannot be used in partitioned tables"
swe "MyISAM Merge kan inte anndas i en partitionerad tabell"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment