[ES|QL] Update grammars (#218046)

This PR updates the ES|QL grammars (lexer and parser) to match the
latest version in Elasticsearch.

---------

Co-authored-by: Stratoula Kalafateli <efstratia.kalafateli@elastic.co>
This commit is contained in:
Kibana Machine 2025-04-14 14:27:44 +02:00 committed by GitHub
parent d46a89e4a5
commit 478011f3a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 2180 additions and 1996 deletions

File diff suppressed because one or more lines are too long

View file

@ -12,129 +12,130 @@ ROW=11
SORT=12
STATS=13
WHERE=14
DEV_INLINESTATS=15
DEV_RERANK=16
FROM=17
DEV_TIME_SERIES=18
DEV_FORK=19
JOIN_LOOKUP=20
DEV_JOIN_FULL=21
DEV_JOIN_LEFT=22
DEV_JOIN_RIGHT=23
DEV_LOOKUP=24
MV_EXPAND=25
DROP=26
KEEP=27
DEV_INSIST=28
DEV_RRF=29
RENAME=30
SHOW=31
UNKNOWN_CMD=32
CHANGE_POINT_LINE_COMMENT=33
CHANGE_POINT_MULTILINE_COMMENT=34
CHANGE_POINT_WS=35
ENRICH_POLICY_NAME=36
ENRICH_LINE_COMMENT=37
ENRICH_MULTILINE_COMMENT=38
ENRICH_WS=39
ENRICH_FIELD_LINE_COMMENT=40
ENRICH_FIELD_MULTILINE_COMMENT=41
ENRICH_FIELD_WS=42
SETTING=43
SETTING_LINE_COMMENT=44
SETTTING_MULTILINE_COMMENT=45
SETTING_WS=46
EXPLAIN_WS=47
EXPLAIN_LINE_COMMENT=48
EXPLAIN_MULTILINE_COMMENT=49
PIPE=50
QUOTED_STRING=51
INTEGER_LITERAL=52
DECIMAL_LITERAL=53
AND=54
AS=55
ASC=56
ASSIGN=57
BY=58
CAST_OP=59
COLON=60
COMMA=61
DESC=62
DOT=63
FALSE=64
FIRST=65
IN=66
IS=67
LAST=68
LIKE=69
NOT=70
NULL=71
NULLS=72
ON=73
OR=74
PARAM=75
RLIKE=76
TRUE=77
WITH=78
EQ=79
CIEQ=80
NEQ=81
LT=82
LTE=83
GT=84
GTE=85
PLUS=86
MINUS=87
ASTERISK=88
SLASH=89
PERCENT=90
LEFT_BRACES=91
RIGHT_BRACES=92
DOUBLE_PARAMS=93
NAMED_OR_POSITIONAL_PARAM=94
NAMED_OR_POSITIONAL_DOUBLE_PARAMS=95
OPENING_BRACKET=96
CLOSING_BRACKET=97
LP=98
RP=99
UNQUOTED_IDENTIFIER=100
QUOTED_IDENTIFIER=101
EXPR_LINE_COMMENT=102
EXPR_MULTILINE_COMMENT=103
EXPR_WS=104
METADATA=105
UNQUOTED_SOURCE=106
FROM_LINE_COMMENT=107
FROM_MULTILINE_COMMENT=108
FROM_WS=109
FORK_WS=110
FORK_LINE_COMMENT=111
FORK_MULTILINE_COMMENT=112
JOIN=113
USING=114
JOIN_LINE_COMMENT=115
JOIN_MULTILINE_COMMENT=116
JOIN_WS=117
LOOKUP_LINE_COMMENT=118
LOOKUP_MULTILINE_COMMENT=119
LOOKUP_WS=120
LOOKUP_FIELD_LINE_COMMENT=121
LOOKUP_FIELD_MULTILINE_COMMENT=122
LOOKUP_FIELD_WS=123
MVEXPAND_LINE_COMMENT=124
MVEXPAND_MULTILINE_COMMENT=125
MVEXPAND_WS=126
ID_PATTERN=127
PROJECT_LINE_COMMENT=128
PROJECT_MULTILINE_COMMENT=129
PROJECT_WS=130
RENAME_LINE_COMMENT=131
RENAME_MULTILINE_COMMENT=132
RENAME_WS=133
INFO=134
SHOW_LINE_COMMENT=135
SHOW_MULTILINE_COMMENT=136
SHOW_WS=137
DEV_COMPLETION=15
DEV_INLINESTATS=16
DEV_RERANK=17
FROM=18
DEV_TIME_SERIES=19
DEV_FORK=20
JOIN_LOOKUP=21
DEV_JOIN_FULL=22
DEV_JOIN_LEFT=23
DEV_JOIN_RIGHT=24
DEV_LOOKUP=25
MV_EXPAND=26
DROP=27
KEEP=28
DEV_INSIST=29
DEV_RRF=30
RENAME=31
SHOW=32
UNKNOWN_CMD=33
CHANGE_POINT_LINE_COMMENT=34
CHANGE_POINT_MULTILINE_COMMENT=35
CHANGE_POINT_WS=36
ENRICH_POLICY_NAME=37
ENRICH_LINE_COMMENT=38
ENRICH_MULTILINE_COMMENT=39
ENRICH_WS=40
ENRICH_FIELD_LINE_COMMENT=41
ENRICH_FIELD_MULTILINE_COMMENT=42
ENRICH_FIELD_WS=43
SETTING=44
SETTING_LINE_COMMENT=45
SETTTING_MULTILINE_COMMENT=46
SETTING_WS=47
EXPLAIN_WS=48
EXPLAIN_LINE_COMMENT=49
EXPLAIN_MULTILINE_COMMENT=50
PIPE=51
QUOTED_STRING=52
INTEGER_LITERAL=53
DECIMAL_LITERAL=54
AND=55
AS=56
ASC=57
ASSIGN=58
BY=59
CAST_OP=60
COLON=61
COMMA=62
DESC=63
DOT=64
FALSE=65
FIRST=66
IN=67
IS=68
LAST=69
LIKE=70
NOT=71
NULL=72
NULLS=73
ON=74
OR=75
PARAM=76
RLIKE=77
TRUE=78
WITH=79
EQ=80
CIEQ=81
NEQ=82
LT=83
LTE=84
GT=85
GTE=86
PLUS=87
MINUS=88
ASTERISK=89
SLASH=90
PERCENT=91
LEFT_BRACES=92
RIGHT_BRACES=93
DOUBLE_PARAMS=94
NAMED_OR_POSITIONAL_PARAM=95
NAMED_OR_POSITIONAL_DOUBLE_PARAMS=96
OPENING_BRACKET=97
CLOSING_BRACKET=98
LP=99
RP=100
UNQUOTED_IDENTIFIER=101
QUOTED_IDENTIFIER=102
EXPR_LINE_COMMENT=103
EXPR_MULTILINE_COMMENT=104
EXPR_WS=105
METADATA=106
UNQUOTED_SOURCE=107
FROM_LINE_COMMENT=108
FROM_MULTILINE_COMMENT=109
FROM_WS=110
FORK_WS=111
FORK_LINE_COMMENT=112
FORK_MULTILINE_COMMENT=113
JOIN=114
USING=115
JOIN_LINE_COMMENT=116
JOIN_MULTILINE_COMMENT=117
JOIN_WS=118
LOOKUP_LINE_COMMENT=119
LOOKUP_MULTILINE_COMMENT=120
LOOKUP_WS=121
LOOKUP_FIELD_LINE_COMMENT=122
LOOKUP_FIELD_MULTILINE_COMMENT=123
LOOKUP_FIELD_WS=124
MVEXPAND_LINE_COMMENT=125
MVEXPAND_MULTILINE_COMMENT=126
MVEXPAND_WS=127
ID_PATTERN=128
PROJECT_LINE_COMMENT=129
PROJECT_MULTILINE_COMMENT=130
PROJECT_WS=131
RENAME_LINE_COMMENT=132
RENAME_MULTILINE_COMMENT=133
RENAME_WS=134
INFO=135
SHOW_LINE_COMMENT=136
SHOW_MULTILINE_COMMENT=137
SHOW_WS=138
'enrich'=5
'explain'=6
'dissect'=7
@ -145,57 +146,57 @@ SHOW_WS=137
'sort'=12
'stats'=13
'where'=14
'from'=17
'lookup'=20
'mv_expand'=25
'drop'=26
'keep'=27
'rename'=30
'show'=31
'|'=50
'and'=54
'as'=55
'asc'=56
'='=57
'by'=58
'::'=59
':'=60
','=61
'desc'=62
'.'=63
'false'=64
'first'=65
'in'=66
'is'=67
'last'=68
'like'=69
'not'=70
'null'=71
'nulls'=72
'on'=73
'or'=74
'?'=75
'rlike'=76
'true'=77
'with'=78
'=='=79
'=~'=80
'!='=81
'<'=82
'<='=83
'>'=84
'>='=85
'+'=86
'-'=87
'*'=88
'/'=89
'%'=90
'{'=91
'}'=92
'??'=93
']'=97
')'=99
'metadata'=105
'join'=113
'USING'=114
'info'=134
'from'=18
'lookup'=21
'mv_expand'=26
'drop'=27
'keep'=28
'rename'=31
'show'=32
'|'=51
'and'=55
'as'=56
'asc'=57
'='=58
'by'=59
'::'=60
':'=61
','=62
'desc'=63
'.'=64
'false'=65
'first'=66
'in'=67
'is'=68
'last'=69
'like'=70
'not'=71
'null'=72
'nulls'=73
'on'=74
'or'=75
'?'=76
'rlike'=77
'true'=78
'with'=79
'=='=80
'=~'=81
'!='=82
'<'=83
'<='=84
'>'=85
'>='=86
'+'=87
'-'=88
'*'=89
'/'=90
'%'=91
'{'=92
'}'=93
'??'=94
']'=98
')'=100
'metadata'=106
'join'=114
'USING'=115
'info'=135

View file

@ -61,6 +61,7 @@ processingCommand
| {this.isDevVersion()}? inlinestatsCommand
| {this.isDevVersion()}? lookupCommand
| {this.isDevVersion()}? changePointCommand
| {this.isDevVersion()}? completionCommand
| {this.isDevVersion()}? insistCommand
| {this.isDevVersion()}? forkCommand
| {this.isDevVersion()}? rerankCommand
@ -283,9 +284,12 @@ forkSubQueryCommand
;
forkSubQueryProcessingCommand
: whereCommand
| sortCommand
: evalCommand
| whereCommand
| limitCommand
| statsCommand
| sortCommand
| dissectCommand
;
rrfCommand
@ -294,4 +298,8 @@ rrfCommand
rerankCommand
: DEV_RERANK queryText=constant ON fields WITH inferenceId=identifierOrParameter
;
completionCommand
: DEV_COMPLETION prompt=primaryExpression WITH inferenceId=identifierOrParameter (AS targetField=qualifiedName)?
;

File diff suppressed because one or more lines are too long

View file

@ -12,129 +12,130 @@ ROW=11
SORT=12
STATS=13
WHERE=14
DEV_INLINESTATS=15
DEV_RERANK=16
FROM=17
DEV_TIME_SERIES=18
DEV_FORK=19
JOIN_LOOKUP=20
DEV_JOIN_FULL=21
DEV_JOIN_LEFT=22
DEV_JOIN_RIGHT=23
DEV_LOOKUP=24
MV_EXPAND=25
DROP=26
KEEP=27
DEV_INSIST=28
DEV_RRF=29
RENAME=30
SHOW=31
UNKNOWN_CMD=32
CHANGE_POINT_LINE_COMMENT=33
CHANGE_POINT_MULTILINE_COMMENT=34
CHANGE_POINT_WS=35
ENRICH_POLICY_NAME=36
ENRICH_LINE_COMMENT=37
ENRICH_MULTILINE_COMMENT=38
ENRICH_WS=39
ENRICH_FIELD_LINE_COMMENT=40
ENRICH_FIELD_MULTILINE_COMMENT=41
ENRICH_FIELD_WS=42
SETTING=43
SETTING_LINE_COMMENT=44
SETTTING_MULTILINE_COMMENT=45
SETTING_WS=46
EXPLAIN_WS=47
EXPLAIN_LINE_COMMENT=48
EXPLAIN_MULTILINE_COMMENT=49
PIPE=50
QUOTED_STRING=51
INTEGER_LITERAL=52
DECIMAL_LITERAL=53
AND=54
AS=55
ASC=56
ASSIGN=57
BY=58
CAST_OP=59
COLON=60
COMMA=61
DESC=62
DOT=63
FALSE=64
FIRST=65
IN=66
IS=67
LAST=68
LIKE=69
NOT=70
NULL=71
NULLS=72
ON=73
OR=74
PARAM=75
RLIKE=76
TRUE=77
WITH=78
EQ=79
CIEQ=80
NEQ=81
LT=82
LTE=83
GT=84
GTE=85
PLUS=86
MINUS=87
ASTERISK=88
SLASH=89
PERCENT=90
LEFT_BRACES=91
RIGHT_BRACES=92
DOUBLE_PARAMS=93
NAMED_OR_POSITIONAL_PARAM=94
NAMED_OR_POSITIONAL_DOUBLE_PARAMS=95
OPENING_BRACKET=96
CLOSING_BRACKET=97
LP=98
RP=99
UNQUOTED_IDENTIFIER=100
QUOTED_IDENTIFIER=101
EXPR_LINE_COMMENT=102
EXPR_MULTILINE_COMMENT=103
EXPR_WS=104
METADATA=105
UNQUOTED_SOURCE=106
FROM_LINE_COMMENT=107
FROM_MULTILINE_COMMENT=108
FROM_WS=109
FORK_WS=110
FORK_LINE_COMMENT=111
FORK_MULTILINE_COMMENT=112
JOIN=113
USING=114
JOIN_LINE_COMMENT=115
JOIN_MULTILINE_COMMENT=116
JOIN_WS=117
LOOKUP_LINE_COMMENT=118
LOOKUP_MULTILINE_COMMENT=119
LOOKUP_WS=120
LOOKUP_FIELD_LINE_COMMENT=121
LOOKUP_FIELD_MULTILINE_COMMENT=122
LOOKUP_FIELD_WS=123
MVEXPAND_LINE_COMMENT=124
MVEXPAND_MULTILINE_COMMENT=125
MVEXPAND_WS=126
ID_PATTERN=127
PROJECT_LINE_COMMENT=128
PROJECT_MULTILINE_COMMENT=129
PROJECT_WS=130
RENAME_LINE_COMMENT=131
RENAME_MULTILINE_COMMENT=132
RENAME_WS=133
INFO=134
SHOW_LINE_COMMENT=135
SHOW_MULTILINE_COMMENT=136
SHOW_WS=137
DEV_COMPLETION=15
DEV_INLINESTATS=16
DEV_RERANK=17
FROM=18
DEV_TIME_SERIES=19
DEV_FORK=20
JOIN_LOOKUP=21
DEV_JOIN_FULL=22
DEV_JOIN_LEFT=23
DEV_JOIN_RIGHT=24
DEV_LOOKUP=25
MV_EXPAND=26
DROP=27
KEEP=28
DEV_INSIST=29
DEV_RRF=30
RENAME=31
SHOW=32
UNKNOWN_CMD=33
CHANGE_POINT_LINE_COMMENT=34
CHANGE_POINT_MULTILINE_COMMENT=35
CHANGE_POINT_WS=36
ENRICH_POLICY_NAME=37
ENRICH_LINE_COMMENT=38
ENRICH_MULTILINE_COMMENT=39
ENRICH_WS=40
ENRICH_FIELD_LINE_COMMENT=41
ENRICH_FIELD_MULTILINE_COMMENT=42
ENRICH_FIELD_WS=43
SETTING=44
SETTING_LINE_COMMENT=45
SETTTING_MULTILINE_COMMENT=46
SETTING_WS=47
EXPLAIN_WS=48
EXPLAIN_LINE_COMMENT=49
EXPLAIN_MULTILINE_COMMENT=50
PIPE=51
QUOTED_STRING=52
INTEGER_LITERAL=53
DECIMAL_LITERAL=54
AND=55
AS=56
ASC=57
ASSIGN=58
BY=59
CAST_OP=60
COLON=61
COMMA=62
DESC=63
DOT=64
FALSE=65
FIRST=66
IN=67
IS=68
LAST=69
LIKE=70
NOT=71
NULL=72
NULLS=73
ON=74
OR=75
PARAM=76
RLIKE=77
TRUE=78
WITH=79
EQ=80
CIEQ=81
NEQ=82
LT=83
LTE=84
GT=85
GTE=86
PLUS=87
MINUS=88
ASTERISK=89
SLASH=90
PERCENT=91
LEFT_BRACES=92
RIGHT_BRACES=93
DOUBLE_PARAMS=94
NAMED_OR_POSITIONAL_PARAM=95
NAMED_OR_POSITIONAL_DOUBLE_PARAMS=96
OPENING_BRACKET=97
CLOSING_BRACKET=98
LP=99
RP=100
UNQUOTED_IDENTIFIER=101
QUOTED_IDENTIFIER=102
EXPR_LINE_COMMENT=103
EXPR_MULTILINE_COMMENT=104
EXPR_WS=105
METADATA=106
UNQUOTED_SOURCE=107
FROM_LINE_COMMENT=108
FROM_MULTILINE_COMMENT=109
FROM_WS=110
FORK_WS=111
FORK_LINE_COMMENT=112
FORK_MULTILINE_COMMENT=113
JOIN=114
USING=115
JOIN_LINE_COMMENT=116
JOIN_MULTILINE_COMMENT=117
JOIN_WS=118
LOOKUP_LINE_COMMENT=119
LOOKUP_MULTILINE_COMMENT=120
LOOKUP_WS=121
LOOKUP_FIELD_LINE_COMMENT=122
LOOKUP_FIELD_MULTILINE_COMMENT=123
LOOKUP_FIELD_WS=124
MVEXPAND_LINE_COMMENT=125
MVEXPAND_MULTILINE_COMMENT=126
MVEXPAND_WS=127
ID_PATTERN=128
PROJECT_LINE_COMMENT=129
PROJECT_MULTILINE_COMMENT=130
PROJECT_WS=131
RENAME_LINE_COMMENT=132
RENAME_MULTILINE_COMMENT=133
RENAME_WS=134
INFO=135
SHOW_LINE_COMMENT=136
SHOW_MULTILINE_COMMENT=137
SHOW_WS=138
'enrich'=5
'explain'=6
'dissect'=7
@ -145,57 +146,57 @@ SHOW_WS=137
'sort'=12
'stats'=13
'where'=14
'from'=17
'lookup'=20
'mv_expand'=25
'drop'=26
'keep'=27
'rename'=30
'show'=31
'|'=50
'and'=54
'as'=55
'asc'=56
'='=57
'by'=58
'::'=59
':'=60
','=61
'desc'=62
'.'=63
'false'=64
'first'=65
'in'=66
'is'=67
'last'=68
'like'=69
'not'=70
'null'=71
'nulls'=72
'on'=73
'or'=74
'?'=75
'rlike'=76
'true'=77
'with'=78
'=='=79
'=~'=80
'!='=81
'<'=82
'<='=83
'>'=84
'>='=85
'+'=86
'-'=87
'*'=88
'/'=89
'%'=90
'{'=91
'}'=92
'??'=93
']'=97
')'=99
'metadata'=105
'join'=113
'USING'=114
'info'=134
'from'=18
'lookup'=21
'mv_expand'=26
'drop'=27
'keep'=28
'rename'=31
'show'=32
'|'=51
'and'=55
'as'=56
'asc'=57
'='=58
'by'=59
'::'=60
':'=61
','=62
'desc'=63
'.'=64
'false'=65
'first'=66
'in'=67
'is'=68
'last'=69
'like'=70
'not'=71
'null'=72
'nulls'=73
'on'=74
'or'=75
'?'=76
'rlike'=77
'true'=78
'with'=79
'=='=80
'=~'=81
'!='=82
'<'=83
'<='=84
'>'=85
'>='=86
'+'=87
'-'=88
'*'=89
'/'=90
'%'=91
'{'=92
'}'=93
'??'=94
']'=98
')'=100
'metadata'=106
'join'=114
'USING'=115
'info'=135

View file

@ -72,6 +72,7 @@ import { CompositeForkSubQueryContext } from "./esql_parser.js";
import { ForkSubQueryProcessingCommandContext } from "./esql_parser.js";
import { RrfCommandContext } from "./esql_parser.js";
import { RerankCommandContext } from "./esql_parser.js";
import { CompletionCommandContext } from "./esql_parser.js";
import { MatchExpressionContext } from "./esql_parser.js";
import { LogicalNotContext } from "./esql_parser.js";
import { BooleanDefaultContext } from "./esql_parser.js";
@ -752,6 +753,16 @@ export default class esql_parserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
exitRerankCommand?: (ctx: RerankCommandContext) => void;
/**
* Enter a parse tree produced by `esql_parser.completionCommand`.
* @param ctx the parse tree
*/
enterCompletionCommand?: (ctx: CompletionCommandContext) => void;
/**
* Exit a parse tree produced by `esql_parser.completionCommand`.
* @param ctx the parse tree
*/
exitCompletionCommand?: (ctx: CompletionCommandContext) => void;
/**
* Enter a parse tree produced by the `matchExpression`
* labeled alternative in `esql_parser.booleanExpression`.

View file

@ -18,8 +18,9 @@ SORT : 'sort' -> pushMode(EXPRESSION_MODE);
STATS : 'stats' -> pushMode(EXPRESSION_MODE);
WHERE : 'where' -> pushMode(EXPRESSION_MODE);
DEV_COMPLETION : {this.isDevVersion()}? 'completion' -> pushMode(EXPRESSION_MODE);
DEV_INLINESTATS : {this.isDevVersion()}? 'inlinestats' -> pushMode(EXPRESSION_MODE);
DEV_RERANK : {this.isDevVersion()}? 'rerank' -> pushMode(EXPRESSION_MODE);
DEV_RERANK : {this.isDevVersion()}? 'rerank' -> pushMode(EXPRESSION_MODE);
mode EXPRESSION_MODE;

View file

@ -66,7 +66,7 @@ describe('FORK', () => {
it('when unsupported command', () => {
const text = `FROM kibana_ecommerce_data
| FORK
(EVAL bytes > 1)`;
(DROP bytes)`;
const { errors } = parse(text);

View file

@ -115,9 +115,7 @@ export const validationForkCommandTestSuite = (setup: helpers.Setup) => {
(EVAL TO_UPPER(keywordField) | LIMIT 100)
(FORK (WHERE 1))`,
[
"SyntaxError: mismatched input ')' expecting <EOF>",
"SyntaxError: mismatched input 'EVAL' expecting {'limit', 'sort', 'where'}",
"SyntaxError: mismatched input 'keywordField' expecting {'limit', 'sort', 'where'}",
"SyntaxError: mismatched input 'FORK' expecting {'dissect', 'eval', 'limit', 'sort', 'stats', 'where'}",
"SyntaxError: token recognition error at: ')'",
]
);

View file

@ -91,6 +91,7 @@ export const buildESQLTheme = ({
'dev_change_point',
'dev_insist',
'dev_rrf',
'dev_completion',
],
euiTheme.colors.accent,
true // isBold