diff options
author | unknown <mikael@c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se> | 2006-05-23 07:37:03 -0400 |
---|---|---|
committer | unknown <mikael@c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se> | 2006-05-23 07:37:03 -0400 |
commit | 1e12f9462b4cbdbafe3ed48a446076979fab38bf (patch) | |
tree | 70c14251727a8bfcef0fe8a3d05da98bc9e058f0 /sql/partition_info.cc | |
parent | 3065eeb3f8cff732e1a462b58996105881c7ca88 (diff) | |
download | mariadb-git-1e12f9462b4cbdbafe3ed48a446076979fab38bf.tar.gz |
BUG#19304: Merge handler allowed in partitioned tables
mysql-test/r/partition.result:
New test case
mysql-test/t/partition.test:
New test case
sql/partition_info.cc:
Check for not merge handler in partitioned table
sql/share/errmsg.txt:
New error message
Diffstat (limited to 'sql/partition_info.cc')
-rw-r--r-- | sql/partition_info.cc | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/sql/partition_info.cc b/sql/partition_info.cc index dfc5dd2989b..83d2a436be3 100644 --- a/sql/partition_info.cc +++ b/sql/partition_info.cc @@ -431,18 +431,22 @@ char *partition_info::has_unique_names() bool partition_info::check_engine_mix(handlerton **engine_array, uint no_parts) { uint i= 0; - bool result= FALSE; DBUG_ENTER("partition_info::check_engine_mix"); do { if (engine_array[i] != engine_array[0]) { - result= TRUE; - break; + my_error(ER_MIX_HANDLER_ERROR, MYF(0)); + DBUG_RETURN(TRUE); } } 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, } while (++i < no_parts); } if (unlikely(partition_info::check_engine_mix(engine_array, part_count))) - { - my_error(ER_MIX_HANDLER_ERROR, MYF(0)); goto end; - } if (eng_type) *eng_type= (handlerton*)engine_array[0]; |