optimizers

package
v0.0.0-...-145960c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2021 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

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
		}
	},
}
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
		}
	},
}

Functions

func Optimize

func Optimize(plan IPlan, optimizers []Optimizer) IPlan

Types

type Optimizer

type Optimizer struct {
	Name        string
	Description string
	Reassembler func(planners.IPlan)
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL