MCPcopy
hub / github.com/radondb/radon / BuildPlanTree

Method BuildPlanTree

src/optimizer/simple_optimizer.go:45–85  ·  view source on GitHub ↗

BuildPlanTree used to build plan trees for the query.

()

Source from the content-addressed store, hash-verified

43
44// BuildPlanTree used to build plan trees for the query.
45func (so *SimpleOptimizer) BuildPlanTree() (*planner.PlanTree, error) {
46 log := so.log
47 database := so.database
48 query := so.query
49 node := so.node
50 router := so.router
51
52 plans := planner.NewPlanTree()
53 switch node.(type) {
54 case *sqlparser.DDL:
55 node := planner.NewDDLPlan(log, database, query, node.(*sqlparser.DDL), router)
56 plans.Add(node)
57 case *sqlparser.Insert:
58 node := planner.NewInsertPlan(log, database, query, node.(*sqlparser.Insert), router)
59 plans.Add(node)
60 case *sqlparser.Delete:
61 node := planner.NewDeletePlan(log, database, query, node.(*sqlparser.Delete), router)
62 plans.Add(node)
63 case *sqlparser.Update:
64 node := planner.NewUpdatePlan(log, database, query, node.(*sqlparser.Update), router)
65 plans.Add(node)
66 case *sqlparser.Select:
67 nod := node.(*sqlparser.Select)
68 selectNode := planner.NewSelectPlan(log, database, query, nod, router)
69 plans.Add(selectNode)
70 case *sqlparser.Union:
71 node := planner.NewUnionPlan(log, database, query, node.(*sqlparser.Union), router)
72 plans.Add(node)
73 case *sqlparser.Checksum, *sqlparser.Optimize, *sqlparser.Check:
74 node := planner.NewOthersPlan(log, database, query, node, router)
75 plans.Add(node)
76 default:
77 return nil, errors.Errorf("optimizer.unsupported.query.type[%+v]", node)
78 }
79
80 // Build plantree.
81 if err := plans.Build(); err != nil {
82 return nil, err
83 }
84 return plans, nil
85}

Callers 2

handleExplainMethod · 0.95
explainHandlerFunction · 0.95

Calls 2

AddMethod · 0.95
BuildMethod · 0.95

Tested by

no test coverage detected