Commit 81a463ad authored by unknown's avatar unknown
Browse files

OPTIMIZE, ANALYZE, CHECK, REPAIR and REBUILD only supported if fast_alter_partition flag set


mysql-test/r/ndb_partition_key.result:
  New test cases for BUG #16819, 16821, and 16822
mysql-test/t/ndb_partition_key.test:
  New test cases for BUG #16819, 16821, and 16822
sql/handler.h:
  ensure we don't get hanging after calling change_partition
parent 1c6f84f8
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -165,3 +165,17 @@ ENGINE=NDB
PARTITION BY KEY(c3) PARTITIONS 5;
ALTER TABLE t1 COALESCE PARTITION 4;
DROP TABLE t1;
CREATE TABLE t1 (a int primary key)
ENGINE=NDB
PARTITION BY KEY(a);
ALTER TABLE t1 OPTIMIZE PARTITION p0;
ERROR HY000: Table storage engine for 't1' doesn't have this option
ALTER TABLE t1 CHECK PARTITION p0;
ERROR HY000: Table storage engine for 't1' doesn't have this option
ALTER TABLE t1 REPAIR PARTITION p0;
ERROR HY000: Table storage engine for 't1' doesn't have this option
ALTER TABLE t1 ANALYZE PARTITION p0;
ERROR HY000: Table storage engine for 't1' doesn't have this option
ALTER TABLE t1 REBUILD PARTITION p0;
ERROR HY000: Table storage engine for 't1' doesn't have this option
DROP TABLE t1;
+19 −0
Original line number Diff line number Diff line
@@ -153,3 +153,22 @@ b'0',
ALTER TABLE t1 COALESCE PARTITION 4;

DROP TABLE t1;

#
# Bug 16822: OPTIMIZE TABLE hangs test
#
CREATE TABLE t1 (a int primary key)
ENGINE=NDB
PARTITION BY KEY(a);
--error 1031
ALTER TABLE t1 OPTIMIZE PARTITION p0;
--error 1031
ALTER TABLE t1 CHECK PARTITION p0;
--error 1031
ALTER TABLE t1 REPAIR PARTITION p0;
--error 1031
ALTER TABLE t1 ANALYZE PARTITION p0;
--error 1031
ALTER TABLE t1 REBUILD PARTITION p0;
DROP TABLE t1;
+1 −1
Original line number Diff line number Diff line
@@ -1387,7 +1387,7 @@ class handler :public Sql_alloc
                                ulonglong *deleted,
                                const void *pack_frm_data,
                                uint pack_frm_len)
  { return HA_ERR_WRONG_COMMAND; }
  { print_error(HA_ERR_WRONG_COMMAND, MYF(0)); return TRUE; }
  virtual int drop_partitions(const char *path)
  { return HA_ERR_WRONG_COMMAND; }
  virtual int rename_partitions(const char *path)
+5 −0
Original line number Diff line number Diff line
@@ -4499,6 +4499,11 @@ that are reorganised.
        my_error(ER_DROP_PARTITION_NON_EXISTENT, MYF(0), ptr);
        DBUG_RETURN(TRUE);
      }
      if (!(*fast_alter_partition))
      {
        table->file->print_error(HA_ERR_WRONG_COMMAND, MYF(0));
        DBUG_RETURN(TRUE);
      }
    }
    else if (alter_info->flags & ALTER_COALESCE_PARTITION)
    {