[ES|QL] Update grammars (#186262)

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 2024-06-17 14:55:47 +02:00 committed by GitHub
parent 95e502cbe6
commit 96024b8d40
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 1486 additions and 1331 deletions

View file

@ -166,6 +166,11 @@ ASTERISK : '*';
SLASH : '/';
PERCENT : '%';
NAMED_OR_POSITIONAL_PARAM
: PARAM LETTER UNQUOTED_ID_BODY*
| PARAM DIGIT+
;
// Brackets are funny. We can happen upon a CLOSING_BRACKET in two ways - one
// way is to start in an explain command which then shifts us to expression
// mode. Thus, the two popModes on CLOSING_BRACKET. The other way could as

File diff suppressed because one or more lines are too long

View file

@ -65,62 +65,63 @@ MINUS=64
ASTERISK=65
SLASH=66
PERCENT=67
OPENING_BRACKET=68
CLOSING_BRACKET=69
UNQUOTED_IDENTIFIER=70
QUOTED_IDENTIFIER=71
EXPR_LINE_COMMENT=72
EXPR_MULTILINE_COMMENT=73
EXPR_WS=74
METADATA=75
FROM_LINE_COMMENT=76
FROM_MULTILINE_COMMENT=77
FROM_WS=78
ID_PATTERN=79
PROJECT_LINE_COMMENT=80
PROJECT_MULTILINE_COMMENT=81
PROJECT_WS=82
AS=83
RENAME_LINE_COMMENT=84
RENAME_MULTILINE_COMMENT=85
RENAME_WS=86
ON=87
WITH=88
ENRICH_POLICY_NAME=89
ENRICH_LINE_COMMENT=90
ENRICH_MULTILINE_COMMENT=91
ENRICH_WS=92
ENRICH_FIELD_LINE_COMMENT=93
ENRICH_FIELD_MULTILINE_COMMENT=94
ENRICH_FIELD_WS=95
LOOKUP_LINE_COMMENT=96
LOOKUP_MULTILINE_COMMENT=97
LOOKUP_WS=98
LOOKUP_FIELD_LINE_COMMENT=99
LOOKUP_FIELD_MULTILINE_COMMENT=100
LOOKUP_FIELD_WS=101
MVEXPAND_LINE_COMMENT=102
MVEXPAND_MULTILINE_COMMENT=103
MVEXPAND_WS=104
INFO=105
SHOW_LINE_COMMENT=106
SHOW_MULTILINE_COMMENT=107
SHOW_WS=108
FUNCTIONS=109
META_LINE_COMMENT=110
META_MULTILINE_COMMENT=111
META_WS=112
COLON=113
SETTING=114
SETTING_LINE_COMMENT=115
SETTTING_MULTILINE_COMMENT=116
SETTING_WS=117
METRICS_LINE_COMMENT=118
METRICS_MULTILINE_COMMENT=119
METRICS_WS=120
CLOSING_METRICS_LINE_COMMENT=121
CLOSING_METRICS_MULTILINE_COMMENT=122
CLOSING_METRICS_WS=123
NAMED_OR_POSITIONAL_PARAM=68
OPENING_BRACKET=69
CLOSING_BRACKET=70
UNQUOTED_IDENTIFIER=71
QUOTED_IDENTIFIER=72
EXPR_LINE_COMMENT=73
EXPR_MULTILINE_COMMENT=74
EXPR_WS=75
METADATA=76
FROM_LINE_COMMENT=77
FROM_MULTILINE_COMMENT=78
FROM_WS=79
ID_PATTERN=80
PROJECT_LINE_COMMENT=81
PROJECT_MULTILINE_COMMENT=82
PROJECT_WS=83
AS=84
RENAME_LINE_COMMENT=85
RENAME_MULTILINE_COMMENT=86
RENAME_WS=87
ON=88
WITH=89
ENRICH_POLICY_NAME=90
ENRICH_LINE_COMMENT=91
ENRICH_MULTILINE_COMMENT=92
ENRICH_WS=93
ENRICH_FIELD_LINE_COMMENT=94
ENRICH_FIELD_MULTILINE_COMMENT=95
ENRICH_FIELD_WS=96
LOOKUP_LINE_COMMENT=97
LOOKUP_MULTILINE_COMMENT=98
LOOKUP_WS=99
LOOKUP_FIELD_LINE_COMMENT=100
LOOKUP_FIELD_MULTILINE_COMMENT=101
LOOKUP_FIELD_WS=102
MVEXPAND_LINE_COMMENT=103
MVEXPAND_MULTILINE_COMMENT=104
MVEXPAND_WS=105
INFO=106
SHOW_LINE_COMMENT=107
SHOW_MULTILINE_COMMENT=108
SHOW_WS=109
FUNCTIONS=110
META_LINE_COMMENT=111
META_MULTILINE_COMMENT=112
META_WS=113
COLON=114
SETTING=115
SETTING_LINE_COMMENT=116
SETTTING_MULTILINE_COMMENT=117
SETTING_WS=118
METRICS_LINE_COMMENT=119
METRICS_MULTILINE_COMMENT=120
METRICS_WS=121
CLOSING_METRICS_LINE_COMMENT=122
CLOSING_METRICS_MULTILINE_COMMENT=123
CLOSING_METRICS_WS=124
'dissect'=1
'drop'=2
'enrich'=3
@ -177,11 +178,11 @@ CLOSING_METRICS_WS=123
'*'=65
'/'=66
'%'=67
']'=69
'metadata'=75
'as'=83
'on'=87
'with'=88
'info'=105
'functions'=109
':'=113
']'=70
'metadata'=76
'as'=84
'on'=88
'with'=89
'info'=106
'functions'=110
':'=114

File diff suppressed because it is too large Load diff

View file

@ -179,13 +179,18 @@ constant
| decimalValue #decimalLiteral
| integerValue #integerLiteral
| booleanValue #booleanLiteral
| PARAM #inputParam
| params #inputParams
| string #stringLiteral
| OPENING_BRACKET numericValue (COMMA numericValue)* CLOSING_BRACKET #numericArrayLiteral
| OPENING_BRACKET booleanValue (COMMA booleanValue)* CLOSING_BRACKET #booleanArrayLiteral
| OPENING_BRACKET string (COMMA string)* CLOSING_BRACKET #stringArrayLiteral
;
params
: PARAM #inputParam
| NAMED_OR_POSITIONAL_PARAM #inputNamedOrPositionalParam
;
limitCommand
: LIMIT INTEGER_LITERAL
;

File diff suppressed because one or more lines are too long

View file

@ -65,62 +65,63 @@ MINUS=64
ASTERISK=65
SLASH=66
PERCENT=67
OPENING_BRACKET=68
CLOSING_BRACKET=69
UNQUOTED_IDENTIFIER=70
QUOTED_IDENTIFIER=71
EXPR_LINE_COMMENT=72
EXPR_MULTILINE_COMMENT=73
EXPR_WS=74
METADATA=75
FROM_LINE_COMMENT=76
FROM_MULTILINE_COMMENT=77
FROM_WS=78
ID_PATTERN=79
PROJECT_LINE_COMMENT=80
PROJECT_MULTILINE_COMMENT=81
PROJECT_WS=82
AS=83
RENAME_LINE_COMMENT=84
RENAME_MULTILINE_COMMENT=85
RENAME_WS=86
ON=87
WITH=88
ENRICH_POLICY_NAME=89
ENRICH_LINE_COMMENT=90
ENRICH_MULTILINE_COMMENT=91
ENRICH_WS=92
ENRICH_FIELD_LINE_COMMENT=93
ENRICH_FIELD_MULTILINE_COMMENT=94
ENRICH_FIELD_WS=95
LOOKUP_LINE_COMMENT=96
LOOKUP_MULTILINE_COMMENT=97
LOOKUP_WS=98
LOOKUP_FIELD_LINE_COMMENT=99
LOOKUP_FIELD_MULTILINE_COMMENT=100
LOOKUP_FIELD_WS=101
MVEXPAND_LINE_COMMENT=102
MVEXPAND_MULTILINE_COMMENT=103
MVEXPAND_WS=104
INFO=105
SHOW_LINE_COMMENT=106
SHOW_MULTILINE_COMMENT=107
SHOW_WS=108
FUNCTIONS=109
META_LINE_COMMENT=110
META_MULTILINE_COMMENT=111
META_WS=112
COLON=113
SETTING=114
SETTING_LINE_COMMENT=115
SETTTING_MULTILINE_COMMENT=116
SETTING_WS=117
METRICS_LINE_COMMENT=118
METRICS_MULTILINE_COMMENT=119
METRICS_WS=120
CLOSING_METRICS_LINE_COMMENT=121
CLOSING_METRICS_MULTILINE_COMMENT=122
CLOSING_METRICS_WS=123
NAMED_OR_POSITIONAL_PARAM=68
OPENING_BRACKET=69
CLOSING_BRACKET=70
UNQUOTED_IDENTIFIER=71
QUOTED_IDENTIFIER=72
EXPR_LINE_COMMENT=73
EXPR_MULTILINE_COMMENT=74
EXPR_WS=75
METADATA=76
FROM_LINE_COMMENT=77
FROM_MULTILINE_COMMENT=78
FROM_WS=79
ID_PATTERN=80
PROJECT_LINE_COMMENT=81
PROJECT_MULTILINE_COMMENT=82
PROJECT_WS=83
AS=84
RENAME_LINE_COMMENT=85
RENAME_MULTILINE_COMMENT=86
RENAME_WS=87
ON=88
WITH=89
ENRICH_POLICY_NAME=90
ENRICH_LINE_COMMENT=91
ENRICH_MULTILINE_COMMENT=92
ENRICH_WS=93
ENRICH_FIELD_LINE_COMMENT=94
ENRICH_FIELD_MULTILINE_COMMENT=95
ENRICH_FIELD_WS=96
LOOKUP_LINE_COMMENT=97
LOOKUP_MULTILINE_COMMENT=98
LOOKUP_WS=99
LOOKUP_FIELD_LINE_COMMENT=100
LOOKUP_FIELD_MULTILINE_COMMENT=101
LOOKUP_FIELD_WS=102
MVEXPAND_LINE_COMMENT=103
MVEXPAND_MULTILINE_COMMENT=104
MVEXPAND_WS=105
INFO=106
SHOW_LINE_COMMENT=107
SHOW_MULTILINE_COMMENT=108
SHOW_WS=109
FUNCTIONS=110
META_LINE_COMMENT=111
META_MULTILINE_COMMENT=112
META_WS=113
COLON=114
SETTING=115
SETTING_LINE_COMMENT=116
SETTTING_MULTILINE_COMMENT=117
SETTING_WS=118
METRICS_LINE_COMMENT=119
METRICS_MULTILINE_COMMENT=120
METRICS_WS=121
CLOSING_METRICS_LINE_COMMENT=122
CLOSING_METRICS_MULTILINE_COMMENT=123
CLOSING_METRICS_WS=124
'dissect'=1
'drop'=2
'enrich'=3
@ -177,11 +178,11 @@ CLOSING_METRICS_WS=123
'*'=65
'/'=66
'%'=67
']'=69
'metadata'=75
'as'=83
'on'=87
'with'=88
'info'=105
'functions'=109
':'=113
']'=70
'metadata'=76
'as'=84
'on'=88
'with'=89
'info'=106
'functions'=110
':'=114

File diff suppressed because it is too large Load diff

View file

@ -51,11 +51,13 @@ import { QualifiedIntegerLiteralContext } from "./esql_parser";
import { DecimalLiteralContext } from "./esql_parser";
import { IntegerLiteralContext } from "./esql_parser";
import { BooleanLiteralContext } from "./esql_parser";
import { InputParamContext } from "./esql_parser";
import { InputParamsContext } from "./esql_parser";
import { StringLiteralContext } from "./esql_parser";
import { NumericArrayLiteralContext } from "./esql_parser";
import { BooleanArrayLiteralContext } from "./esql_parser";
import { StringArrayLiteralContext } from "./esql_parser";
import { InputParamContext } from "./esql_parser";
import { InputNamedOrPositionalParamContext } from "./esql_parser";
import { LimitCommandContext } from "./esql_parser";
import { SortCommandContext } from "./esql_parser";
import { OrderExpressionContext } from "./esql_parser";
@ -607,17 +609,17 @@ export default class esql_parserListener extends ParseTreeListener {
*/
exitBooleanLiteral?: (ctx: BooleanLiteralContext) => void;
/**
* Enter a parse tree produced by the `inputParam`
* Enter a parse tree produced by the `inputParams`
* labeled alternative in `esql_parser.constant`.
* @param ctx the parse tree
*/
enterInputParam?: (ctx: InputParamContext) => void;
enterInputParams?: (ctx: InputParamsContext) => void;
/**
* Exit a parse tree produced by the `inputParam`
* Exit a parse tree produced by the `inputParams`
* labeled alternative in `esql_parser.constant`.
* @param ctx the parse tree
*/
exitInputParam?: (ctx: InputParamContext) => void;
exitInputParams?: (ctx: InputParamsContext) => void;
/**
* Enter a parse tree produced by the `stringLiteral`
* labeled alternative in `esql_parser.constant`.
@ -666,6 +668,30 @@ export default class esql_parserListener extends ParseTreeListener {
* @param ctx the parse tree
*/
exitStringArrayLiteral?: (ctx: StringArrayLiteralContext) => void;
/**
* Enter a parse tree produced by the `inputParam`
* labeled alternative in `esql_parser.params`.
* @param ctx the parse tree
*/
enterInputParam?: (ctx: InputParamContext) => void;
/**
* Exit a parse tree produced by the `inputParam`
* labeled alternative in `esql_parser.params`.
* @param ctx the parse tree
*/
exitInputParam?: (ctx: InputParamContext) => void;
/**
* Enter a parse tree produced by the `inputNamedOrPositionalParam`
* labeled alternative in `esql_parser.params`.
* @param ctx the parse tree
*/
enterInputNamedOrPositionalParam?: (ctx: InputNamedOrPositionalParamContext) => void;
/**
* Exit a parse tree produced by the `inputNamedOrPositionalParam`
* labeled alternative in `esql_parser.params`.
* @param ctx the parse tree
*/
exitInputNamedOrPositionalParam?: (ctx: InputNamedOrPositionalParamContext) => void;
/**
* Enter a parse tree produced by `esql_parser.limitCommand`.
* @param ctx the parse tree

View file

@ -290,7 +290,7 @@
{
"query": "from index [METADATA _id, _source2]",
"error": [
"Metadata field [_source2] is not available. Available metadata fields are: [_version, _id, _index, _source]"
"Metadata field [_source2] is not available. Available metadata fields are: [_version, _id, _index, _source, _ignored]"
],
"warning": [
"Square brackets '[]' need to be removed from FROM METADATA declaration"
@ -337,7 +337,7 @@
{
"query": "from index METADATA _id, _source2",
"error": [
"Metadata field [_source2] is not available. Available metadata fields are: [_version, _id, _index, _source]"
"Metadata field [_source2] is not available. Available metadata fields are: [_version, _id, _index, _source, _ignored]"
],
"warning": []
},
@ -504,7 +504,7 @@
{
"query": "row",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -612,7 +612,7 @@
{
"query": "row var = 1 in (",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"Error: [in] function expects exactly 2 arguments, got 1."
],
"warning": []
@ -2846,7 +2846,7 @@
{
"query": "from a_index | dissect",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -2902,7 +2902,7 @@
{
"query": "from a_index | dissect stringField \"%{firstWord}\" option = ",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', 'null', '?', 'true', '+', '-', OPENING_BRACKET}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET}",
"Invalid option for DISSECT: [option]"
],
"warning": []
@ -2941,7 +2941,7 @@
{
"query": "from a_index | grok",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -3743,21 +3743,21 @@
{
"query": "from a_index | where *+ numberField",
"error": [
"SyntaxError: extraneous input '*' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: extraneous input '*' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
{
"query": "from a_index | where /+ numberField",
"error": [
"SyntaxError: extraneous input '/' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: extraneous input '/' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
{
"query": "from a_index | where %+ numberField",
"error": [
"SyntaxError: extraneous input '%' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: extraneous input '%' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -4324,7 +4324,7 @@
{
"query": "from a_index | eval ",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -4367,7 +4367,7 @@
{
"query": "from a_index | eval a=b, ",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"Unknown column [b]"
],
"warning": []
@ -4394,7 +4394,7 @@
{
"query": "from a_index | eval a=round(numberField), ",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -5220,21 +5220,21 @@
{
"query": "from a_index | eval *+ numberField",
"error": [
"SyntaxError: extraneous input '*' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: extraneous input '*' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
{
"query": "from a_index | eval /+ numberField",
"error": [
"SyntaxError: extraneous input '/' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: extraneous input '/' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
{
"query": "from a_index | eval %+ numberField",
"error": [
"SyntaxError: extraneous input '%' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: extraneous input '%' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -6558,7 +6558,7 @@
{
"query": "from a_index | eval not",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"Error: [not] function expects exactly one argument, got 0."
],
"warning": []
@ -6566,7 +6566,7 @@
{
"query": "from a_index | eval in",
"error": [
"SyntaxError: mismatched input 'in' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input 'in' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -7787,7 +7787,7 @@
{
"query": "from a_index | stats by ",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -7801,14 +7801,14 @@
{
"query": "from a_index | stats numberField=",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
{
"query": "from a_index | stats numberField=5 by ",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -8422,7 +8422,7 @@
{
"query": "from a_index | sort ",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},
@ -8441,7 +8441,7 @@
{
"query": "from a_index | sort numberField, ",
"error": [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}"
],
"warning": []
},

View file

@ -375,7 +375,7 @@ describe('validation logic', () => {
describe('row', () => {
testErrorsAndWarnings('row', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('row missing_column', ['Unknown column [missing_column]']);
testErrorsAndWarnings('row fn()', ['Unknown function [fn]']);
@ -404,7 +404,7 @@ describe('validation logic', () => {
"SyntaxError: mismatched input '<EOF>' expecting '('",
]);
testErrorsAndWarnings('row var = 1 in (', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
'Error: [in] function expects exactly 2 arguments, got 1.',
]);
testErrorsAndWarnings('row var = 1 not in ', [
@ -782,7 +782,7 @@ describe('validation logic', () => {
describe('dissect', () => {
testErrorsAndWarnings('from a_index | dissect', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | dissect stringField', [
"SyntaxError: missing QUOTED_STRING at '<EOF>'",
@ -807,7 +807,7 @@ describe('validation logic', () => {
"SyntaxError: mismatched input '<EOF>' expecting '='",
]);
testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = ', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', 'null', '?', 'true', '+', '-', OPENING_BRACKET}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET}",
'Invalid option for DISSECT: [option]',
]);
testErrorsAndWarnings('from a_index | dissect stringField "%{firstWord}" option = 1', [
@ -836,7 +836,7 @@ describe('validation logic', () => {
describe('grok', () => {
testErrorsAndWarnings('from a_index | grok', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | grok stringField', [
"SyntaxError: missing QUOTED_STRING at '<EOF>'",
@ -921,7 +921,7 @@ describe('validation logic', () => {
}
for (const wrongOp of ['*', '/', '%']) {
testErrorsAndWarnings(`from a_index | where ${wrongOp}+ numberField`, [
`SyntaxError: extraneous input '${wrongOp}' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}`,
`SyntaxError: extraneous input '${wrongOp}' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}`,
]);
}
@ -994,7 +994,7 @@ describe('validation logic', () => {
describe('eval', () => {
testErrorsAndWarnings('from a_index | eval ', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | eval stringField ', []);
testErrorsAndWarnings('from a_index | eval b = stringField', []);
@ -1007,7 +1007,7 @@ describe('validation logic', () => {
]);
testErrorsAndWarnings('from a_index | eval a=b', ['Unknown column [b]']);
testErrorsAndWarnings('from a_index | eval a=b, ', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
'Unknown column [b]',
]);
testErrorsAndWarnings('from a_index | eval a=round', ['Unknown column [round]']);
@ -1016,7 +1016,7 @@ describe('validation logic', () => {
]);
testErrorsAndWarnings('from a_index | eval a=round(numberField) ', []);
testErrorsAndWarnings('from a_index | eval a=round(numberField), ', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | eval a=round(numberField) + round(numberField) ', []);
testErrorsAndWarnings('from a_index | eval a=round(numberField) + round(stringField) ', [
@ -1079,7 +1079,7 @@ describe('validation logic', () => {
for (const wrongOp of ['*', '/', '%']) {
testErrorsAndWarnings(`from a_index | eval ${wrongOp}+ numberField`, [
`SyntaxError: extraneous input '${wrongOp}' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}`,
`SyntaxError: extraneous input '${wrongOp}' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}`,
]);
}
testErrorsAndWarnings(
@ -1283,11 +1283,11 @@ describe('validation logic', () => {
[]
);
testErrorsAndWarnings('from a_index | eval not', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
'Error: [not] function expects exactly one argument, got 0.',
]);
testErrorsAndWarnings('from a_index | eval in', [
"SyntaxError: mismatched input 'in' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input 'in' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | eval stringField in stringField', [
@ -1376,16 +1376,16 @@ describe('validation logic', () => {
]);
testErrorsAndWarnings('from a_index | stats by stringField', []);
testErrorsAndWarnings('from a_index | stats by ', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | stats numberField ', [
'Expected an aggregate function or group but got [numberField] of type [FieldAttribute]',
]);
testErrorsAndWarnings('from a_index | stats numberField=', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | stats numberField=5 by ', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | stats avg(numberField) by wrongField', [
'Unknown column [wrongField]',
@ -1596,12 +1596,12 @@ describe('validation logic', () => {
describe('sort', () => {
testErrorsAndWarnings('from a_index | sort ', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | sort "field" ', []);
testErrorsAndWarnings('from a_index | sort wrongField ', ['Unknown column [wrongField]']);
testErrorsAndWarnings('from a_index | sort numberField, ', [
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
"SyntaxError: mismatched input '<EOF>' expecting {QUOTED_STRING, INTEGER_LITERAL, DECIMAL_LITERAL, 'false', '(', 'not', 'null', '?', 'true', '+', '-', NAMED_OR_POSITIONAL_PARAM, OPENING_BRACKET, UNQUOTED_IDENTIFIER, QUOTED_IDENTIFIER}",
]);
testErrorsAndWarnings('from a_index | sort numberField, stringField', []);
for (const dir of ['desc', 'asc']) {