Skip to content

Commit e4a83be

Browse files
authored
Add projection pushdown optimizer (#7141)
* add projection pushdown optimizer Signed-off-by: Ben Ye <benye@amazon.com> * lint Signed-off-by: Ben Ye <benye@amazon.com> --------- Signed-off-by: Ben Ye <benye@amazon.com>
1 parent 250643e commit e4a83be

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

docs/blocks-storage/querier.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ querier:
265265

266266
# Logical plan optimizers. Multiple optimizers can be provided as a
267267
# comma-separated list. Supported values: default, all, propagate-matchers,
268-
# sort-matchers, merge-selects, detect-histogram-stats
268+
# sort-matchers, merge-selects, detect-histogram-stats, projection
269269
# CLI flag: -querier.optimizers
270270
[optimizers: <string> | default = "default"]
271271

docs/configuration/config-file-reference.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4783,7 +4783,7 @@ thanos_engine:
47834783

47844784
# Logical plan optimizers. Multiple optimizers can be provided as a
47854785
# comma-separated list. Supported values: default, all, propagate-matchers,
4786-
# sort-matchers, merge-selects, detect-histogram-stats
4786+
# sort-matchers, merge-selects, detect-histogram-stats, projection
47874787
# CLI flag: -querier.optimizers
47884788
[optimizers: <string> | default = "default"]
47894789

@@ -5554,7 +5554,7 @@ thanos_engine:
55545554

55555555
# Logical plan optimizers. Multiple optimizers can be provided as a
55565556
# comma-separated list. Supported values: default, all, propagate-matchers,
5557-
# sort-matchers, merge-selects, detect-histogram-stats
5557+
# sort-matchers, merge-selects, detect-histogram-stats, projection
55585558
# CLI flag: -ruler.optimizers
55595559
[optimizers: <string> | default = "default"]
55605560

pkg/engine/config.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ import (
55
"fmt"
66
"strings"
77

8+
"github.com/prometheus-community/parquet-common/schema"
89
"github.com/thanos-io/promql-engine/logicalplan"
910
)
1011

11-
var supportedOptimizers = []string{"default", "all", "propagate-matchers", "sort-matchers", "merge-selects", "detect-histogram-stats"}
12+
var supportedOptimizers = []string{"default", "all", "propagate-matchers", "sort-matchers", "merge-selects", "detect-histogram-stats", "projection"}
1213

1314
// ThanosEngineConfig contains the configuration to create engine.
1415
type ThanosEngineConfig struct {
@@ -59,6 +60,11 @@ func getOptimizer(name string) ([]logicalplan.Optimizer, error) {
5960
return []logicalplan.Optimizer{logicalplan.MergeSelectsOptimizer{}}, nil
6061
case "detect-histogram-stats":
6162
return []logicalplan.Optimizer{logicalplan.DetectHistogramStatsOptimizer{}}, nil
63+
case "projection":
64+
po := logicalplan.ProjectionOptimizer{
65+
SeriesHashLabel: schema.SeriesHashColumn,
66+
}
67+
return []logicalplan.Optimizer{po}, nil
6268
default:
6369
return nil, fmt.Errorf("unknown optimizer %s", name)
6470
}

schemas/cortex-config-schema.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6000,7 +6000,7 @@
60006000
},
60016001
"optimizers": {
60026002
"default": "default",
6003-
"description": "Logical plan optimizers. Multiple optimizers can be provided as a comma-separated list. Supported values: default, all, propagate-matchers, sort-matchers, merge-selects, detect-histogram-stats",
6003+
"description": "Logical plan optimizers. Multiple optimizers can be provided as a comma-separated list. Supported values: default, all, propagate-matchers, sort-matchers, merge-selects, detect-histogram-stats, projection",
60046004
"type": "string",
60056005
"x-cli-flag": "querier.optimizers"
60066006
}
@@ -7021,7 +7021,7 @@
70217021
},
70227022
"optimizers": {
70237023
"default": "default",
7024-
"description": "Logical plan optimizers. Multiple optimizers can be provided as a comma-separated list. Supported values: default, all, propagate-matchers, sort-matchers, merge-selects, detect-histogram-stats",
7024+
"description": "Logical plan optimizers. Multiple optimizers can be provided as a comma-separated list. Supported values: default, all, propagate-matchers, sort-matchers, merge-selects, detect-histogram-stats, projection",
70257025
"type": "string",
70267026
"x-cli-flag": "ruler.optimizers"
70277027
}

0 commit comments

Comments
 (0)