rules.go 559 B

12345678910111213141516171819202122232425262728
  1. package planner
  2. type logicalOptRule interface {
  3. optimize(LogicalPlan) (LogicalPlan, error)
  4. name() string
  5. }
  6. type predicatePushDown struct{}
  7. func (r *predicatePushDown) optimize(lp LogicalPlan) (LogicalPlan, error) {
  8. _, p := lp.PushDownPredicate(nil)
  9. return p, nil
  10. }
  11. func (r *predicatePushDown) name() string {
  12. return "predicatePushDown"
  13. }
  14. type columnPruner struct{}
  15. func (r *columnPruner) optimize(lp LogicalPlan) (LogicalPlan, error) {
  16. err := lp.PruneColumns(nil)
  17. return lp, err
  18. }
  19. func (r *columnPruner) name() string {
  20. return "columnPruner"
  21. }