Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var DefaultOptimizers = []Optimizer{ ProjectPushDownOptimizer, PredicatePushDownOptimizer, }
默认使用的优化器
View Source
var PredicatePushDownOptimizer = Optimizer{ Name: "PredicatePushDownOptimizer", Description: "Push predicates to scan plan", Reassembler: func(plan planners.IPlan) { var scan *planners.ScanPlan var filter *planners.FilterPlan visit := func(plan planners.IPlan) (kontinue bool, err error) { switch plan := plan.(type) { case *planners.ScanPlan: scan = plan case *planners.FilterPlan: filter = plan } return true, nil } if err := planners.Walk(visit, plan); err != nil { return } if scan != nil && filter != nil { scan.Filter = filter } }, }
PredicatePushDownOptimizer 谓词下推优化器,把filter条件往树上方移动
View Source
var ProjectPushDownOptimizer = Optimizer{ Name: "ProjectPushDownOptimizer", Description: "Push projects to scan plan", Reassembler: func(plan planners.IPlan) { var scan *planners.ScanPlan var project *planners.ProjectionPlan visit := func(plan planners.IPlan) (kontinue bool, err error) { switch plan := plan.(type) { case *planners.ScanPlan: scan = plan case *planners.ProjectionPlan: project = plan } return true, nil } if err := planners.Walk(visit, plan); err != nil { return } if scan != nil && project != nil { scan.Project = project } }, }
ProjectPushDownOptimizer 映射下推,不读取多余的列
Functions ¶
Types ¶
Click to show internal directories.
Click to hide internal directories.