prometheus/promql
György Krajcsovits 26088d01b9
fix(parser): parenthesis around aggregate expression parsing
The position range of nested aggregate expression was wrong, for the
expression "(sum(foo))" the position of "sum(foo)" should be 1-9, but
the parser could not decide the end of the expression on pos 9, instead
it read ahead to pos 10 and then emitted the aggregate. But we only
kept the last closing position (10) and wrote that into the aggregate.

The reason for this is that the parser cannot know from "(sum(foo)" alone
if the aggregate is finished. It could be finished as in "(sum(foo))" but
equally it could continue with group modifier as "(sum(foo) by (bar))".

The fix is to track ")" tokens in a stack in addition to the lastClosing
position, which is overloaded with other things like offset number tracking.


Signed-off-by: György Krajcsovits <gyorgy.krajcsovits@grafana.com>
2025-05-07 11:13:40 +02:00
..
fuzz-data textparse: Add fuzzing and fix bug caught 2017-07-07 11:12:17 +02:00
parser fix(parser): parenthesis around aggregate expression parsing 2025-05-07 11:13:40 +02:00
promqltest [FIX] PromQL: Ignore histograms in scalar, sort and sort_desc functions (#15964) 2025-02-06 16:02:03 +01:00
bench_test.go v2.55.0 2024-10-25 14:16:22 +02:00
engine.go Fix issue 2025-02-05 11:48:47 +11:00
engine_internal_test.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
engine_test.go Expand TestInstantQueryWithRangeVectorSelector to include histograms 2025-02-05 11:45:16 +11:00
functions.go [FIX] PromQL: Ignore histograms in scalar, sort and sort_desc functions (#15964) 2025-02-06 16:02:03 +01:00
functions_internal_test.go Fix issue where summation of +/- infinity returns NaN instead of infinity 2024-06-28 11:26:54 +10:00
functions_test.go Refactor engine creation in tests 2024-07-14 13:58:51 +02:00
fuzz.go scrape: provide a fallback format (#15136) 2024-10-18 17:12:31 +02:00
fuzz_test.go fix: use "ErrorContains" or "EqualError" instead of "Contains(t, err.Error()" and "Equal(t, err.Error()" (#15094) 2024-10-06 16:35:29 +00:00
histogram_stats_iterator.go Use CopyTo when resetting histogram in stats iterator 2024-07-31 11:18:47 +02:00
histogram_stats_iterator_test.go Upgrade to golangci-lint v1.62.0 (#15424) 2024-11-20 17:22:20 +01:00
info.go enable errorf rule from perfsprint linter 2024-11-06 16:50:36 +01:00
info_test.go [FEATURE] PromQL: Add experimental info function MVP (#14495) 2024-10-16 13:52:11 +01:00
promql_test.go Refactor engine creation in tests 2024-07-14 13:58:51 +02:00
quantile.go Ensure metric name is present on histogram_quantile annotations (#15828) 2025-01-22 14:35:43 +01:00
quantile_test.go Export quantile functions (#15190) 2024-11-27 13:20:23 +01:00
query_logger.go chore!: adopt log/slog, remove go-kit/log 2024-10-07 15:58:50 -04:00
query_logger_test.go chore: Fix typos (#14868) 2024-09-10 22:32:03 +02:00
value.go chore: Fix typos (#14868) 2024-09-10 22:32:03 +02:00
value_test.go test: move most PromQL tests into separate test package 2024-05-08 16:28:56 +01:00