Skip to content

Commit

Permalink
planner: move logical mem-table to logicalop pkg. (#54903)
Browse files Browse the repository at this point in the history
ref #51664, ref #52714
  • Loading branch information
AilinKid authored Jul 26, 2024
1 parent 2ee8c99 commit 87d1657
Show file tree
Hide file tree
Showing 12 changed files with 53 additions and 18 deletions.
2 changes: 1 addition & 1 deletion pkg/planner/cascades/implementation_rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ func (*ImplMemTableScan) OnImplement(
expr *memo.GroupExpr,
reqProp *property.PhysicalProperty,
) ([]memo.Implementation, error) {
logic := expr.ExprNode.(*plannercore.LogicalMemTable)
logic := expr.ExprNode.(*logicalop.LogicalMemTable)
logicProp := expr.Group.Prop
physical := plannercore.PhysicalMemTable{
DBName: logic.DBName,
Expand Down
4 changes: 0 additions & 4 deletions pkg/planner/core/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ go_library(
"logical_join.go",
"logical_limit.go",
"logical_lock.go",
"logical_mem_table.go",
"logical_partition_union_all.go",
"logical_plan_builder.go",
"logical_plans.go",
Expand Down Expand Up @@ -246,7 +245,6 @@ go_test(
"logical_plan_trace_test.go",
"logical_plans_test.go",
"main_test.go",
"memtable_predicate_extractor_test.go",
"optimizer_test.go",
"partition_pruning_test.go",
"physical_plan_test.go",
Expand Down Expand Up @@ -305,7 +303,6 @@ go_test(
"//pkg/planner/util/costusage",
"//pkg/planner/util/optimizetrace",
"//pkg/session",
"//pkg/session/types",
"//pkg/sessionctx",
"//pkg/sessionctx/variable",
"//pkg/sessiontxn",
Expand All @@ -332,7 +329,6 @@ go_test(
"//pkg/util/mock",
"//pkg/util/plancodec",
"//pkg/util/ranger",
"//pkg/util/set",
"//pkg/util/stmtsummary",
"//pkg/util/tracing",
"@com_github_golang_snappy//:snappy",
Expand Down
1 change: 1 addition & 0 deletions pkg/planner/core/core_init.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ func init() {
utilfuncp.GetHashAggs = getHashAggs
utilfuncp.PruneByItems = pruneByItems
utilfuncp.FindBestTask4LogicalCTETable = findBestTask4LogicalCTETable
utilfuncp.FindBestTask4LogicalMemTable = findBestTask4LogicalMemTable
utilfuncp.ExhaustPhysicalPlans4LogicalMaxOneRow = exhaustPhysicalPlans4LogicalMaxOneRow

utilfuncp.AppendCandidate4PhysicalOptimizeOp = appendCandidate4PhysicalOptimizeOp
Expand Down
3 changes: 2 additions & 1 deletion pkg/planner/core/find_best_task.go
Original file line number Diff line number Diff line change
Expand Up @@ -595,7 +595,8 @@ END:
return bestTask, cntPlan, nil
}

func findBestTask4LogicalMemTable(p *LogicalMemTable, prop *property.PhysicalProperty, planCounter *base.PlanCounterTp, opt *optimizetrace.PhysicalOptimizeOp) (t base.Task, cntPlan int64, err error) {
func findBestTask4LogicalMemTable(lp base.LogicalPlan, prop *property.PhysicalProperty, planCounter *base.PlanCounterTp, opt *optimizetrace.PhysicalOptimizeOp) (t base.Task, cntPlan int64, err error) {
p := lp.(*logicalop.LogicalMemTable)
if prop.MPPPartitionTp != property.AnyType {
return base.InvalidTask, 0, nil
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/planner/core/logical_plan_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -4851,7 +4851,7 @@ func (b *PlanBuilder) buildMemTable(_ context.Context, dbName model.CIStr, table
}

// NOTE: Add a `LogicalUnionScan` if we support update memory table in the future
p := LogicalMemTable{
p := logicalop.LogicalMemTable{
DBName: dbName,
TableInfo: tableInfo,
Columns: make([]*model.ColumnInfo, len(tableInfo.Columns)),
Expand Down
2 changes: 1 addition & 1 deletion pkg/planner/core/logical_plans.go
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ var (
_ base.LogicalPlan = &LogicalWindow{}
_ base.LogicalPlan = &LogicalExpand{}
_ base.LogicalPlan = &LogicalUnionScan{}
_ base.LogicalPlan = &LogicalMemTable{}
_ base.LogicalPlan = &logicalop.LogicalMemTable{}
_ base.LogicalPlan = &LogicalShow{}
_ base.LogicalPlan = &LogicalShowDDLJobs{}
_ base.LogicalPlan = &LogicalCTE{}
Expand Down
4 changes: 4 additions & 0 deletions pkg/planner/core/operator/logicalop/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@ go_library(
"base_logical_plan.go",
"logical_cte_table.go",
"logical_max_one_row.go",
"logical_mem_table.go",
"logical_schema_producer.go",
],
importpath = "github.com/pingcap/tidb/pkg/planner/core/operator/logicalop",
visibility = ["//visibility:public"],
deps = [
"//pkg/expression",
"//pkg/infoschema",
"//pkg/kv",
"//pkg/parser/model",
"//pkg/planner/core/base",
"//pkg/planner/core/operator/baseimpl",
"//pkg/planner/funcdep",
Expand All @@ -21,6 +24,7 @@ go_library(
"//pkg/planner/util/optimizetrace",
"//pkg/planner/util/optimizetrace/logicaltrace",
"//pkg/planner/util/utilfuncp",
"//pkg/statistics",
"//pkg/types",
"//pkg/util/dbterror/plannererrors",
"//pkg/util/plancodec",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,18 +12,18 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package core
package logicalop

import (
"github.com/pingcap/tidb/pkg/expression"
"github.com/pingcap/tidb/pkg/infoschema"
"github.com/pingcap/tidb/pkg/parser/model"
"github.com/pingcap/tidb/pkg/planner/core/base"
"github.com/pingcap/tidb/pkg/planner/core/operator/logicalop"
"github.com/pingcap/tidb/pkg/planner/property"
"github.com/pingcap/tidb/pkg/planner/util"
"github.com/pingcap/tidb/pkg/planner/util/optimizetrace"
"github.com/pingcap/tidb/pkg/planner/util/optimizetrace/logicaltrace"
"github.com/pingcap/tidb/pkg/planner/util/utilfuncp"
"github.com/pingcap/tidb/pkg/statistics"
"github.com/pingcap/tidb/pkg/util/plancodec"
)
Expand All @@ -38,7 +38,7 @@ import (
// requesting all cluster components log search gRPC interface to retrieve
// log message and filtering them in TiDB node.
type LogicalMemTable struct {
logicalop.LogicalSchemaProducer
LogicalSchemaProducer

Extractor base.MemTablePredicateExtractor
DBName model.CIStr
Expand All @@ -54,7 +54,7 @@ type LogicalMemTable struct {

// Init initializes LogicalMemTable.
func (p LogicalMemTable) Init(ctx base.PlanContext, offset int) *LogicalMemTable {
p.BaseLogicalPlan = logicalop.NewBaseLogicalPlan(ctx, plancodec.TypeMemTableScan, &p, offset)
p.BaseLogicalPlan = NewBaseLogicalPlan(ctx, plancodec.TypeMemTableScan, &p, offset)
return &p
}

Expand Down Expand Up @@ -104,7 +104,7 @@ func (p *LogicalMemTable) PruneColumns(parentUsedCols []*expression.Column, opt

// FindBestTask implements the base.LogicalPlan.<3rd> interface.
func (p *LogicalMemTable) FindBestTask(prop *property.PhysicalProperty, planCounter *base.PlanCounterTp, opt *optimizetrace.PhysicalOptimizeOp) (t base.Task, cntPlan int64, err error) {
return findBestTask4LogicalMemTable(p, prop, planCounter, opt)
return utilfuncp.FindBestTask4LogicalMemTable(p, prop, planCounter, opt)
}

// BuildKeyInfo inherits BaseLogicalPlan.<4th> implementation.
Expand Down
27 changes: 27 additions & 0 deletions pkg/planner/core/operator/logicalop/logicalop_test/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
load("@io_bazel_rules_go//go:def.bzl", "go_test")

go_test(
name = "logicalop_test_test",
timeout = "short",
srcs = ["logical_mem_table_predicate_extractor_test.go"],
flaky = True,
shard_count = 13,
deps = [
"//pkg/domain",
"//pkg/expression",
"//pkg/parser",
"//pkg/parser/ast",
"//pkg/planner",
"//pkg/planner/core",
"//pkg/planner/core/base",
"//pkg/planner/core/operator/logicalop",
"//pkg/planner/util",
"//pkg/session",
"//pkg/session/types",
"//pkg/testkit",
"//pkg/types",
"//pkg/util/hint",
"//pkg/util/set",
"@com_github_stretchr_testify//require",
],
)
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.

package core_test
package logicalop_test

import (
"context"
Expand All @@ -31,6 +31,7 @@ import (
"github.com/pingcap/tidb/pkg/planner"
plannercore "github.com/pingcap/tidb/pkg/planner/core"
"github.com/pingcap/tidb/pkg/planner/core/base"
"github.com/pingcap/tidb/pkg/planner/core/operator/logicalop"
"github.com/pingcap/tidb/pkg/planner/util"
"github.com/pingcap/tidb/pkg/session"
sessiontypes "github.com/pingcap/tidb/pkg/session/types"
Expand All @@ -41,7 +42,7 @@ import (
"github.com/stretchr/testify/require"
)

func getLogicalMemTable(t *testing.T, dom *domain.Domain, se sessiontypes.Session, parser *parser.Parser, sql string) *plannercore.LogicalMemTable {
func getLogicalMemTable(t *testing.T, dom *domain.Domain, se sessiontypes.Session, parser *parser.Parser, sql string) *logicalop.LogicalMemTable {
stmt, err := parser.ParseOneStmt(sql, "", "")
require.NoError(t, err)

Expand All @@ -50,7 +51,7 @@ func getLogicalMemTable(t *testing.T, dom *domain.Domain, se sessiontypes.Sessio
plan, err := builder.Build(ctx, stmt)
require.NoError(t, err)

logicalPlan, err := plannercore.LogicalOptimize(ctx, builder.GetOptFlag(), plan.(base.LogicalPlan))
logicalPlan, err := plannercore.LogicalOptimizeTest(ctx, builder.GetOptFlag(), plan.(base.LogicalPlan))
require.NoError(t, err)

// Obtain the leaf plan
Expand All @@ -59,7 +60,7 @@ func getLogicalMemTable(t *testing.T, dom *domain.Domain, se sessiontypes.Sessio
leafPlan = leafPlan.Children()[0]
}

logicalMemTable := leafPlan.(*plannercore.LogicalMemTable)
logicalMemTable := leafPlan.(*logicalop.LogicalMemTable)
return logicalMemTable
}

Expand Down
2 changes: 1 addition & 1 deletion pkg/planner/pattern/pattern.go
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ func GetOperand(p base.LogicalPlan) Operand {
return OperandTiKVSingleGather
case *plannercore.LogicalTableScan:
return OperandTableScan
case *plannercore.LogicalMemTable:
case *logicalop.LogicalMemTable:
return OperandMemTableScan
case *plannercore.LogicalIndexScan:
return OperandIndexScan
Expand Down
5 changes: 5 additions & 0 deletions pkg/planner/util/utilfuncp/func_pointer_misc.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,3 +96,8 @@ var ExhaustPhysicalPlans4LogicalMaxOneRow func(p base.LogicalPlan, prop *propert
// FindBestTask4LogicalCTETable will be called by LogicalCTETable in logicalOp pkg.
var FindBestTask4LogicalCTETable func(lp base.LogicalPlan, prop *property.PhysicalProperty, _ *base.PlanCounterTp,
_ *optimizetrace.PhysicalOptimizeOp) (t base.Task, cntPlan int64, err error)

// FindBestTask4LogicalMemTable will be called by LogicalMemTable in logicalOp pkg.
var FindBestTask4LogicalMemTable func(lp base.LogicalPlan, prop *property.PhysicalProperty,
planCounter *base.PlanCounterTp, opt *optimizetrace.PhysicalOptimizeOp) (t base.Task,
cntPlan int64, err error)

0 comments on commit 87d1657

Please sign in to comment.