From cd9d3c03dbd863e4a9ebde08b35017fed93686db Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Fri, 10 Jan 2025 10:56:28 +0800 Subject: [PATCH 1/3] planner: avoid slicesgrow in the buildDataSource Signed-off-by: Weizhen Wang --- pkg/planner/core/logical_plan_builder.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/planner/core/logical_plan_builder.go b/pkg/planner/core/logical_plan_builder.go index 1e4465ad31e0e..ab5e23a5d71bf 100644 --- a/pkg/planner/core/logical_plan_builder.go +++ b/pkg/planner/core/logical_plan_builder.go @@ -4604,16 +4604,16 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as IndexHints: b.TableHints().IndexHintList, IndexMergeHints: indexMergeHints, PossibleAccessPaths: possiblePaths, - Columns: make([]*model.ColumnInfo, 0, len(columns)), + Columns: make([]*model.ColumnInfo, 0, len(columns)+1), PartitionNames: tn.PartitionNames, - TblCols: make([]*expression.Column, 0, len(columns)), + TblCols: make([]*expression.Column, 0, len(columns)+1), PreferPartitions: make(map[int][]ast.CIStr), IS: b.is, IsForUpdateRead: b.isForUpdateRead, }.Init(b.ctx, b.getSelectOffset()) var handleCols util.HandleCols - schema := expression.NewSchema(make([]*expression.Column, 0, len(columns))...) - names := make([]*types.FieldName, 0, len(columns)) + schema := expression.NewSchema(make([]*expression.Column, 0, len(columns)+1)...) + names := make([]*types.FieldName, 0, len(columns)+1) for i, col := range columns { ds.Columns = append(ds.Columns, col.ToInfo()) names = append(names, &types.FieldName{ From 051c38494cc3759a761612a7eee8b420e5c11506 Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Fri, 10 Jan 2025 18:15:08 +0800 Subject: [PATCH 2/3] remove rules Signed-off-by: Weizhen Wang --- pkg/planner/core/logical_plan_builder.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/planner/core/logical_plan_builder.go b/pkg/planner/core/logical_plan_builder.go index ab5e23a5d71bf..9546bf2677452 100644 --- a/pkg/planner/core/logical_plan_builder.go +++ b/pkg/planner/core/logical_plan_builder.go @@ -4594,6 +4594,7 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as } } } + countCnt := len(columns) + 1 // +1 for an extra handle column ds := logicalop.DataSource{ DBName: dbName, TableAsName: asName, @@ -4604,15 +4605,15 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as IndexHints: b.TableHints().IndexHintList, IndexMergeHints: indexMergeHints, PossibleAccessPaths: possiblePaths, - Columns: make([]*model.ColumnInfo, 0, len(columns)+1), + Columns: make([]*model.ColumnInfo, 0, countCnt), PartitionNames: tn.PartitionNames, - TblCols: make([]*expression.Column, 0, len(columns)+1), + TblCols: make([]*expression.Column, 0, countCnt), PreferPartitions: make(map[int][]ast.CIStr), IS: b.is, IsForUpdateRead: b.isForUpdateRead, }.Init(b.ctx, b.getSelectOffset()) var handleCols util.HandleCols - schema := expression.NewSchema(make([]*expression.Column, 0, len(columns)+1)...) + schema := expression.NewSchema(make([]*expression.Column, 0, countCnt)...) names := make([]*types.FieldName, 0, len(columns)+1) for i, col := range columns { ds.Columns = append(ds.Columns, col.ToInfo()) From f6dc16ac97f57ba23172a42e26c40a74c4973302 Mon Sep 17 00:00:00 2001 From: Weizhen Wang Date: Fri, 10 Jan 2025 18:15:56 +0800 Subject: [PATCH 3/3] remove rules Signed-off-by: Weizhen Wang --- pkg/planner/core/logical_plan_builder.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/planner/core/logical_plan_builder.go b/pkg/planner/core/logical_plan_builder.go index 9546bf2677452..157c72bb93701 100644 --- a/pkg/planner/core/logical_plan_builder.go +++ b/pkg/planner/core/logical_plan_builder.go @@ -4614,7 +4614,7 @@ func (b *PlanBuilder) buildDataSource(ctx context.Context, tn *ast.TableName, as }.Init(b.ctx, b.getSelectOffset()) var handleCols util.HandleCols schema := expression.NewSchema(make([]*expression.Column, 0, countCnt)...) - names := make([]*types.FieldName, 0, len(columns)+1) + names := make([]*types.FieldName, 0, countCnt) for i, col := range columns { ds.Columns = append(ds.Columns, col.ToInfo()) names = append(names, &types.FieldName{