From bd07793ca4401e61499725ec73050cb69dac968d Mon Sep 17 00:00:00 2001 From: Ben Ye Date: Sat, 6 Dec 2025 06:00:49 +0000 Subject: [PATCH 1/2] add projection pushdown optimizer Signed-off-by: Ben Ye --- pkg/engine/config.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/engine/config.go b/pkg/engine/config.go index 7404c2a356d..31a7fefede8 100644 --- a/pkg/engine/config.go +++ b/pkg/engine/config.go @@ -5,10 +5,11 @@ import ( "fmt" "strings" + "github.com/prometheus-community/parquet-common/schema" "github.com/thanos-io/promql-engine/logicalplan" ) -var supportedOptimizers = []string{"default", "all", "propagate-matchers", "sort-matchers", "merge-selects", "detect-histogram-stats"} +var supportedOptimizers = []string{"default", "all", "propagate-matchers", "sort-matchers", "merge-selects", "detect-histogram-stats", "projection"} // ThanosEngineConfig contains the configuration to create engine. type ThanosEngineConfig struct { @@ -59,6 +60,11 @@ func getOptimizer(name string) ([]logicalplan.Optimizer, error) { return []logicalplan.Optimizer{logicalplan.MergeSelectsOptimizer{}}, nil case "detect-histogram-stats": return []logicalplan.Optimizer{logicalplan.DetectHistogramStatsOptimizer{}}, nil + case "projection": + po := logicalplan.ProjectionOptimizer{ + SeriesHashLabel: schema.SeriesHashColumn, + } + return []logicalplan.Optimizer{po}, nil default: return nil, fmt.Errorf("unknown optimizer %s", name) } From 40ea5f29f980d3c1d8416cc5b42bd2cef892b802 Mon Sep 17 00:00:00 2001 From: Ben Ye Date: Sat, 6 Dec 2025 06:43:47 +0000 Subject: [PATCH 2/2] lint Signed-off-by: Ben Ye --- docs/blocks-storage/querier.md | 2 +- docs/configuration/config-file-reference.md | 4 ++-- schemas/cortex-config-schema.json | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/blocks-storage/querier.md b/docs/blocks-storage/querier.md index fdee99409dc..732324fec1f 100644 --- a/docs/blocks-storage/querier.md +++ b/docs/blocks-storage/querier.md @@ -265,7 +265,7 @@ querier: # 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 + # sort-matchers, merge-selects, detect-histogram-stats, projection # CLI flag: -querier.optimizers [optimizers: | default = "default"] diff --git a/docs/configuration/config-file-reference.md b/docs/configuration/config-file-reference.md index 4038797d983..91e9bc9088a 100644 --- a/docs/configuration/config-file-reference.md +++ b/docs/configuration/config-file-reference.md @@ -4779,7 +4779,7 @@ thanos_engine: # 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 + # sort-matchers, merge-selects, detect-histogram-stats, projection # CLI flag: -querier.optimizers [optimizers: | default = "default"] @@ -5550,7 +5550,7 @@ thanos_engine: # 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 + # sort-matchers, merge-selects, detect-histogram-stats, projection # CLI flag: -ruler.optimizers [optimizers: | default = "default"] diff --git a/schemas/cortex-config-schema.json b/schemas/cortex-config-schema.json index 83f8b05aadd..ea143135337 100644 --- a/schemas/cortex-config-schema.json +++ b/schemas/cortex-config-schema.json @@ -5994,7 +5994,7 @@ }, "optimizers": { "default": "default", - "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", + "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", "type": "string", "x-cli-flag": "querier.optimizers" } @@ -7015,7 +7015,7 @@ }, "optimizers": { "default": "default", - "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", + "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", "type": "string", "x-cli-flag": "ruler.optimizers" }