Commit 1e12f946 authored by unknown's avatar unknown
Browse files

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
parent 3065eeb3
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -886,4 +886,8 @@ s1
2
3
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
+8 −0
Original line number Diff line number Diff line
@@ -1009,4 +1009,12 @@ select auto_increment from information_schema.tables where table_name='t1';
select * from 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
+8 −7
Original line number Diff line number Diff line
@@ -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];
+3 −0
Original line number Diff line number Diff line
@@ -5840,3 +5840,6 @@ ER_NULL_IN_VALUES_LESS_THAN
ER_WRONG_PARTITION_NAME
        eng "Incorrect partition name"
        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"