diff --git a/ddl/partition.go b/ddl/partition.go index a2d4c84333574..951c11b8d60ff 100644 --- a/ddl/partition.go +++ b/ddl/partition.go @@ -194,6 +194,10 @@ func alterTablePartitionBundles(t *meta.Meta, tblInfo *model.TableInfo, addingDe p.Definitions = append(tblInfo.Partition.Definitions, addingDefinitions...) tblInfo.Partition = &p + if tblInfo.TiFlashReplica != nil && tblInfo.TiFlashReplica.Count > 0 && tableHasPlacementSettings(tblInfo) { + return nil, errors.Trace(ErrIncompatibleTiFlashAndPlacement) + } + // bundle for table should be recomputed because it includes some default configs for partitions tblBundle, err := placement.NewTableBundle(t, tblInfo) if err != nil { diff --git a/ddl/placement_sql_test.go b/ddl/placement_sql_test.go index c9f2630416018..6c8207c3fcab4 100644 --- a/ddl/placement_sql_test.go +++ b/ddl/placement_sql_test.go @@ -738,6 +738,8 @@ func (s *testDBSuite6) TestPlacementTiflashCheck(c *C) { c.Assert(ddl.ErrIncompatibleTiFlashAndPlacement.Equal(err), IsTrue) err = tk.ExecToErr("alter table tp partition p0 primary_region='r2' regions='r2'") c.Assert(ddl.ErrIncompatibleTiFlashAndPlacement.Equal(err), IsTrue) + err = tk.ExecToErr("alter table tp add partition(partition p2 VALUES LESS THAN (10000) placement policy p1)") + c.Assert(ddl.ErrIncompatibleTiFlashAndPlacement.Equal(err), IsTrue) tk.MustQuery("show create table tp").Check(testkit.Rows("" + "tp CREATE TABLE `tp` (\n" + " `id` int(11) DEFAULT NULL\n" +