feat: use SLL mode (#269)
* feat: use SLL(*) PredictionMode for better performance * feat: optimize mysql grammar to fit SLL mode * feat: optimize postgre grammmar to fit SLL mode * feat: optimize spark grammar to fit SLL mode * test: correct unit tests * feat: optimize pgsql grammar
This commit is contained in:
parent
a05f099aa1
commit
3f62ad0d32
@ -902,18 +902,27 @@ replaceStatement
|
|||||||
)? (('(' columnNames ')')? replaceStatementValuesOrSelectOrTable | setAssignmentList)
|
)? (('(' columnNames ')')? replaceStatementValuesOrSelectOrTable | setAssignmentList)
|
||||||
;
|
;
|
||||||
|
|
||||||
// into clause within a given statement can appear only once
|
// selectStatement
|
||||||
|
// : querySpecification lockClause? # simpleSelect
|
||||||
|
// | querySpecificationNointo lockClause? intoClause? # simpleSelect
|
||||||
|
// | queryExpression lockClause? # parenthesisSelect
|
||||||
|
// | querySpecificationNointo unionStatement+ (
|
||||||
|
// KW_UNION unionType=(KW_ALL | KW_DISTINCT)? (querySpecification | queryExpression)
|
||||||
|
// )? orderByClause? limitClause? lockClause? # unionSelect
|
||||||
|
// | queryExpressionNointo unionParenthesis+ (
|
||||||
|
// KW_UNION unionType=(KW_ALL | KW_DISTINCT)? queryExpression
|
||||||
|
// )? orderByClause? limitClause? lockClause? # unionParenthesisSelect
|
||||||
|
// | querySpecificationNointo (',' lateralStatement)+ # withLateralStatement
|
||||||
|
// ;
|
||||||
|
|
||||||
|
// TODO: Simplify the rules to fit SLL(*) Mode
|
||||||
selectStatement
|
selectStatement
|
||||||
: querySpecification lockClause? # simpleSelect
|
: querySpecification unionStatement* (
|
||||||
| querySpecificationNointo lockClause? intoClause? # simpleSelect
|
|
||||||
| queryExpression lockClause? # parenthesisSelect
|
|
||||||
| querySpecificationNointo unionStatement+ (
|
|
||||||
KW_UNION unionType=(KW_ALL | KW_DISTINCT)? (querySpecification | queryExpression)
|
KW_UNION unionType=(KW_ALL | KW_DISTINCT)? (querySpecification | queryExpression)
|
||||||
)? orderByClause? limitClause? lockClause? # unionSelect
|
)? (',' lateralStatement)* orderByClause? limitClause? lockClause? intoClause? # unionAndLateralSelect
|
||||||
| queryExpressionNointo unionParenthesis+ (
|
| queryExpression unionStatement* (
|
||||||
KW_UNION unionType=(KW_ALL | KW_DISTINCT)? queryExpression
|
KW_UNION unionType=(KW_ALL | KW_DISTINCT)? queryExpression
|
||||||
)? orderByClause? limitClause? lockClause? # unionParenthesisSelect
|
)? orderByClause? limitClause? lockClause? # selectExpression
|
||||||
| querySpecificationNointo (',' lateralStatement)+ # withLateralStatement
|
|
||||||
;
|
;
|
||||||
|
|
||||||
// https://dev.mysql.com/doc/refman/8.0/en/set-operations.html
|
// https://dev.mysql.com/doc/refman/8.0/en/set-operations.html
|
||||||
@ -1106,34 +1115,24 @@ queryExpression
|
|||||||
| '(' queryExpression ')'
|
| '(' queryExpression ')'
|
||||||
;
|
;
|
||||||
|
|
||||||
queryExpressionNointo
|
/**
|
||||||
: '(' querySpecificationNointo ')'
|
* TODO: intoClause is allowed to appear multiple times,
|
||||||
| '(' queryExpressionNointo ')'
|
* which is inconsistent with the actual syntax,
|
||||||
;
|
* but is currently unsolvable because the correct syntax cannot be handled by SLL(*) Mode
|
||||||
|
*/
|
||||||
// into clause within a given statement can appear only once
|
|
||||||
querySpecification
|
querySpecification
|
||||||
: KW_SELECT selectSpec* selectElements intoClause? fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause?
|
: KW_SELECT selectSpec* selectElements intoClause? fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause? intoClause?
|
||||||
| KW_SELECT selectSpec* selectElements fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause? intoClause?
|
|
||||||
;
|
|
||||||
|
|
||||||
querySpecificationNointo
|
|
||||||
: KW_SELECT selectSpec* selectElements fromClause groupByClause? havingClause? windowClause? orderByClause? limitClause?
|
|
||||||
;
|
|
||||||
|
|
||||||
unionParenthesis
|
|
||||||
: KW_UNION unionType=(KW_ALL | KW_DISTINCT)? queryExpressionNointo
|
|
||||||
;
|
;
|
||||||
|
|
||||||
unionStatement
|
unionStatement
|
||||||
: KW_UNION unionType=(KW_ALL | KW_DISTINCT)? (querySpecificationNointo | queryExpressionNointo)
|
: KW_UNION unionType=(KW_ALL | KW_DISTINCT)? (querySpecification | queryExpression)
|
||||||
;
|
;
|
||||||
|
|
||||||
lateralStatement
|
lateralStatement
|
||||||
: KW_LATERAL (
|
: KW_LATERAL (
|
||||||
querySpecificationNointo
|
querySpecification
|
||||||
| queryExpressionNointo
|
| queryExpression
|
||||||
| ('(' (querySpecificationNointo | queryExpressionNointo) ')' (KW_AS? alias=uid)?)
|
| ('(' (querySpecification | queryExpression) ')' (KW_AS? alias=uid)?)
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1187,10 +1186,10 @@ selectElements
|
|||||||
;
|
;
|
||||||
|
|
||||||
selectElement
|
selectElement
|
||||||
: select_element=fullId '.' '*' # selectStarElement
|
: (LOCAL_ID VAR_ASSIGN)? expression (KW_AS? alias=uid)? # selectExpressionElement
|
||||||
| columnName (KW_AS? alias=uid)? # selectColumnElement
|
|
||||||
| functionCall (KW_AS? alias=uid)? # selectFunctionElement
|
| functionCall (KW_AS? alias=uid)? # selectFunctionElement
|
||||||
| (LOCAL_ID VAR_ASSIGN)? expression (KW_AS? alias=uid)? # selectExpressionElement
|
| select_element=fullId '.' '*' # selectStarElement
|
||||||
|
| columnName (KW_AS? alias=uid)? # selectColumnElement
|
||||||
;
|
;
|
||||||
|
|
||||||
intoClause
|
intoClause
|
||||||
@ -1767,13 +1766,14 @@ userSpecification
|
|||||||
;
|
;
|
||||||
|
|
||||||
alterUserAuthOption
|
alterUserAuthOption
|
||||||
: userName KW_IDENTIFIED KW_BY STRING_LITERAL authOptionClause
|
: userName (
|
||||||
| userName KW_IDENTIFIED KW_BY KW_RANDOM KW_PASSWORD authOptionClause
|
KW_IDENTIFIED KW_BY STRING_LITERAL authOptionClause
|
||||||
| userName KW_IDENTIFIED KW_WITH authenticationRule
|
| KW_IDENTIFIED KW_BY KW_RANDOM KW_PASSWORD authOptionClause
|
||||||
| userName KW_DISCARD KW_OLD KW_PASSWORD
|
| KW_IDENTIFIED KW_WITH authenticationRule
|
||||||
| userName ((KW_ADD | KW_MODIFY | KW_DROP) factor factorAuthOption?)+
|
| KW_DISCARD KW_OLD KW_PASSWORD
|
||||||
| userName registrationOption?
|
| ((KW_ADD | KW_MODIFY | KW_DROP) factor factorAuthOption?)+
|
||||||
| userName
|
| registrationOption
|
||||||
|
)?
|
||||||
;
|
;
|
||||||
|
|
||||||
// createUser auth_option, 2fa_auth_option, 3fa_auth_option
|
// createUser auth_option, 2fa_auth_option, 3fa_auth_option
|
||||||
|
@ -325,13 +325,11 @@ set_rest
|
|||||||
;
|
;
|
||||||
|
|
||||||
generic_set
|
generic_set
|
||||||
: (var_name | KW_ALL) (KW_TO | EQUAL)? (var_list | KW_DEFAULT)?
|
: (KW_ALL | var_name) (KW_TO | EQUAL)? (KW_DEFAULT | var_list)?
|
||||||
;
|
;
|
||||||
|
|
||||||
set_rest_more
|
set_rest_more
|
||||||
: generic_set
|
: KW_TIME KW_ZONE zone_value
|
||||||
| var_name KW_FROM KW_CURRENT
|
|
||||||
| KW_TIME KW_ZONE zone_value
|
|
||||||
| KW_CATALOG sconst
|
| KW_CATALOG sconst
|
||||||
| KW_SCHEMA schema_name
|
| KW_SCHEMA schema_name
|
||||||
| KW_NAMES opt_encoding?
|
| KW_NAMES opt_encoding?
|
||||||
@ -339,6 +337,8 @@ set_rest_more
|
|||||||
| KW_SESSION KW_AUTHORIZATION nonreservedword_or_sconst
|
| KW_SESSION KW_AUTHORIZATION nonreservedword_or_sconst
|
||||||
| KW_XML KW_OPTION document_or_content
|
| KW_XML KW_OPTION document_or_content
|
||||||
| KW_TRANSACTION KW_SNAPSHOT sconst
|
| KW_TRANSACTION KW_SNAPSHOT sconst
|
||||||
|
| var_name KW_FROM KW_CURRENT
|
||||||
|
| generic_set
|
||||||
;
|
;
|
||||||
|
|
||||||
var_name
|
var_name
|
||||||
@ -404,15 +404,15 @@ variableresetstmt
|
|||||||
;
|
;
|
||||||
|
|
||||||
reset_rest
|
reset_rest
|
||||||
: generic_reset
|
: KW_TIME KW_ZONE
|
||||||
| KW_TIME KW_ZONE
|
|
||||||
| KW_TRANSACTION KW_ISOLATION KW_LEVEL
|
| KW_TRANSACTION KW_ISOLATION KW_LEVEL
|
||||||
| KW_SESSION KW_AUTHORIZATION
|
| KW_SESSION KW_AUTHORIZATION
|
||||||
|
| generic_reset
|
||||||
;
|
;
|
||||||
|
|
||||||
generic_reset
|
generic_reset
|
||||||
: var_name
|
: KW_ALL
|
||||||
| KW_ALL
|
| var_name
|
||||||
;
|
;
|
||||||
|
|
||||||
setresetclause
|
setresetclause
|
||||||
@ -513,45 +513,19 @@ index_partition_cmd
|
|||||||
;
|
;
|
||||||
|
|
||||||
alter_table_cmd
|
alter_table_cmd
|
||||||
: KW_ADD opt_column? opt_if_not_exists? columnDefCluase
|
: KW_ADD (KW_CONSTRAINT name)? constraintelem
|
||||||
| KW_ALTER opt_column? column_name alter_column_default
|
|
||||||
| KW_ALTER opt_column? column_name KW_DROP KW_NOT KW_NULL
|
|
||||||
| KW_ALTER opt_column? column_name KW_SET KW_NOT KW_NULL
|
|
||||||
| KW_ALTER opt_column? column_name KW_DROP KW_EXPRESSION opt_if_exists?
|
|
||||||
| KW_ALTER opt_column? column_name KW_SET KW_STATISTICS signediconst
|
|
||||||
| KW_ALTER opt_column? column_name KW_SET KW_STATISTICS signediconst
|
|
||||||
| KW_ALTER opt_column? column_name KW_SET reloptions
|
|
||||||
| KW_ALTER opt_column? column_name KW_RESET reloptions
|
|
||||||
| KW_ALTER opt_column? column_name KW_SET KW_STORAGE colid
|
|
||||||
| KW_ALTER opt_column? column_name KW_ADD KW_GENERATED generated_when KW_AS KW_IDENTITY optparenthesizedseqoptlist?
|
|
||||||
| KW_ALTER opt_column? column_name alter_identity_column_option_list
|
|
||||||
| KW_ALTER opt_column? column_name KW_DROP KW_IDENTITY opt_if_exists?
|
|
||||||
| KW_DROP opt_column? opt_if_exists? column_name opt_drop_behavior?
|
|
||||||
| KW_ALTER opt_column? column_name opt_set_data? KW_TYPE typename opt_collate_clause? alter_using?
|
|
||||||
| KW_ALTER opt_column? column_name alter_generic_options
|
|
||||||
| KW_ADD tableconstraint
|
|
||||||
| KW_ALTER KW_CONSTRAINT name constraintattributespec
|
| KW_ALTER KW_CONSTRAINT name constraintattributespec
|
||||||
| KW_VALIDATE KW_CONSTRAINT name
|
| KW_VALIDATE KW_CONSTRAINT name
|
||||||
| KW_DROP KW_CONSTRAINT opt_if_exists? name opt_drop_behavior?
|
| KW_DROP KW_CONSTRAINT opt_if_exists? name opt_drop_behavior?
|
||||||
| KW_SET KW_WITHOUT KW_OIDS
|
| KW_SET KW_WITHOUT KW_OIDS
|
||||||
| KW_CLUSTER KW_ON name
|
| KW_CLUSTER KW_ON name
|
||||||
| KW_SET KW_WITHOUT KW_CLUSTER
|
| KW_SET KW_WITHOUT KW_CLUSTER
|
||||||
| KW_SET KW_LOGGED
|
| KW_SET (KW_LOGGED | KW_UNLOGGED)
|
||||||
| KW_SET KW_UNLOGGED
|
| KW_ENABLE (KW_REPLICA | KW_ALWAYS)? KW_TRIGGER
|
||||||
| KW_ENABLE KW_TRIGGER name
|
| KW_DISABLE KW_TRIGGER (KW_ALL | KW_USER | name)
|
||||||
| KW_ENABLE KW_ALWAYS KW_TRIGGER name
|
| KW_ENABLE (KW_ALWAYS | KW_REPLICA) KW_RULE name
|
||||||
| KW_ENABLE KW_REPLICA KW_TRIGGER name
|
|
||||||
| KW_ENABLE KW_TRIGGER KW_ALL
|
|
||||||
| KW_ENABLE KW_TRIGGER KW_USER
|
|
||||||
| KW_DISABLE KW_TRIGGER name
|
|
||||||
| KW_DISABLE KW_TRIGGER KW_ALL
|
|
||||||
| KW_DISABLE KW_TRIGGER KW_USER
|
|
||||||
| KW_ENABLE KW_RULE name
|
|
||||||
| KW_ENABLE KW_ALWAYS KW_RULE name
|
|
||||||
| KW_ENABLE KW_REPLICA KW_RULE name
|
|
||||||
| KW_DISABLE KW_RULE name
|
| KW_DISABLE KW_RULE name
|
||||||
| KW_INHERIT qualified_name
|
| KW_NO? KW_INHERIT qualified_name
|
||||||
| KW_NO KW_INHERIT qualified_name
|
|
||||||
| KW_OF any_name
|
| KW_OF any_name
|
||||||
| KW_NOT KW_OF
|
| KW_NOT KW_OF
|
||||||
| KW_OWNER KW_TO rolespec
|
| KW_OWNER KW_TO rolespec
|
||||||
@ -563,6 +537,19 @@ alter_table_cmd
|
|||||||
| KW_DISABLE KW_ROW KW_LEVEL KW_SECURITY
|
| KW_DISABLE KW_ROW KW_LEVEL KW_SECURITY
|
||||||
| KW_FORCE KW_ROW KW_LEVEL KW_SECURITY
|
| KW_FORCE KW_ROW KW_LEVEL KW_SECURITY
|
||||||
| KW_NO KW_FORCE KW_ROW KW_LEVEL KW_SECURITY
|
| KW_NO KW_FORCE KW_ROW KW_LEVEL KW_SECURITY
|
||||||
|
| KW_DROP KW_COLUMN? opt_if_exists? column_name opt_drop_behavior?
|
||||||
|
| KW_ADD KW_COLUMN? opt_if_not_exists? columnDefCluase
|
||||||
|
| KW_ALTER KW_COLUMN? column_name alter_column_default
|
||||||
|
| KW_ALTER KW_COLUMN? column_name (KW_DROP | KW_SET) KW_NOT KW_NULL
|
||||||
|
| KW_ALTER KW_COLUMN? column_name KW_DROP KW_EXPRESSION opt_if_exists?
|
||||||
|
| KW_ALTER KW_COLUMN? column_name KW_SET KW_STATISTICS signediconst
|
||||||
|
| KW_ALTER KW_COLUMN? column_name (KW_SET | KW_RESET) reloptions
|
||||||
|
| KW_ALTER KW_COLUMN? column_name KW_SET KW_STORAGE colid
|
||||||
|
| KW_ALTER KW_COLUMN? column_name KW_ADD KW_GENERATED generated_when KW_AS KW_IDENTITY optparenthesizedseqoptlist?
|
||||||
|
| KW_ALTER KW_COLUMN? column_name alter_identity_column_option_list
|
||||||
|
| KW_ALTER KW_COLUMN? column_name KW_DROP KW_IDENTITY opt_if_exists?
|
||||||
|
| KW_ALTER KW_COLUMN? column_name opt_set_data? KW_TYPE typename opt_collate_clause? alter_using?
|
||||||
|
| KW_ALTER KW_COLUMN? column_name alter_generic_options
|
||||||
| alter_generic_options
|
| alter_generic_options
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1058,7 +1045,7 @@ seqoptelem
|
|||||||
| KW_MAXVALUE numericonly
|
| KW_MAXVALUE numericonly
|
||||||
| KW_MINVALUE numericonly
|
| KW_MINVALUE numericonly
|
||||||
| KW_NO (KW_MAXVALUE | KW_MINVALUE | KW_CYCLE)
|
| KW_NO (KW_MAXVALUE | KW_MINVALUE | KW_CYCLE)
|
||||||
| KW_OWNED KW_BY table_column_name
|
| KW_OWNED KW_BY column_name
|
||||||
| KW_SEQUENCE KW_NAME any_name
|
| KW_SEQUENCE KW_NAME any_name
|
||||||
| KW_START opt_with? numericonly
|
| KW_START opt_with? numericonly
|
||||||
| KW_RESTART opt_with? numericonly?
|
| KW_RESTART opt_with? numericonly?
|
||||||
@ -1478,9 +1465,7 @@ altereventtrigstmt
|
|||||||
;
|
;
|
||||||
|
|
||||||
enable_trigger
|
enable_trigger
|
||||||
: KW_ENABLE
|
: KW_ENABLE (KW_REPLICA | KW_ALWAYS)?
|
||||||
| KW_ENABLE KW_REPLICA
|
|
||||||
| KW_ENABLE KW_ALWAYS
|
|
||||||
| KW_DISABLE
|
| KW_DISABLE
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1547,9 +1532,9 @@ enum_val_list
|
|||||||
;
|
;
|
||||||
|
|
||||||
alterenumstmt
|
alterenumstmt
|
||||||
: KW_ALTER KW_TYPE any_name KW_ADD KW_VALUE opt_if_not_exists? sconst
|
: KW_ALTER KW_TYPE any_name KW_ADD KW_VALUE opt_if_not_exists? sconst (
|
||||||
| KW_ALTER KW_TYPE any_name KW_ADD KW_VALUE opt_if_not_exists? sconst KW_BEFORE sconst
|
(KW_BEFORE | KW_AFTER) sconst
|
||||||
| KW_ALTER KW_TYPE any_name KW_ADD KW_VALUE opt_if_not_exists? sconst KW_AFTER sconst
|
)?
|
||||||
| KW_ALTER KW_TYPE any_name KW_RENAME KW_VALUE sconst KW_TO sconst
|
| KW_ALTER KW_TYPE any_name KW_RENAME KW_VALUE sconst KW_TO sconst
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -1660,19 +1645,14 @@ view_nameList
|
|||||||
;
|
;
|
||||||
|
|
||||||
object_type_any_name
|
object_type_any_name
|
||||||
: KW_TABLE table_name
|
: KW_FOREIGN? KW_TABLE table_name
|
||||||
| KW_SEQUENCE any_name
|
| KW_MATERIALIZED? KW_VIEW view_name
|
||||||
| KW_VIEW view_name
|
|
||||||
| KW_MATERIALIZED KW_VIEW view_name
|
|
||||||
| KW_INDEX any_name
|
| KW_INDEX any_name
|
||||||
| KW_FOREIGN KW_TABLE table_name
|
|
||||||
| KW_COLLATION any_name
|
| KW_COLLATION any_name
|
||||||
| KW_CONVERSION any_name
|
| KW_CONVERSION any_name
|
||||||
| KW_STATISTICS any_name
|
| KW_STATISTICS any_name
|
||||||
| KW_TEXT KW_SEARCH KW_PARSER any_name
|
| KW_SEQUENCE any_name
|
||||||
| KW_TEXT KW_SEARCH KW_DICTIONARY any_name
|
| KW_TEXT KW_SEARCH (KW_PARSER | KW_DICTIONARY | KW_TEMPLATE | KW_CONFIGURATION) any_name
|
||||||
| KW_TEXT KW_SEARCH KW_TEMPLATE any_name
|
|
||||||
| KW_TEXT KW_SEARCH KW_CONFIGURATION any_name
|
|
||||||
;
|
;
|
||||||
|
|
||||||
object_type_name
|
object_type_name
|
||||||
@ -1700,10 +1680,6 @@ any_name_list
|
|||||||
: any_name (COMMA any_name)*
|
: any_name (COMMA any_name)*
|
||||||
;
|
;
|
||||||
|
|
||||||
table_column_name
|
|
||||||
: table_name DOT column_name
|
|
||||||
;
|
|
||||||
|
|
||||||
relation_column_name
|
relation_column_name
|
||||||
: relation_name DOT column_name
|
: relation_name DOT column_name
|
||||||
;
|
;
|
||||||
@ -1725,12 +1701,13 @@ type_name_list
|
|||||||
;
|
;
|
||||||
|
|
||||||
truncatestmt
|
truncatestmt
|
||||||
: KW_TRUNCATE opt_table? relation_expr_list opt_restart_seqs? opt_drop_behavior?
|
: KW_TRUNCATE KW_TABLE? truncate_table (COMMA truncate_table)* (
|
||||||
|
(KW_CONTINUE | KW_RESTART) KW_IDENTITY
|
||||||
|
)? opt_drop_behavior?
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_restart_seqs
|
truncate_table
|
||||||
: KW_CONTINUE KW_IDENTITY
|
: KW_ONLY? table_name STAR?
|
||||||
| KW_RESTART KW_IDENTITY
|
|
||||||
;
|
;
|
||||||
|
|
||||||
commentstmt
|
commentstmt
|
||||||
@ -1762,9 +1739,7 @@ comment_text
|
|||||||
;
|
;
|
||||||
|
|
||||||
seclabelstmt
|
seclabelstmt
|
||||||
: KW_SECURITY KW_LABEL opt_provider? KW_ON object_type_any_name KW_IS security_label
|
: KW_SECURITY KW_LABEL opt_provider? KW_ON KW_COLUMN column_name KW_IS security_label
|
||||||
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_COLUMN table_column_name KW_IS security_label
|
|
||||||
| KW_SECURITY KW_LABEL opt_provider? KW_ON object_type_name KW_IS security_label
|
|
||||||
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_TYPE typename KW_IS security_label
|
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_TYPE typename KW_IS security_label
|
||||||
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_DOMAIN typename KW_IS security_label
|
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_DOMAIN typename KW_IS security_label
|
||||||
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_AGGREGATE aggregate_with_argtypes KW_IS security_label
|
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_AGGREGATE aggregate_with_argtypes KW_IS security_label
|
||||||
@ -1772,6 +1747,8 @@ seclabelstmt
|
|||||||
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_LARGE KW_OBJECT numericonly KW_IS security_label
|
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_LARGE KW_OBJECT numericonly KW_IS security_label
|
||||||
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_PROCEDURE procedure_with_argtypes KW_IS security_label
|
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_PROCEDURE procedure_with_argtypes KW_IS security_label
|
||||||
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_ROUTINE routine_with_argtypes KW_IS security_label
|
| KW_SECURITY KW_LABEL opt_provider? KW_ON KW_ROUTINE routine_with_argtypes KW_IS security_label
|
||||||
|
| KW_SECURITY KW_LABEL opt_provider? KW_ON object_type_any_name KW_IS security_label
|
||||||
|
| KW_SECURITY KW_LABEL opt_provider? KW_ON object_type_name KW_IS security_label
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_provider
|
opt_provider
|
||||||
@ -2335,11 +2312,11 @@ renamestmt
|
|||||||
| KW_ALTER KW_MATERIALIZED KW_VIEW opt_if_exists? view_name KW_RENAME KW_TO view_name_create
|
| KW_ALTER KW_MATERIALIZED KW_VIEW opt_if_exists? view_name KW_RENAME KW_TO view_name_create
|
||||||
| KW_ALTER KW_INDEX opt_if_exists? qualified_name KW_RENAME KW_TO name
|
| KW_ALTER KW_INDEX opt_if_exists? qualified_name KW_RENAME KW_TO name
|
||||||
| KW_ALTER KW_FOREIGN KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_TO table_name_create
|
| KW_ALTER KW_FOREIGN KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_TO table_name_create
|
||||||
| KW_ALTER KW_TABLE opt_if_exists? relation_expr KW_RENAME opt_column? column_name KW_TO column_name_create
|
| KW_ALTER KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_COLUMN? column_name KW_TO column_name_create
|
||||||
| KW_ALTER KW_VIEW opt_if_exists? view_name KW_RENAME opt_column? column_name KW_TO column_name_create
|
| KW_ALTER KW_VIEW opt_if_exists? view_name KW_RENAME KW_COLUMN? column_name KW_TO column_name_create
|
||||||
| KW_ALTER KW_MATERIALIZED KW_VIEW opt_if_exists? view_name KW_RENAME opt_column? column_name KW_TO column_name_create
|
| KW_ALTER KW_MATERIALIZED KW_VIEW opt_if_exists? view_name KW_RENAME KW_COLUMN? column_name KW_TO column_name_create
|
||||||
| KW_ALTER KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_CONSTRAINT name KW_TO name
|
| KW_ALTER KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_CONSTRAINT name KW_TO name
|
||||||
| KW_ALTER KW_FOREIGN KW_TABLE opt_if_exists? relation_expr KW_RENAME opt_column? column_name KW_TO column_name_create
|
| KW_ALTER KW_FOREIGN KW_TABLE opt_if_exists? relation_expr KW_RENAME KW_COLUMN? column_name KW_TO column_name_create
|
||||||
| KW_ALTER KW_RULE name KW_ON qualified_name KW_RENAME KW_TO name
|
| KW_ALTER KW_RULE name KW_ON qualified_name KW_RENAME KW_TO name
|
||||||
| KW_ALTER KW_TRIGGER name KW_ON qualified_name KW_RENAME KW_TO name
|
| KW_ALTER KW_TRIGGER name KW_ON qualified_name KW_RENAME KW_TO name
|
||||||
| KW_ALTER KW_EVENT KW_TRIGGER name KW_RENAME KW_TO name
|
| KW_ALTER KW_EVENT KW_TRIGGER name KW_RENAME KW_TO name
|
||||||
@ -2355,10 +2332,6 @@ renamestmt
|
|||||||
| KW_ALTER KW_TYPE any_name KW_RENAME KW_ATTRIBUTE name KW_TO name opt_drop_behavior?
|
| KW_ALTER KW_TYPE any_name KW_RENAME KW_ATTRIBUTE name KW_TO name opt_drop_behavior?
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_column
|
|
||||||
: KW_COLUMN
|
|
||||||
;
|
|
||||||
|
|
||||||
opt_set_data
|
opt_set_data
|
||||||
: KW_SET KW_DATA
|
: KW_SET KW_DATA
|
||||||
;
|
;
|
||||||
@ -2560,17 +2533,15 @@ transactionstmt
|
|||||||
: KW_ABORT opt_transaction? opt_transaction_chain?
|
: KW_ABORT opt_transaction? opt_transaction_chain?
|
||||||
| KW_BEGIN opt_transaction? transaction_mode_list_or_empty?
|
| KW_BEGIN opt_transaction? transaction_mode_list_or_empty?
|
||||||
| KW_START KW_TRANSACTION transaction_mode_list_or_empty?
|
| KW_START KW_TRANSACTION transaction_mode_list_or_empty?
|
||||||
| KW_COMMIT opt_transaction? opt_transaction_chain?
|
|
||||||
| KW_END opt_transaction? opt_transaction_chain?
|
| KW_END opt_transaction? opt_transaction_chain?
|
||||||
| KW_ROLLBACK opt_transaction? opt_transaction_chain?
|
|
||||||
| KW_SAVEPOINT colid
|
| KW_SAVEPOINT colid
|
||||||
| KW_RELEASE KW_SAVEPOINT colid
|
| KW_RELEASE KW_SAVEPOINT? colid
|
||||||
| KW_RELEASE colid
|
|
||||||
| KW_ROLLBACK opt_transaction? KW_TO KW_SAVEPOINT colid
|
|
||||||
| KW_ROLLBACK opt_transaction? KW_TO colid
|
|
||||||
| KW_PREPARE KW_TRANSACTION sconst
|
| KW_PREPARE KW_TRANSACTION sconst
|
||||||
| KW_COMMIT KW_PREPARED sconst
|
| KW_COMMIT KW_PREPARED sconst
|
||||||
|
| KW_COMMIT opt_transaction? opt_transaction_chain?
|
||||||
| KW_ROLLBACK KW_PREPARED sconst
|
| KW_ROLLBACK KW_PREPARED sconst
|
||||||
|
| KW_ROLLBACK opt_transaction? KW_TO KW_SAVEPOINT? colid
|
||||||
|
| KW_ROLLBACK opt_transaction? opt_transaction_chain?
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_transaction
|
opt_transaction
|
||||||
@ -2630,13 +2601,13 @@ createdb_opt_item
|
|||||||
;
|
;
|
||||||
|
|
||||||
createdb_opt_name
|
createdb_opt_name
|
||||||
: identifier
|
: KW_CONNECTION KW_LIMIT
|
||||||
| KW_CONNECTION KW_LIMIT
|
|
||||||
| KW_ENCODING
|
| KW_ENCODING
|
||||||
| KW_LOCATION
|
| KW_LOCATION
|
||||||
| KW_OWNER
|
| KW_OWNER
|
||||||
| KW_TABLESPACE
|
| KW_TABLESPACE
|
||||||
| KW_TEMPLATE
|
| KW_TEMPLATE
|
||||||
|
| identifier
|
||||||
;
|
;
|
||||||
|
|
||||||
opt_equal
|
opt_equal
|
||||||
@ -2645,9 +2616,8 @@ opt_equal
|
|||||||
|
|
||||||
alterdatabasestmt
|
alterdatabasestmt
|
||||||
: KW_ALTER KW_DATABASE database_name (
|
: KW_ALTER KW_DATABASE database_name (
|
||||||
(KW_WITH? createdb_opt_list)?
|
(KW_SET KW_TABLESPACE tablespace_name_create)?
|
||||||
| createdb_opt_list?
|
| (KW_WITH? createdb_opt_list)?
|
||||||
| (KW_SET KW_TABLESPACE tablespace_name_create)?
|
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -2869,10 +2839,7 @@ execute_param_clause
|
|||||||
;
|
;
|
||||||
|
|
||||||
deallocatestmt
|
deallocatestmt
|
||||||
: KW_DEALLOCATE name
|
: KW_DEALLOCATE KW_PREPARE? (name | KW_ALL)
|
||||||
| KW_DEALLOCATE KW_PREPARE name
|
|
||||||
| KW_DEALLOCATE KW_ALL
|
|
||||||
| KW_DEALLOCATE KW_PREPARE KW_ALL
|
|
||||||
;
|
;
|
||||||
|
|
||||||
insertstmt
|
insertstmt
|
||||||
@ -3150,7 +3117,7 @@ fetch_clause
|
|||||||
;
|
;
|
||||||
|
|
||||||
offset_clause
|
offset_clause
|
||||||
: KW_OFFSET (select_offset_value | select_fetch_first_value row_or_rows)
|
: KW_OFFSET (select_fetch_first_value row_or_rows | select_offset_value)
|
||||||
;
|
;
|
||||||
|
|
||||||
select_limit_value
|
select_limit_value
|
||||||
@ -3163,9 +3130,9 @@ select_offset_value
|
|||||||
;
|
;
|
||||||
|
|
||||||
select_fetch_first_value
|
select_fetch_first_value
|
||||||
: c_expr
|
: PLUS i_or_f_const
|
||||||
| PLUS i_or_f_const
|
|
||||||
| MINUS i_or_f_const
|
| MINUS i_or_f_const
|
||||||
|
| c_expr
|
||||||
;
|
;
|
||||||
|
|
||||||
i_or_f_const
|
i_or_f_const
|
||||||
@ -3303,13 +3270,13 @@ join_qual
|
|||||||
;
|
;
|
||||||
|
|
||||||
relation_expr
|
relation_expr
|
||||||
: KW_ONLY? table_name STAR? columnlist? where_clause?
|
: KW_ONLY? table_name STAR?
|
||||||
| KW_ONLY ( table_name | OPEN_PAREN table_name CLOSE_PAREN)
|
| KW_ONLY ( table_name | OPEN_PAREN table_name CLOSE_PAREN)
|
||||||
| KW_IN KW_SCHEMA (schema_name | KW_CURRENT_SCHEMA)
|
| KW_IN KW_SCHEMA (schema_name | KW_CURRENT_SCHEMA)
|
||||||
;
|
;
|
||||||
|
|
||||||
view_relation_expr
|
view_relation_expr
|
||||||
: KW_ONLY? view_name STAR? columnlist? where_clause?
|
: KW_ONLY? view_name STAR?
|
||||||
;
|
;
|
||||||
|
|
||||||
publication_relation_expr
|
publication_relation_expr
|
||||||
@ -3737,7 +3704,6 @@ c_expr
|
|||||||
| PARAM opt_indirection # c_expr_expr
|
| PARAM opt_indirection # c_expr_expr
|
||||||
| KW_GROUPING OPEN_PAREN expr_list CLOSE_PAREN # c_expr_expr
|
| KW_GROUPING OPEN_PAREN expr_list CLOSE_PAREN # c_expr_expr
|
||||||
| /*22*/ KW_UNIQUE select_with_parens # c_expr_expr
|
| /*22*/ KW_UNIQUE select_with_parens # c_expr_expr
|
||||||
| columnref # c_expr_expr
|
|
||||||
| aexprconst # c_expr_expr
|
| aexprconst # c_expr_expr
|
||||||
| plsqlvariablename # c_expr_expr
|
| plsqlvariablename # c_expr_expr
|
||||||
| OPEN_PAREN a_expr_in_parens= a_expr CLOSE_PAREN opt_indirection # c_expr_expr
|
| OPEN_PAREN a_expr_in_parens= a_expr CLOSE_PAREN opt_indirection # c_expr_expr
|
||||||
@ -3747,6 +3713,7 @@ c_expr
|
|||||||
| explicit_row # c_expr_expr
|
| explicit_row # c_expr_expr
|
||||||
| implicit_row # c_expr_expr
|
| implicit_row # c_expr_expr
|
||||||
| row KW_OVERLAPS row /* 14*/ # c_expr_expr
|
| row KW_OVERLAPS row /* 14*/ # c_expr_expr
|
||||||
|
| columnref # c_expr_expr
|
||||||
;
|
;
|
||||||
|
|
||||||
plsqlvariablename
|
plsqlvariablename
|
||||||
@ -3921,7 +3888,7 @@ explicit_row
|
|||||||
;
|
;
|
||||||
|
|
||||||
implicit_row
|
implicit_row
|
||||||
: OPEN_PAREN expr_list COMMA a_expr CLOSE_PAREN
|
: OPEN_PAREN a_expr COMMA expr_list CLOSE_PAREN
|
||||||
;
|
;
|
||||||
|
|
||||||
sub_type
|
sub_type
|
||||||
@ -4203,7 +4170,7 @@ procedure_name_create
|
|||||||
;
|
;
|
||||||
|
|
||||||
column_name
|
column_name
|
||||||
: colid
|
: colid indirection_el*
|
||||||
;
|
;
|
||||||
|
|
||||||
column_name_create
|
column_name_create
|
||||||
@ -5509,7 +5476,6 @@ plsql_unreserved_keyword
|
|||||||
| KW_CHAIN
|
| KW_CHAIN
|
||||||
| KW_CLOSE
|
| KW_CLOSE
|
||||||
| KW_COLLATE
|
| KW_COLLATE
|
||||||
| KW_COLUMN
|
|
||||||
//| COLUMN_NAME
|
//| COLUMN_NAME
|
||||||
| KW_COMMIT
|
| KW_COMMIT
|
||||||
| KW_CONSTANT
|
| KW_CONSTANT
|
||||||
|
@ -716,8 +716,8 @@ setQuantifier
|
|||||||
;
|
;
|
||||||
|
|
||||||
relation
|
relation
|
||||||
: KW_LATERAL? relationPrimary relationExtension*
|
: tableName
|
||||||
| tableName
|
| KW_LATERAL? relationPrimary relationExtension*
|
||||||
;
|
;
|
||||||
|
|
||||||
relationExtension
|
relationExtension
|
||||||
@ -1940,7 +1940,6 @@ nonReserved
|
|||||||
| KW_SCHEMAS
|
| KW_SCHEMAS
|
||||||
| KW_SECOND
|
| KW_SECOND
|
||||||
| KW_SECONDS
|
| KW_SECONDS
|
||||||
| KW_SELECT
|
|
||||||
| KW_SEPARATED
|
| KW_SEPARATED
|
||||||
| KW_SERDE
|
| KW_SERDE
|
||||||
| KW_SERDEPROPERTIES
|
| KW_SERDEPROPERTIES
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -219,11 +219,8 @@ import { LoadDataStatementContext } from "./MySqlParser.js";
|
|||||||
import { LoadXmlStatementContext } from "./MySqlParser.js";
|
import { LoadXmlStatementContext } from "./MySqlParser.js";
|
||||||
import { ParenthesizedQueryContext } from "./MySqlParser.js";
|
import { ParenthesizedQueryContext } from "./MySqlParser.js";
|
||||||
import { ReplaceStatementContext } from "./MySqlParser.js";
|
import { ReplaceStatementContext } from "./MySqlParser.js";
|
||||||
import { SimpleSelectContext } from "./MySqlParser.js";
|
import { UnionAndLateralSelectContext } from "./MySqlParser.js";
|
||||||
import { ParenthesisSelectContext } from "./MySqlParser.js";
|
import { SelectExpressionContext } from "./MySqlParser.js";
|
||||||
import { UnionSelectContext } from "./MySqlParser.js";
|
|
||||||
import { UnionParenthesisSelectContext } from "./MySqlParser.js";
|
|
||||||
import { WithLateralStatementContext } from "./MySqlParser.js";
|
|
||||||
import { SetOperationsContext } from "./MySqlParser.js";
|
import { SetOperationsContext } from "./MySqlParser.js";
|
||||||
import { QueryExpressionBodyContext } from "./MySqlParser.js";
|
import { QueryExpressionBodyContext } from "./MySqlParser.js";
|
||||||
import { QueryItemContext } from "./MySqlParser.js";
|
import { QueryItemContext } from "./MySqlParser.js";
|
||||||
@ -265,10 +262,7 @@ import { OuterJoinContext } from "./MySqlParser.js";
|
|||||||
import { NaturalJoinContext } from "./MySqlParser.js";
|
import { NaturalJoinContext } from "./MySqlParser.js";
|
||||||
import { JoinSpecContext } from "./MySqlParser.js";
|
import { JoinSpecContext } from "./MySqlParser.js";
|
||||||
import { QueryExpressionContext } from "./MySqlParser.js";
|
import { QueryExpressionContext } from "./MySqlParser.js";
|
||||||
import { QueryExpressionNointoContext } from "./MySqlParser.js";
|
|
||||||
import { QuerySpecificationContext } from "./MySqlParser.js";
|
import { QuerySpecificationContext } from "./MySqlParser.js";
|
||||||
import { QuerySpecificationNointoContext } from "./MySqlParser.js";
|
|
||||||
import { UnionParenthesisContext } from "./MySqlParser.js";
|
|
||||||
import { UnionStatementContext } from "./MySqlParser.js";
|
import { UnionStatementContext } from "./MySqlParser.js";
|
||||||
import { LateralStatementContext } from "./MySqlParser.js";
|
import { LateralStatementContext } from "./MySqlParser.js";
|
||||||
import { JsonTableContext } from "./MySqlParser.js";
|
import { JsonTableContext } from "./MySqlParser.js";
|
||||||
@ -278,10 +272,10 @@ import { JsonOnEmptyContext } from "./MySqlParser.js";
|
|||||||
import { JsonOnErrorContext } from "./MySqlParser.js";
|
import { JsonOnErrorContext } from "./MySqlParser.js";
|
||||||
import { SelectSpecContext } from "./MySqlParser.js";
|
import { SelectSpecContext } from "./MySqlParser.js";
|
||||||
import { SelectElementsContext } from "./MySqlParser.js";
|
import { SelectElementsContext } from "./MySqlParser.js";
|
||||||
|
import { SelectExpressionElementContext } from "./MySqlParser.js";
|
||||||
|
import { SelectFunctionElementContext } from "./MySqlParser.js";
|
||||||
import { SelectStarElementContext } from "./MySqlParser.js";
|
import { SelectStarElementContext } from "./MySqlParser.js";
|
||||||
import { SelectColumnElementContext } from "./MySqlParser.js";
|
import { SelectColumnElementContext } from "./MySqlParser.js";
|
||||||
import { SelectFunctionElementContext } from "./MySqlParser.js";
|
|
||||||
import { SelectExpressionElementContext } from "./MySqlParser.js";
|
|
||||||
import { SelectIntoVariablesContext } from "./MySqlParser.js";
|
import { SelectIntoVariablesContext } from "./MySqlParser.js";
|
||||||
import { SelectIntoDumpFileContext } from "./MySqlParser.js";
|
import { SelectIntoDumpFileContext } from "./MySqlParser.js";
|
||||||
import { SelectIntoTextFileContext } from "./MySqlParser.js";
|
import { SelectIntoTextFileContext } from "./MySqlParser.js";
|
||||||
@ -3099,65 +3093,29 @@ export class MySqlParserListener implements ParseTreeListener {
|
|||||||
*/
|
*/
|
||||||
exitReplaceStatement?: (ctx: ReplaceStatementContext) => void;
|
exitReplaceStatement?: (ctx: ReplaceStatementContext) => void;
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by the `simpleSelect`
|
* Enter a parse tree produced by the `unionAndLateralSelect`
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
* labeled alternative in `MySqlParser.selectStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
enterSimpleSelect?: (ctx: SimpleSelectContext) => void;
|
enterUnionAndLateralSelect?: (ctx: UnionAndLateralSelectContext) => void;
|
||||||
/**
|
/**
|
||||||
* Exit a parse tree produced by the `simpleSelect`
|
* Exit a parse tree produced by the `unionAndLateralSelect`
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
* labeled alternative in `MySqlParser.selectStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitSimpleSelect?: (ctx: SimpleSelectContext) => void;
|
exitUnionAndLateralSelect?: (ctx: UnionAndLateralSelectContext) => void;
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by the `parenthesisSelect`
|
* Enter a parse tree produced by the `selectExpression`
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
* labeled alternative in `MySqlParser.selectStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
enterParenthesisSelect?: (ctx: ParenthesisSelectContext) => void;
|
enterSelectExpression?: (ctx: SelectExpressionContext) => void;
|
||||||
/**
|
/**
|
||||||
* Exit a parse tree produced by the `parenthesisSelect`
|
* Exit a parse tree produced by the `selectExpression`
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
* labeled alternative in `MySqlParser.selectStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitParenthesisSelect?: (ctx: ParenthesisSelectContext) => void;
|
exitSelectExpression?: (ctx: SelectExpressionContext) => void;
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by the `unionSelect`
|
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterUnionSelect?: (ctx: UnionSelectContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by the `unionSelect`
|
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitUnionSelect?: (ctx: UnionSelectContext) => void;
|
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by the `unionParenthesisSelect`
|
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterUnionParenthesisSelect?: (ctx: UnionParenthesisSelectContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by the `unionParenthesisSelect`
|
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitUnionParenthesisSelect?: (ctx: UnionParenthesisSelectContext) => void;
|
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by the `withLateralStatement`
|
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterWithLateralStatement?: (ctx: WithLateralStatementContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by the `withLateralStatement`
|
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitWithLateralStatement?: (ctx: WithLateralStatementContext) => void;
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by `MySqlParser.setOperations`.
|
* Enter a parse tree produced by `MySqlParser.setOperations`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -3588,16 +3546,6 @@ export class MySqlParserListener implements ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitQueryExpression?: (ctx: QueryExpressionContext) => void;
|
exitQueryExpression?: (ctx: QueryExpressionContext) => void;
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by `MySqlParser.queryExpressionNointo`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterQueryExpressionNointo?: (ctx: QueryExpressionNointoContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by `MySqlParser.queryExpressionNointo`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitQueryExpressionNointo?: (ctx: QueryExpressionNointoContext) => void;
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by `MySqlParser.querySpecification`.
|
* Enter a parse tree produced by `MySqlParser.querySpecification`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -3608,26 +3556,6 @@ export class MySqlParserListener implements ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitQuerySpecification?: (ctx: QuerySpecificationContext) => void;
|
exitQuerySpecification?: (ctx: QuerySpecificationContext) => void;
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by `MySqlParser.querySpecificationNointo`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterQuerySpecificationNointo?: (ctx: QuerySpecificationNointoContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by `MySqlParser.querySpecificationNointo`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitQuerySpecificationNointo?: (ctx: QuerySpecificationNointoContext) => void;
|
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by `MySqlParser.unionParenthesis`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterUnionParenthesis?: (ctx: UnionParenthesisContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by `MySqlParser.unionParenthesis`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitUnionParenthesis?: (ctx: UnionParenthesisContext) => void;
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by `MySqlParser.unionStatement`.
|
* Enter a parse tree produced by `MySqlParser.unionStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -3718,6 +3646,30 @@ export class MySqlParserListener implements ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitSelectElements?: (ctx: SelectElementsContext) => void;
|
exitSelectElements?: (ctx: SelectElementsContext) => void;
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the `selectExpressionElement`
|
||||||
|
* labeled alternative in `MySqlParser.selectElement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
enterSelectExpressionElement?: (ctx: SelectExpressionElementContext) => void;
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the `selectExpressionElement`
|
||||||
|
* labeled alternative in `MySqlParser.selectElement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
exitSelectExpressionElement?: (ctx: SelectExpressionElementContext) => void;
|
||||||
|
/**
|
||||||
|
* Enter a parse tree produced by the `selectFunctionElement`
|
||||||
|
* labeled alternative in `MySqlParser.selectElement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
enterSelectFunctionElement?: (ctx: SelectFunctionElementContext) => void;
|
||||||
|
/**
|
||||||
|
* Exit a parse tree produced by the `selectFunctionElement`
|
||||||
|
* labeled alternative in `MySqlParser.selectElement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
*/
|
||||||
|
exitSelectFunctionElement?: (ctx: SelectFunctionElementContext) => void;
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by the `selectStarElement`
|
* Enter a parse tree produced by the `selectStarElement`
|
||||||
* labeled alternative in `MySqlParser.selectElement`.
|
* labeled alternative in `MySqlParser.selectElement`.
|
||||||
@ -3742,30 +3694,6 @@ export class MySqlParserListener implements ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitSelectColumnElement?: (ctx: SelectColumnElementContext) => void;
|
exitSelectColumnElement?: (ctx: SelectColumnElementContext) => void;
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by the `selectFunctionElement`
|
|
||||||
* labeled alternative in `MySqlParser.selectElement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterSelectFunctionElement?: (ctx: SelectFunctionElementContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by the `selectFunctionElement`
|
|
||||||
* labeled alternative in `MySqlParser.selectElement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitSelectFunctionElement?: (ctx: SelectFunctionElementContext) => void;
|
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by the `selectExpressionElement`
|
|
||||||
* labeled alternative in `MySqlParser.selectElement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterSelectExpressionElement?: (ctx: SelectExpressionElementContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by the `selectExpressionElement`
|
|
||||||
* labeled alternative in `MySqlParser.selectElement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitSelectExpressionElement?: (ctx: SelectExpressionElementContext) => void;
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by the `selectIntoVariables`
|
* Enter a parse tree produced by the `selectIntoVariables`
|
||||||
* labeled alternative in `MySqlParser.intoClause`.
|
* labeled alternative in `MySqlParser.intoClause`.
|
||||||
|
@ -219,11 +219,8 @@ import { LoadDataStatementContext } from "./MySqlParser.js";
|
|||||||
import { LoadXmlStatementContext } from "./MySqlParser.js";
|
import { LoadXmlStatementContext } from "./MySqlParser.js";
|
||||||
import { ParenthesizedQueryContext } from "./MySqlParser.js";
|
import { ParenthesizedQueryContext } from "./MySqlParser.js";
|
||||||
import { ReplaceStatementContext } from "./MySqlParser.js";
|
import { ReplaceStatementContext } from "./MySqlParser.js";
|
||||||
import { SimpleSelectContext } from "./MySqlParser.js";
|
import { UnionAndLateralSelectContext } from "./MySqlParser.js";
|
||||||
import { ParenthesisSelectContext } from "./MySqlParser.js";
|
import { SelectExpressionContext } from "./MySqlParser.js";
|
||||||
import { UnionSelectContext } from "./MySqlParser.js";
|
|
||||||
import { UnionParenthesisSelectContext } from "./MySqlParser.js";
|
|
||||||
import { WithLateralStatementContext } from "./MySqlParser.js";
|
|
||||||
import { SetOperationsContext } from "./MySqlParser.js";
|
import { SetOperationsContext } from "./MySqlParser.js";
|
||||||
import { QueryExpressionBodyContext } from "./MySqlParser.js";
|
import { QueryExpressionBodyContext } from "./MySqlParser.js";
|
||||||
import { QueryItemContext } from "./MySqlParser.js";
|
import { QueryItemContext } from "./MySqlParser.js";
|
||||||
@ -265,10 +262,7 @@ import { OuterJoinContext } from "./MySqlParser.js";
|
|||||||
import { NaturalJoinContext } from "./MySqlParser.js";
|
import { NaturalJoinContext } from "./MySqlParser.js";
|
||||||
import { JoinSpecContext } from "./MySqlParser.js";
|
import { JoinSpecContext } from "./MySqlParser.js";
|
||||||
import { QueryExpressionContext } from "./MySqlParser.js";
|
import { QueryExpressionContext } from "./MySqlParser.js";
|
||||||
import { QueryExpressionNointoContext } from "./MySqlParser.js";
|
|
||||||
import { QuerySpecificationContext } from "./MySqlParser.js";
|
import { QuerySpecificationContext } from "./MySqlParser.js";
|
||||||
import { QuerySpecificationNointoContext } from "./MySqlParser.js";
|
|
||||||
import { UnionParenthesisContext } from "./MySqlParser.js";
|
|
||||||
import { UnionStatementContext } from "./MySqlParser.js";
|
import { UnionStatementContext } from "./MySqlParser.js";
|
||||||
import { LateralStatementContext } from "./MySqlParser.js";
|
import { LateralStatementContext } from "./MySqlParser.js";
|
||||||
import { JsonTableContext } from "./MySqlParser.js";
|
import { JsonTableContext } from "./MySqlParser.js";
|
||||||
@ -278,10 +272,10 @@ import { JsonOnEmptyContext } from "./MySqlParser.js";
|
|||||||
import { JsonOnErrorContext } from "./MySqlParser.js";
|
import { JsonOnErrorContext } from "./MySqlParser.js";
|
||||||
import { SelectSpecContext } from "./MySqlParser.js";
|
import { SelectSpecContext } from "./MySqlParser.js";
|
||||||
import { SelectElementsContext } from "./MySqlParser.js";
|
import { SelectElementsContext } from "./MySqlParser.js";
|
||||||
|
import { SelectExpressionElementContext } from "./MySqlParser.js";
|
||||||
|
import { SelectFunctionElementContext } from "./MySqlParser.js";
|
||||||
import { SelectStarElementContext } from "./MySqlParser.js";
|
import { SelectStarElementContext } from "./MySqlParser.js";
|
||||||
import { SelectColumnElementContext } from "./MySqlParser.js";
|
import { SelectColumnElementContext } from "./MySqlParser.js";
|
||||||
import { SelectFunctionElementContext } from "./MySqlParser.js";
|
|
||||||
import { SelectExpressionElementContext } from "./MySqlParser.js";
|
|
||||||
import { SelectIntoVariablesContext } from "./MySqlParser.js";
|
import { SelectIntoVariablesContext } from "./MySqlParser.js";
|
||||||
import { SelectIntoDumpFileContext } from "./MySqlParser.js";
|
import { SelectIntoDumpFileContext } from "./MySqlParser.js";
|
||||||
import { SelectIntoTextFileContext } from "./MySqlParser.js";
|
import { SelectIntoTextFileContext } from "./MySqlParser.js";
|
||||||
@ -2112,40 +2106,19 @@ export class MySqlParserVisitor<Result> extends AbstractParseTreeVisitor<Result>
|
|||||||
*/
|
*/
|
||||||
visitReplaceStatement?: (ctx: ReplaceStatementContext) => Result;
|
visitReplaceStatement?: (ctx: ReplaceStatementContext) => Result;
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by the `simpleSelect`
|
* Visit a parse tree produced by the `unionAndLateralSelect`
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
* labeled alternative in `MySqlParser.selectStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitSimpleSelect?: (ctx: SimpleSelectContext) => Result;
|
visitUnionAndLateralSelect?: (ctx: UnionAndLateralSelectContext) => Result;
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by the `parenthesisSelect`
|
* Visit a parse tree produced by the `selectExpression`
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
* labeled alternative in `MySqlParser.selectStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitParenthesisSelect?: (ctx: ParenthesisSelectContext) => Result;
|
visitSelectExpression?: (ctx: SelectExpressionContext) => Result;
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by the `unionSelect`
|
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitUnionSelect?: (ctx: UnionSelectContext) => Result;
|
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by the `unionParenthesisSelect`
|
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitUnionParenthesisSelect?: (ctx: UnionParenthesisSelectContext) => Result;
|
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by the `withLateralStatement`
|
|
||||||
* labeled alternative in `MySqlParser.selectStatement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitWithLateralStatement?: (ctx: WithLateralStatementContext) => Result;
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by `MySqlParser.setOperations`.
|
* Visit a parse tree produced by `MySqlParser.setOperations`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -2402,30 +2375,12 @@ export class MySqlParserVisitor<Result> extends AbstractParseTreeVisitor<Result>
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitQueryExpression?: (ctx: QueryExpressionContext) => Result;
|
visitQueryExpression?: (ctx: QueryExpressionContext) => Result;
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by `MySqlParser.queryExpressionNointo`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitQueryExpressionNointo?: (ctx: QueryExpressionNointoContext) => Result;
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by `MySqlParser.querySpecification`.
|
* Visit a parse tree produced by `MySqlParser.querySpecification`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitQuerySpecification?: (ctx: QuerySpecificationContext) => Result;
|
visitQuerySpecification?: (ctx: QuerySpecificationContext) => Result;
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by `MySqlParser.querySpecificationNointo`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitQuerySpecificationNointo?: (ctx: QuerySpecificationNointoContext) => Result;
|
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by `MySqlParser.unionParenthesis`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitUnionParenthesis?: (ctx: UnionParenthesisContext) => Result;
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by `MySqlParser.unionStatement`.
|
* Visit a parse tree produced by `MySqlParser.unionStatement`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -2480,6 +2435,20 @@ export class MySqlParserVisitor<Result> extends AbstractParseTreeVisitor<Result>
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitSelectElements?: (ctx: SelectElementsContext) => Result;
|
visitSelectElements?: (ctx: SelectElementsContext) => Result;
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by the `selectExpressionElement`
|
||||||
|
* labeled alternative in `MySqlParser.selectElement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
visitSelectExpressionElement?: (ctx: SelectExpressionElementContext) => Result;
|
||||||
|
/**
|
||||||
|
* Visit a parse tree produced by the `selectFunctionElement`
|
||||||
|
* labeled alternative in `MySqlParser.selectElement`.
|
||||||
|
* @param ctx the parse tree
|
||||||
|
* @return the visitor result
|
||||||
|
*/
|
||||||
|
visitSelectFunctionElement?: (ctx: SelectFunctionElementContext) => Result;
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by the `selectStarElement`
|
* Visit a parse tree produced by the `selectStarElement`
|
||||||
* labeled alternative in `MySqlParser.selectElement`.
|
* labeled alternative in `MySqlParser.selectElement`.
|
||||||
@ -2494,20 +2463,6 @@ export class MySqlParserVisitor<Result> extends AbstractParseTreeVisitor<Result>
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitSelectColumnElement?: (ctx: SelectColumnElementContext) => Result;
|
visitSelectColumnElement?: (ctx: SelectColumnElementContext) => Result;
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by the `selectFunctionElement`
|
|
||||||
* labeled alternative in `MySqlParser.selectElement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitSelectFunctionElement?: (ctx: SelectFunctionElementContext) => Result;
|
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by the `selectExpressionElement`
|
|
||||||
* labeled alternative in `MySqlParser.selectElement`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitSelectExpressionElement?: (ctx: SelectExpressionElementContext) => Result;
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by the `selectIntoVariables`
|
* Visit a parse tree produced by the `selectIntoVariables`
|
||||||
* labeled alternative in `MySqlParser.intoClause`.
|
* labeled alternative in `MySqlParser.intoClause`.
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -279,14 +279,13 @@ import { Object_type_any_nameContext } from "./PostgreSQLParser.js";
|
|||||||
import { Object_type_nameContext } from "./PostgreSQLParser.js";
|
import { Object_type_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { Object_type_name_on_any_nameContext } from "./PostgreSQLParser.js";
|
import { Object_type_name_on_any_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { Any_name_listContext } from "./PostgreSQLParser.js";
|
import { Any_name_listContext } from "./PostgreSQLParser.js";
|
||||||
import { Table_column_nameContext } from "./PostgreSQLParser.js";
|
|
||||||
import { Relation_column_nameContext } from "./PostgreSQLParser.js";
|
import { Relation_column_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { Relation_nameContext } from "./PostgreSQLParser.js";
|
import { Relation_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { Any_nameContext } from "./PostgreSQLParser.js";
|
import { Any_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { AttrsContext } from "./PostgreSQLParser.js";
|
import { AttrsContext } from "./PostgreSQLParser.js";
|
||||||
import { Type_name_listContext } from "./PostgreSQLParser.js";
|
import { Type_name_listContext } from "./PostgreSQLParser.js";
|
||||||
import { TruncatestmtContext } from "./PostgreSQLParser.js";
|
import { TruncatestmtContext } from "./PostgreSQLParser.js";
|
||||||
import { Opt_restart_seqsContext } from "./PostgreSQLParser.js";
|
import { Truncate_tableContext } from "./PostgreSQLParser.js";
|
||||||
import { CommentstmtContext } from "./PostgreSQLParser.js";
|
import { CommentstmtContext } from "./PostgreSQLParser.js";
|
||||||
import { Comment_textContext } from "./PostgreSQLParser.js";
|
import { Comment_textContext } from "./PostgreSQLParser.js";
|
||||||
import { SeclabelstmtContext } from "./PostgreSQLParser.js";
|
import { SeclabelstmtContext } from "./PostgreSQLParser.js";
|
||||||
@ -387,7 +386,6 @@ import { Reindex_option_listContext } from "./PostgreSQLParser.js";
|
|||||||
import { Reindex_option_elemContext } from "./PostgreSQLParser.js";
|
import { Reindex_option_elemContext } from "./PostgreSQLParser.js";
|
||||||
import { AltertblspcstmtContext } from "./PostgreSQLParser.js";
|
import { AltertblspcstmtContext } from "./PostgreSQLParser.js";
|
||||||
import { RenamestmtContext } from "./PostgreSQLParser.js";
|
import { RenamestmtContext } from "./PostgreSQLParser.js";
|
||||||
import { Opt_columnContext } from "./PostgreSQLParser.js";
|
|
||||||
import { Opt_set_dataContext } from "./PostgreSQLParser.js";
|
import { Opt_set_dataContext } from "./PostgreSQLParser.js";
|
||||||
import { AlterobjectdependsstmtContext } from "./PostgreSQLParser.js";
|
import { AlterobjectdependsstmtContext } from "./PostgreSQLParser.js";
|
||||||
import { Opt_noContext } from "./PostgreSQLParser.js";
|
import { Opt_noContext } from "./PostgreSQLParser.js";
|
||||||
@ -3652,16 +3650,6 @@ export class PostgreSQLParserListener implements ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitAny_name_list?: (ctx: Any_name_listContext) => void;
|
exitAny_name_list?: (ctx: Any_name_listContext) => void;
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by `PostgreSQLParser.table_column_name`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterTable_column_name?: (ctx: Table_column_nameContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by `PostgreSQLParser.table_column_name`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitTable_column_name?: (ctx: Table_column_nameContext) => void;
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by `PostgreSQLParser.relation_column_name`.
|
* Enter a parse tree produced by `PostgreSQLParser.relation_column_name`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -3723,15 +3711,15 @@ export class PostgreSQLParserListener implements ParseTreeListener {
|
|||||||
*/
|
*/
|
||||||
exitTruncatestmt?: (ctx: TruncatestmtContext) => void;
|
exitTruncatestmt?: (ctx: TruncatestmtContext) => void;
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by `PostgreSQLParser.opt_restart_seqs`.
|
* Enter a parse tree produced by `PostgreSQLParser.truncate_table`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
enterOpt_restart_seqs?: (ctx: Opt_restart_seqsContext) => void;
|
enterTruncate_table?: (ctx: Truncate_tableContext) => void;
|
||||||
/**
|
/**
|
||||||
* Exit a parse tree produced by `PostgreSQLParser.opt_restart_seqs`.
|
* Exit a parse tree produced by `PostgreSQLParser.truncate_table`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitOpt_restart_seqs?: (ctx: Opt_restart_seqsContext) => void;
|
exitTruncate_table?: (ctx: Truncate_tableContext) => void;
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by `PostgreSQLParser.commentstmt`.
|
* Enter a parse tree produced by `PostgreSQLParser.commentstmt`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -4732,16 +4720,6 @@ export class PostgreSQLParserListener implements ParseTreeListener {
|
|||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
*/
|
*/
|
||||||
exitRenamestmt?: (ctx: RenamestmtContext) => void;
|
exitRenamestmt?: (ctx: RenamestmtContext) => void;
|
||||||
/**
|
|
||||||
* Enter a parse tree produced by `PostgreSQLParser.opt_column`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
enterOpt_column?: (ctx: Opt_columnContext) => void;
|
|
||||||
/**
|
|
||||||
* Exit a parse tree produced by `PostgreSQLParser.opt_column`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
*/
|
|
||||||
exitOpt_column?: (ctx: Opt_columnContext) => void;
|
|
||||||
/**
|
/**
|
||||||
* Enter a parse tree produced by `PostgreSQLParser.opt_set_data`.
|
* Enter a parse tree produced by `PostgreSQLParser.opt_set_data`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
@ -279,14 +279,13 @@ import { Object_type_any_nameContext } from "./PostgreSQLParser.js";
|
|||||||
import { Object_type_nameContext } from "./PostgreSQLParser.js";
|
import { Object_type_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { Object_type_name_on_any_nameContext } from "./PostgreSQLParser.js";
|
import { Object_type_name_on_any_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { Any_name_listContext } from "./PostgreSQLParser.js";
|
import { Any_name_listContext } from "./PostgreSQLParser.js";
|
||||||
import { Table_column_nameContext } from "./PostgreSQLParser.js";
|
|
||||||
import { Relation_column_nameContext } from "./PostgreSQLParser.js";
|
import { Relation_column_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { Relation_nameContext } from "./PostgreSQLParser.js";
|
import { Relation_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { Any_nameContext } from "./PostgreSQLParser.js";
|
import { Any_nameContext } from "./PostgreSQLParser.js";
|
||||||
import { AttrsContext } from "./PostgreSQLParser.js";
|
import { AttrsContext } from "./PostgreSQLParser.js";
|
||||||
import { Type_name_listContext } from "./PostgreSQLParser.js";
|
import { Type_name_listContext } from "./PostgreSQLParser.js";
|
||||||
import { TruncatestmtContext } from "./PostgreSQLParser.js";
|
import { TruncatestmtContext } from "./PostgreSQLParser.js";
|
||||||
import { Opt_restart_seqsContext } from "./PostgreSQLParser.js";
|
import { Truncate_tableContext } from "./PostgreSQLParser.js";
|
||||||
import { CommentstmtContext } from "./PostgreSQLParser.js";
|
import { CommentstmtContext } from "./PostgreSQLParser.js";
|
||||||
import { Comment_textContext } from "./PostgreSQLParser.js";
|
import { Comment_textContext } from "./PostgreSQLParser.js";
|
||||||
import { SeclabelstmtContext } from "./PostgreSQLParser.js";
|
import { SeclabelstmtContext } from "./PostgreSQLParser.js";
|
||||||
@ -387,7 +386,6 @@ import { Reindex_option_listContext } from "./PostgreSQLParser.js";
|
|||||||
import { Reindex_option_elemContext } from "./PostgreSQLParser.js";
|
import { Reindex_option_elemContext } from "./PostgreSQLParser.js";
|
||||||
import { AltertblspcstmtContext } from "./PostgreSQLParser.js";
|
import { AltertblspcstmtContext } from "./PostgreSQLParser.js";
|
||||||
import { RenamestmtContext } from "./PostgreSQLParser.js";
|
import { RenamestmtContext } from "./PostgreSQLParser.js";
|
||||||
import { Opt_columnContext } from "./PostgreSQLParser.js";
|
|
||||||
import { Opt_set_dataContext } from "./PostgreSQLParser.js";
|
import { Opt_set_dataContext } from "./PostgreSQLParser.js";
|
||||||
import { AlterobjectdependsstmtContext } from "./PostgreSQLParser.js";
|
import { AlterobjectdependsstmtContext } from "./PostgreSQLParser.js";
|
||||||
import { Opt_noContext } from "./PostgreSQLParser.js";
|
import { Opt_noContext } from "./PostgreSQLParser.js";
|
||||||
@ -2551,12 +2549,6 @@ export class PostgreSQLParserVisitor<Result> extends AbstractParseTreeVisitor<Re
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitAny_name_list?: (ctx: Any_name_listContext) => Result;
|
visitAny_name_list?: (ctx: Any_name_listContext) => Result;
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by `PostgreSQLParser.table_column_name`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitTable_column_name?: (ctx: Table_column_nameContext) => Result;
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by `PostgreSQLParser.relation_column_name`.
|
* Visit a parse tree produced by `PostgreSQLParser.relation_column_name`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -2594,11 +2586,11 @@ export class PostgreSQLParserVisitor<Result> extends AbstractParseTreeVisitor<Re
|
|||||||
*/
|
*/
|
||||||
visitTruncatestmt?: (ctx: TruncatestmtContext) => Result;
|
visitTruncatestmt?: (ctx: TruncatestmtContext) => Result;
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by `PostgreSQLParser.opt_restart_seqs`.
|
* Visit a parse tree produced by `PostgreSQLParser.truncate_table`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitOpt_restart_seqs?: (ctx: Opt_restart_seqsContext) => Result;
|
visitTruncate_table?: (ctx: Truncate_tableContext) => Result;
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by `PostgreSQLParser.commentstmt`.
|
* Visit a parse tree produced by `PostgreSQLParser.commentstmt`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
@ -3199,12 +3191,6 @@ export class PostgreSQLParserVisitor<Result> extends AbstractParseTreeVisitor<Re
|
|||||||
* @return the visitor result
|
* @return the visitor result
|
||||||
*/
|
*/
|
||||||
visitRenamestmt?: (ctx: RenamestmtContext) => Result;
|
visitRenamestmt?: (ctx: RenamestmtContext) => Result;
|
||||||
/**
|
|
||||||
* Visit a parse tree produced by `PostgreSQLParser.opt_column`.
|
|
||||||
* @param ctx the parse tree
|
|
||||||
* @return the visitor result
|
|
||||||
*/
|
|
||||||
visitOpt_column?: (ctx: Opt_columnContext) => Result;
|
|
||||||
/**
|
/**
|
||||||
* Visit a parse tree produced by `PostgreSQLParser.opt_set_data`.
|
* Visit a parse tree produced by `PostgreSQLParser.opt_set_data`.
|
||||||
* @param ctx the parse tree
|
* @param ctx the parse tree
|
||||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -8,6 +8,7 @@ import {
|
|||||||
ParserRuleContext,
|
ParserRuleContext,
|
||||||
ParseTreeWalker,
|
ParseTreeWalker,
|
||||||
ParseTreeListener,
|
ParseTreeListener,
|
||||||
|
PredictionMode,
|
||||||
} from 'antlr4ng';
|
} from 'antlr4ng';
|
||||||
import { CandidatesCollection, CodeCompletionCore } from 'antlr4-c3';
|
import { CandidatesCollection, CodeCompletionCore } from 'antlr4-c3';
|
||||||
import { findCaretTokenIndex } from './utils/findCaretTokenIndex';
|
import { findCaretTokenIndex } from './utils/findCaretTokenIndex';
|
||||||
@ -110,7 +111,7 @@ export default abstract class BasicParser<
|
|||||||
const lexer = this.createLexer(input, errorListener);
|
const lexer = this.createLexer(input, errorListener);
|
||||||
const tokenStream = new CommonTokenStream(lexer);
|
const tokenStream = new CommonTokenStream(lexer);
|
||||||
const parser = this.createParserFromTokenStream(tokenStream);
|
const parser = this.createParserFromTokenStream(tokenStream);
|
||||||
|
parser.interpreter.predictionMode = PredictionMode.SLL;
|
||||||
if (errorListener) {
|
if (errorListener) {
|
||||||
parser.removeErrorListeners();
|
parser.removeErrorListeners();
|
||||||
parser.addErrorListener(new ParseErrorListener(errorListener));
|
parser.addErrorListener(new ParseErrorListener(errorListener));
|
||||||
@ -155,6 +156,7 @@ export default abstract class BasicParser<
|
|||||||
this._tokenStream.fill();
|
this._tokenStream.fill();
|
||||||
|
|
||||||
this._parser = this.createParserFromTokenStream(this._tokenStream);
|
this._parser = this.createParserFromTokenStream(this._tokenStream);
|
||||||
|
this._parser.interpreter.predictionMode = PredictionMode.SLL;
|
||||||
this._parser.buildParseTrees = true;
|
this._parser.buildParseTrees = true;
|
||||||
this._parser.errorHandler = new ErrorStrategy();
|
this._parser.errorHandler = new ErrorStrategy();
|
||||||
|
|
||||||
@ -340,6 +342,7 @@ export default abstract class BasicParser<
|
|||||||
tokenStream.fill();
|
tokenStream.fill();
|
||||||
|
|
||||||
const parser = this.createParserFromTokenStream(tokenStream);
|
const parser = this.createParserFromTokenStream(tokenStream);
|
||||||
|
parser.interpreter.predictionMode = PredictionMode.SLL;
|
||||||
parser.removeErrorListeners();
|
parser.removeErrorListeners();
|
||||||
parser.buildParseTrees = true;
|
parser.buildParseTrees = true;
|
||||||
parser.errorHandler = new ErrorStrategy();
|
parser.errorHandler = new ErrorStrategy();
|
||||||
|
@ -405,7 +405,11 @@ describe('Postgre SQL Syntax Suggestion', () => {
|
|||||||
(syn) => syn.syntaxContextType === SyntaxContextType.COLUMN
|
(syn) => syn.syntaxContextType === SyntaxContextType.COLUMN
|
||||||
);
|
);
|
||||||
expect(suggestion).not.toBeUndefined();
|
expect(suggestion).not.toBeUndefined();
|
||||||
expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['column_name']);
|
expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([
|
||||||
|
'table_name',
|
||||||
|
'.',
|
||||||
|
'column_name',
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Alter Table With Column', () => {
|
test('Alter Table With Column', () => {
|
||||||
@ -764,7 +768,11 @@ describe('Postgre SQL Syntax Suggestion', () => {
|
|||||||
(syn) => syn.syntaxContextType === SyntaxContextType.COLUMN
|
(syn) => syn.syntaxContextType === SyntaxContextType.COLUMN
|
||||||
);
|
);
|
||||||
expect(suggestion).not.toBeUndefined();
|
expect(suggestion).not.toBeUndefined();
|
||||||
expect(suggestion?.wordRanges.map((token) => token.text)).toEqual(['columnname']);
|
expect(suggestion?.wordRanges.map((token) => token.text)).toEqual([
|
||||||
|
'tablename',
|
||||||
|
'.',
|
||||||
|
'columnname',
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Select With Column', () => {
|
test('Select With Column', () => {
|
||||||
|
@ -9,10 +9,10 @@ describe('Spark SQL Listener Tests', () => {
|
|||||||
|
|
||||||
const parseTree = parser.parse(sql);
|
const parseTree = parser.parse(sql);
|
||||||
|
|
||||||
test('Listener exitRelationPrimary', () => {
|
test('Listener exitTableName', () => {
|
||||||
let result = '';
|
let result = '';
|
||||||
class MyListener implements SparkSqlParserListener {
|
class MyListener implements SparkSqlParserListener {
|
||||||
exitRelationPrimary = (ctx): void => {
|
exitTableName = (ctx): void => {
|
||||||
result = ctx.getText().toLowerCase();
|
result = ctx.getText().toLowerCase();
|
||||||
};
|
};
|
||||||
visitTerminal() {}
|
visitTerminal() {}
|
||||||
|
@ -11,7 +11,7 @@ describe('Spark SQL Visitor Tests', () => {
|
|||||||
console.error('Parse error:', error);
|
console.error('Parse error:', error);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Visitor visitRelationPrimary', () => {
|
test('Visitor visitTableName', () => {
|
||||||
class MyVisitor
|
class MyVisitor
|
||||||
extends AbstractParseTreeVisitor<any>
|
extends AbstractParseTreeVisitor<any>
|
||||||
implements SparkSqlParserVisitor<any>
|
implements SparkSqlParserVisitor<any>
|
||||||
@ -20,7 +20,7 @@ describe('Spark SQL Visitor Tests', () => {
|
|||||||
protected defaultResult() {
|
protected defaultResult() {
|
||||||
return this.result;
|
return this.result;
|
||||||
}
|
}
|
||||||
visitRelationPrimary = (ctx): void => {
|
visitTableName = (ctx): void => {
|
||||||
this.result = ctx.getText().toLowerCase();
|
this.result = ctx.getText().toLowerCase();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user