From a1a9776f50a6ab0ed05de5eec21469f8a8e8e1a2 Mon Sep 17 00:00:00 2001 From: tangenta Date: Sat, 7 Oct 2023 11:27:12 +0800 Subject: [PATCH] planner: disallow split clustered index with SPLIT TABLE .. INDEX --- executor/split_table_test.go | 4 ++++ planner/core/planbuilder.go | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/executor/split_table_test.go b/executor/split_table_test.go index d19dbfed2daf5..4b841a14cf834 100644 --- a/executor/split_table_test.go +++ b/executor/split_table_test.go @@ -173,6 +173,10 @@ func TestClusterIndexSplitTableIntegration(t *testing.T) { tk.MustExec("create table t (a varchar(255), b decimal, c int, primary key (a, b));") errMsg = "[types:1265]Incorrect value: '' for column 'b'" tk.MustGetErrMsg("split table t by ('aaa', '')", errMsg) + + tk.MustExec("drop table t;") + tk.MustExec("CREATE TABLE t (`id` varchar(10) NOT NULL, primary key (`id`) CLUSTERED);") + tk.MustGetErrCode("split table t index `primary` between (0) and (1000) regions 2;", errno.ErrKeyDoesNotExist) } func TestClusterIndexShowTableRegion(t *testing.T) { diff --git a/planner/core/planbuilder.go b/planner/core/planbuilder.go index 4978478e372b1..2ef97b9d7b3ec 100644 --- a/planner/core/planbuilder.go +++ b/planner/core/planbuilder.go @@ -3994,7 +3994,7 @@ func (b *PlanBuilder) buildSplitRegion(node *ast.SplitRegionStmt) (Plan, error) func (b *PlanBuilder) buildSplitIndexRegion(node *ast.SplitRegionStmt) (Plan, error) { tblInfo := node.Table.TableInfo indexInfo := tblInfo.FindIndexByName(node.IndexName.L) - if indexInfo == nil { + if indexInfo == nil || indexInfo.Primary && tblInfo.IsCommonHandle { return nil, ErrKeyDoesNotExist.GenWithStackByArgs(node.IndexName, tblInfo.Name) } mockTablePlan := LogicalTableDual{}.Init(b.ctx, b.getSelectOffset())