summaryrefslogtreecommitdiff
path: root/sql/partition_info.cc
diff options
context:
space:
mode:
authorunknown <mikael@c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se>2006-05-23 07:37:03 -0400
committerunknown <mikael@c-870ae253.1238-1-64736c10.cust.bredbandsbolaget.se>2006-05-23 07:37:03 -0400
commit1e12f9462b4cbdbafe3ed48a446076979fab38bf (patch)
tree70c14251727a8bfcef0fe8a3d05da98bc9e058f0 /sql/partition_info.cc
parent3065eeb3f8cff732e1a462b58996105881c7ca88 (diff)
downloadmariadb-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.cc15
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];