Skip to content

ES|QL: Add parameterized query support to PromQL parser#144293

Merged
felixbarny merged 5 commits intoelastic:mainfrom
felixbarny:promql-param-query
Mar 19, 2026
Merged

ES|QL: Add parameterized query support to PromQL parser#144293
felixbarny merged 5 commits intoelastic:mainfrom
felixbarny:promql-param-query

Conversation

@felixbarny
Copy link
Copy Markdown
Member

@felixbarny felixbarny commented Mar 16, 2026

Extends the Promql.g4 grammar so PromQL queries can be provided as named query parameters instead of being inlined as string literals

Examples:

PROMQL ... ?param
PROMQL ... (?param)
PROMQL ... value=?param
PROMQL ... value=(?param)

This is a standalone change — it adds value for any caller of the PROMQL ES|QL command and has no dependency on the Prometheus plugin.

Stacking order

Overview: #144294

@elasticsearchmachine elasticsearchmachine added needs:triage Requires assignment of a team area label external-contributor Pull request authored by a developer outside the Elasticsearch team v9.4.0 labels Mar 16, 2026
@felixbarny felixbarny self-assigned this Mar 16, 2026
@felixbarny felixbarny added >non-issue :StorageEngine/PromQL PromQL support for Elastic labels Mar 16, 2026
@elasticsearchmachine
Copy link
Copy Markdown
Collaborator

Pinging @elastic/es-storage-engine (Team:StorageEngine)

@elasticsearchmachine elasticsearchmachine removed the needs:triage Requires assignment of a team area label label Mar 16, 2026
… parens

- Add PromqlParserTests covering the new (?param) / ?param syntax for
  the whole PromQL expression and the index=?param syntax
- Fix NPE in LogicalPlanBuilder when an unknown param name is used as
  the PromQL expression (null-check result of paramByNameOrPosition)
- Extend Promql.g4 with an unparenthesized alternative so ?query works
  in addition to (?query); regenerate EsqlBaseParser
- Allow `value=?query` (unparenthesized) in the PromQL grammar by adding
  `(valueName ASSIGN)?` to the unparenthesized param alternative; there's
  no ambiguity here unlike the inline query case
- Validate blank string params with a clear ParsingException instead of
  passing an empty query to the inner PromQL parser
- Add null check and type validation in parseIndexPattern so unknown or
  non-string index params produce a ParsingException instead of NPE /
  silent toString coercion
- Add tests for all new error paths and for value=?query without parens
@felixbarny felixbarny enabled auto-merge (squash) March 19, 2026 10:35
@felixbarny felixbarny merged commit 69dc709 into elastic:main Mar 19, 2026
40 checks passed
@felixbarny felixbarny deleted the promql-param-query branch March 19, 2026 12:11
ncordon pushed a commit to ncordon/elasticsearch that referenced this pull request Mar 20, 2026
Extends the `Promql.g4` grammar so PromQL queries can be provided as named query parameters instead of being inlined as string literals

Examples:
```
PROMQL ... ?param
PROMQL ... (?param)
PROMQL ... value=?param
PROMQL ... value=(?param)
```
michalborek pushed a commit to michalborek/elasticsearch that referenced this pull request Mar 23, 2026
Extends the `Promql.g4` grammar so PromQL queries can be provided as named query parameters instead of being inlined as string literals

Examples:
```
PROMQL ... ?param
PROMQL ... (?param)
PROMQL ... value=?param
PROMQL ... value=(?param)
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

external-contributor Pull request authored by a developer outside the Elasticsearch team >non-issue :StorageEngine/PromQL PromQL support for Elastic Team:StorageEngine v9.4.0

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants