SQL Syntax 4.6 Release

The EBNF and Railroad Diagrams for JSQLParser-4.6.

Statement

IF Condition SingleStatement Block ST_SEMICOLON ELSE SingleStatement Block ST_SEMICOLON EOF UnsupportedStatement
         ::= ( 'IF' Condition ( ( SingleStatement | Block ) ST_SEMICOLON? 'ELSE' )? )? ( SingleStatement | Block ) ST_SEMICOLON? EOF
           | UnsupportedStatement
Not referenced by any.

SingleStatement

WithList SelectWithWithItems Insert Update Delete Merge Select Upsert Alter RenameTableStatement Create Drop Analyze Truncate Execute Set Reset Show Use SavepointStatement RollbackStatement COMMIT Comment Describe Explain Declare Grant PurgeStatement
         ::= WithList? ( SelectWithWithItems | Insert | Update | Delete | Merge )
           | Select
           | Upsert
           | Alter
           | RenameTableStatement
           | Create
           | Drop
           | Analyze
           | Truncate
           | Execute
           | Set
           | Reset
           | Show
           | Use
           | SavepointStatement
           | RollbackStatement
           | 'COMMIT'
           | Comment
           | Describe
           | Explain
           | Declare
           | Grant
           | PurgeStatement
Referenced by:

Block

BEGIN ST_SEMICOLON SingleStatement Block ST_SEMICOLON END ST_SEMICOLON
Block    ::= 'BEGIN' ST_SEMICOLON* ( ( SingleStatement | Block ) ST_SEMICOLON )+ 'END' ST_SEMICOLON?
Referenced by:

Statements

ST_SEMICOLON IF Condition SingleStatement Block ST_SEMICOLON ELSE SingleStatement Block SingleStatement Block ST_SEMICOLON UnsupportedStatement ST_SEMICOLON IF Condition SingleStatement Block ST_SEMICOLON ELSE SingleStatement Block SingleStatement Block ST_SEMICOLON UnsupportedStatement EOF
Not referenced by any.

Declare

DECLARE UserVariable TABLE ( ColumnDefinition , ) AS RelObjectName ColDataType = Expression UserVariable ,
Declare  ::= 'DECLARE' UserVariable ( 'TABLE' '(' ColumnDefinition ( ',' ColumnDefinition )* ')' | 'AS' RelObjectName | ColDataType ( '=' Expression )? ( ',' UserVariable ColDataType ( '=' Expression )? )* )
Referenced by:

Set

SET LOCAL SESSION K_DATETIMELITERAL ZONE UserVariable IdentifierChain = Expression ZONE K_DATETIMELITERAL = RelObjectNameExt ,
Set      ::= 'SET' ( 'LOCAL' | 'SESSION' )? ( K_DATETIMELITERAL 'ZONE' | ( UserVariable | IdentifierChain ) '='? ) Expression ( ',' ( K_DATETIMELITERAL 'ZONE' | RelObjectNameExt '='? )? Expression )*
Referenced by:

Reset

RESET K_DATETIMELITERAL ZONE RelObjectName ALL
Reset    ::= 'RESET' ( K_DATETIMELITERAL 'ZONE' | RelObjectName | 'ALL' )
Referenced by:

RenameTableStatement

RENAME TABLE IF EXISTS Table WAIT S_LONG NOWAIT TO Table Table ,
         ::= 'RENAME' 'TABLE'? ( 'IF' 'EXISTS' )? Table ( 'WAIT' S_LONG | 'NOWAIT' )? 'TO' Table ( ',' Table 'TO' Table )*
Referenced by:

PurgeStatement

PURGE TABLE Table INDEX Index RECYCLEBIN DBA_RECYCLEBIN TABLESPACE S_IDENTIFIER USER S_IDENTIFIER
         ::= 'PURGE' ( 'TABLE' Table | 'INDEX' Index | 'RECYCLEBIN' | 'DBA_RECYCLEBIN' | 'TABLESPACE' S_IDENTIFIER ( 'USER' S_IDENTIFIER )? )
Referenced by:

Describe

DESCRIBE Table
Describe ::= 'DESCRIBE' Table
Referenced by:

Explain

EXPLAIN ExplainStatementOptions Select
Referenced by:

ExplainOptionBoolean

TRUE FALSE ON OFF
         ::= ( 'TRUE' | 'FALSE' | 'ON' | 'OFF' )?
Referenced by:

ExplainFormatOption

XML JSON YAML
         ::= ( 'XML' | 'JSON' | 'YAML' )?
Referenced by:

ExplainStatementOptions

ANALYZE BUFFERS COSTS VERBOSE ExplainOptionBoolean FORMAT ExplainFormatOption
         ::= ( ( 'ANALYZE' | 'BUFFERS' | 'COSTS' | 'VERBOSE' ) ExplainOptionBoolean | 'FORMAT' ExplainFormatOption )*
Referenced by:

Use

USE SCHEMA RelObjectNameExt
Use      ::= 'USE' 'SCHEMA'? RelObjectNameExt
Referenced by:

Show

SHOW ShowColumns ShowIndex ShowTables captureRest
Show     ::= 'SHOW' ( ShowColumns | ShowIndex | ShowTables | captureRest )
Referenced by:

ShowColumns

COLUMNS FROM RelObjectNameExt
         ::= 'COLUMNS' 'FROM' RelObjectNameExt
Referenced by:

ShowIndex

INDEX FROM RelObjectNameExt
         ::= 'INDEX' 'FROM' RelObjectNameExt
Referenced by:

ShowTables

EXTENDED FULL TABLES FROM IN RelObjectNameExt LIKE SimpleExpression WHERE Expression
         ::= 'EXTENDED'? 'FULL'? 'TABLES' ( ( 'FROM' | 'IN' ) RelObjectNameExt )? ( 'LIKE' SimpleExpression | 'WHERE' Expression )?
Referenced by:

Values

VALUES VALUE ExpressionList
Values   ::= ( 'VALUES' | 'VALUE' ) ExpressionList
Referenced by:

ReturningClause

RETURNING RETURN SelectItemsList INTO Table UserVariable ,
         ::= ( 'RETURNING' | 'RETURN' ) SelectItemsList ( 'INTO' ( Table | UserVariable ) ( ',' ( Table | UserVariable ) )* )?
Referenced by:

Update

UPDATE LOW_PRIORITY IGNORE TableWithAlias JoinsList SET UpdateSets OutputClause FROM FromItem JoinsList WhereClause OrderByElements PlainLimit ReturningClause
Referenced by:

UpdateSets

Column = Expression ParenthesedExpressionList = ParenthesedSelect ParenthesedExpressionList , Column = Expression ParenthesedExpressionList = ParenthesedSelect ParenthesedExpressionList

Insert

INSERT LOW_PRIORITY DELAYED HIGH_PRIORITY IGNORE INTO Table AS RelObjectNameWithoutValue ( ColumnList ) OutputClause SET UpdateSets Select ON DUPLICATE KEY UPDATE UpdateSets ON CONFLICT InsertConflictTarget InsertConflictAction ReturningClause
Insert   ::= 'INSERT' ( 'LOW_PRIORITY' | 'DELAYED' | 'HIGH_PRIORITY' )? 'IGNORE'? 'INTO'? Table ( 'AS'? RelObjectNameWithoutValue )? ( '(' ColumnList ')' )? OutputClause? ( 'SET' UpdateSets | Select ) ( 'ON' 'DUPLICATE' 'KEY' 'UPDATE' UpdateSets )? ( 'ON' 'CONFLICT' InsertConflictTarget? InsertConflictAction )? ReturningClause?
Referenced by:

InsertConflictTarget

( RelObjectNameExt2 , ) WhereClause ON CONSTRAINT RelObjectNameExt2
         ::= '(' RelObjectNameExt2 ( ',' RelObjectNameExt2 )* ')' WhereClause?
           | 'ON' 'CONSTRAINT' RelObjectNameExt2
Referenced by:

InsertConflictAction

DO NOTHING UPDATE SET UpdateSets WhereClause
         ::= 'DO' ( 'NOTHING' | 'UPDATE' 'SET' UpdateSets WhereClause? )
Referenced by:

OutputClause

OUTPUT SelectItemsList INTO UserVariable Table ColumnsNamesList
         ::= 'OUTPUT' SelectItemsList ( 'INTO' ( UserVariable | Table ) ColumnsNamesList? )?
Referenced by:

Upsert

UPSERT INSERT OR REPLACE INTO Table ParenthesedColumnList SET UpdateSets Select ON DUPLICATE KEY UPDATE UpdateSets
Upsert   ::= ( 'UPSERT' | ( 'INSERT' 'OR' )? 'REPLACE' ) 'INTO'? Table ParenthesedColumnList? ( 'SET' UpdateSets | Select ) ( 'ON' 'DUPLICATE' 'KEY' 'UPDATE' UpdateSets )?
Referenced by:

Delete

DELETE LOW_PRIORITY QUICK IGNORE TableWithAlias , OutputClause FROM TableWithAlias JoinsList USING TableWithAlias , WhereClause OrderByElements PlainLimit ReturningClause
Delete   ::= 'DELETE' 'LOW_PRIORITY'? 'QUICK'? 'IGNORE'? ( ( TableWithAlias ( ',' TableWithAlias )* OutputClause? )? 'FROM' )? ( TableWithAlias JoinsList? )? ( 'USING' TableWithAlias ( ',' TableWithAlias )* )? WhereClause? OrderByElements? PlainLimit? ReturningClause?
Referenced by:

Merge

MERGE INTO TableWithAlias USING FromItem ON ( Expression ) MergeUpdateClause MergeInsertClause MergeInsertClause MergeUpdateClause
Referenced by:

MergeUpdateClause

WHEN MATCHED THEN UPDATE SET UpdateSets WHERE Expression DELETE WHERE Expression
         ::= 'WHEN' 'MATCHED' 'THEN' 'UPDATE' 'SET' UpdateSets ( 'WHERE' Expression )? ( 'DELETE' 'WHERE' Expression )?
Referenced by:

MergeInsertClause

WHEN NOT MATCHED THEN INSERT ( ColumnList ) VALUES ( SimpleExpressionList ) WHERE Expression
         ::= 'WHEN' 'NOT' 'MATCHED' 'THEN' 'INSERT' ( '(' ColumnList ')' )? 'VALUES' '(' SimpleExpressionList ')' ( 'WHERE' Expression )?
Referenced by:

RelObjectNameList

RelObjectNameExt . : . RelObjectNameExt2
         ::= RelObjectNameExt ( ( '.' | ':' ) '.'* RelObjectNameExt2 )*

Column

RelObjectNameList . K_NEXTVAL ArrayConstructor

RelObjectNameWithoutValue

S_IDENTIFIER S_QUOTED_IDENTIFIER K_DATE_LITERAL K_DATETIMELITERAL K_STRING_FUNCTION_NAME K_ISOLATION K_TIME_KEY_EXPR ACTION ACTIVE ADD ADVANCE ADVISE AGAINST ALGORITHM ALTER ANALYZE APPLY ARCHIVE ARRAY ASC AT AUTHORIZATION AUTO BEGIN BINARY BIT BUFFERS BY BYTE BYTES CACHE CALL CASCADE CASE CAST CHANGE CHANGES CHAR CHARACTER CHECKPOINT CLOSE COLLATE COLUMN COLUMNS COMMENT COMMIT CONFLICT CONVERT COSTS CS CYCLE DATABASE DDL DECLARE DEFAULT DEFERRABLE DELAYED DELETE DESC DESCRIBE DISABLE DISCONNECT DIV DML DO DOMAIN DROP DUMP DUPLICATE EMIT ENABLE END ESCAPE EXCLUDE EXEC EXECUTE EXPLAIN EXTENDED EXTRACT FALSE FILTER FIRST FLUSH FN FOLLOWING FORMAT FULLTEXT FUNCTION GLOBAL GRANT GUARD HISTORY HOPPING INCLUDE INCREMENT INDEX INSERT INTERLEAVE ISNULL JSON KEEP KEY KEYS LAST LEADING LINK LOCAL LOCKED LOG MATCH MATCHED MATERIALIZED MAXVALUE MEMBER MERGE MINVALUE MODIFY MOVEMENT NEXT NO NOCACHE NOKEEP NOLOCK NOMAXVALUE NOMINVALUE NOORDER NOTHING NOVALIDATE NOWAIT NULLS OF OFF OPEN OVER OVERLAPS PARALLEL PARENT PARTITION PATH PERCENT PLACING PRECEDING PRECISION PRIMARY PRIOR PURGE QUERY QUICK QUIESCE RANGE READ RECYCLEBIN REFERENCES REFRESH REGISTER RENAME REPLACE RESET RESTART RESTRICT RESTRICTED RESUMABLE RESUME RLIKE ROLLBACK ROW ROWS RR RS SAVEPOINT SCHEMA SEPARATOR SEQUENCE SESSION SETS SHOW SHUTDOWN SIBLINGS SIGNED SIMILAR SIZE SKIP STORED STRING SUSPEND SWITCH SYNONYM SYSTEM TABLE TABLESPACE TEMP TEMPORARY THEN TIMEOUT TIMESTAMPTZ TO TRIGGER TRUE TRUNCATE TUMBLING TYPE UNLOGGED UNQIESCE UNSIGNED UPDATE UPSERT UR USER VALIDATE VERBOSE VIEW WAIT WITHIN WITHOUT WORK XML XMLAGG XMLTEXT YAML YES ZONE
         ::= S_IDENTIFIER
           | S_QUOTED_IDENTIFIER
           | K_DATE_LITERAL
           | K_DATETIMELITERAL
           | K_STRING_FUNCTION_NAME
           | K_ISOLATION
           | K_TIME_KEY_EXPR
           | 'ACTION'
           | 'ACTIVE'
           | 'ADD'
           | 'ADVANCE'
           | 'ADVISE'
           | 'AGAINST'
           | 'ALGORITHM'
           | 'ALTER'
           | 'ANALYZE'
           | 'APPLY'
           | 'ARCHIVE'
           | 'ARRAY'
           | 'ASC'
           | 'AT'
           | 'AUTHORIZATION'
           | 'AUTO'
           | 'BEGIN'
           | 'BINARY'
           | 'BIT'
           | 'BUFFERS'
           | 'BY'
           | 'BYTE'
           | 'BYTES'
           | 'CACHE'
           | 'CALL'
           | 'CASCADE'
           | 'CASE'
           | 'CAST'
           | 'CHANGE'
           | 'CHANGES'
           | 'CHAR'
           | 'CHARACTER'
           | 'CHECKPOINT'
           | 'CLOSE'
           | 'COLLATE'
           | 'COLUMN'
           | 'COLUMNS'
           | 'COMMENT'
           | 'COMMIT'
           | 'CONFLICT'
           | 'CONVERT'
           | 'COSTS'
           | 'CS'
           | 'CYCLE'
           | 'DATABASE'
           | 'DDL'
           | 'DECLARE'
           | 'DEFAULT'
           | 'DEFERRABLE'
           | 'DELAYED'
           | 'DELETE'
           | 'DESC'
           | 'DESCRIBE'
           | 'DISABLE'
           | 'DISCONNECT'
           | 'DIV'
           | 'DML'
           | 'DO'
           | 'DOMAIN'
           | 'DROP'
           | 'DUMP'
           | 'DUPLICATE'
           | 'EMIT'
           | 'ENABLE'
           | 'END'
           | 'ESCAPE'
           | 'EXCLUDE'
           | 'EXEC'
           | 'EXECUTE'
           | 'EXPLAIN'
           | 'EXTENDED'
           | 'EXTRACT'
           | 'FALSE'
           | 'FILTER'
           | 'FIRST'
           | 'FLUSH'
           | 'FN'
           | 'FOLLOWING'
           | 'FORMAT'
           | 'FULLTEXT'
           | 'FUNCTION'
           | 'GLOBAL'
           | 'GRANT'
           | 'GUARD'
           | 'HISTORY'
           | 'HOPPING'
           | 'INCLUDE'
           | 'INCREMENT'
           | 'INDEX'
           | 'INSERT'
           | 'INTERLEAVE'
           | 'ISNULL'
           | 'JSON'
           | 'KEEP'
           | 'KEY'
           | 'KEYS'
           | 'LAST'
           | 'LEADING'
           | 'LINK'
           | 'LOCAL'
           | 'LOCKED'
           | 'LOG'
           | 'MATCH'
           | 'MATCHED'
           | 'MATERIALIZED'
           | 'MAXVALUE'
           | 'MEMBER'
           | 'MERGE'
           | 'MINVALUE'
           | 'MODIFY'
           | 'MOVEMENT'
           | 'NEXT'
           | 'NO'
           | 'NOCACHE'
           | 'NOKEEP'
           | 'NOLOCK'
           | 'NOMAXVALUE'
           | 'NOMINVALUE'
           | 'NOORDER'
           | 'NOTHING'
           | 'NOVALIDATE'
           | 'NOWAIT'
           | 'NULLS'
           | 'OF'
           | 'OFF'
           | 'OPEN'
           | 'OVER'
           | 'OVERLAPS'
           | 'PARALLEL'
           | 'PARENT'
           | 'PARTITION'
           | 'PATH'
           | 'PERCENT'
           | 'PLACING'
           | 'PRECEDING'
           | 'PRECISION'
           | 'PRIMARY'
           | 'PRIOR'
           | 'PURGE'
           | 'QUERY'
           | 'QUICK'
           | 'QUIESCE'
           | 'RANGE'
           | 'READ'
           | 'RECYCLEBIN'
           | 'REFERENCES'
           | 'REFRESH'
           | 'REGISTER'
           | 'RENAME'
           | 'REPLACE'
           | 'RESET'
           | 'RESTART'
           | 'RESTRICT'
           | 'RESTRICTED'
           | 'RESUMABLE'
           | 'RESUME'
           | 'RLIKE'
           | 'ROLLBACK'
           | 'ROW'
           | 'ROWS'
           | 'RR'
           | 'RS'
           | 'SAVEPOINT'
           | 'SCHEMA'
           | 'SEPARATOR'
           | 'SEQUENCE'
           | 'SESSION'
           | 'SETS'
           | 'SHOW'
           | 'SHUTDOWN'
           | 'SIBLINGS'
           | 'SIGNED'
           | 'SIMILAR'
           | 'SIZE'
           | 'SKIP'
           | 'STORED'
           | 'STRING'
           | 'SUSPEND'
           | 'SWITCH'
           | 'SYNONYM'
           | 'SYSTEM'
           | 'TABLE'
           | 'TABLESPACE'
           | 'TEMP'
           | 'TEMPORARY'
           | 'THEN'
           | 'TIMEOUT'
           | 'TIMESTAMPTZ'
           | 'TO'
           | 'TRIGGER'
           | 'TRUE'
           | 'TRUNCATE'
           | 'TUMBLING'
           | 'TYPE'
           | 'UNLOGGED'
           | 'UNQIESCE'
           | 'UNSIGNED'
           | 'UPDATE'
           | 'UPSERT'
           | 'UR'
           | 'USER'
           | 'VALIDATE'
           | 'VERBOSE'
           | 'VIEW'
           | 'WAIT'
           | 'WITHIN'
           | 'WITHOUT'
           | 'WORK'
           | 'XML'
           | 'XMLAGG'
           | 'XMLTEXT'
           | 'YAML'
           | 'YES'
           | 'ZONE'

RelObjectName

RelObjectNameWithoutValue GROUP INTERVAL ON START TOP VALUE VALUES CREATE TABLES CONNECT IGNORE
         ::= RelObjectNameWithoutValue
           | 'GROUP'
           | 'INTERVAL'
           | 'ON'
           | 'START'
           | 'TOP'
           | 'VALUE'
           | 'VALUES'
           | 'CREATE'
           | 'TABLES'
           | 'CONNECT'
           | 'IGNORE'

RelObjectNameWithoutStart

RelObjectNameWithoutValue TOP VALUE VALUES INTERVAL
         ::= RelObjectNameWithoutValue
           | 'TOP'
           | 'VALUE'
           | 'VALUES'
           | 'INTERVAL'
Referenced by:

RelObjectNameExt

RelObjectName ALL ANY SOME LEFT RIGHT SET DOUBLE IF IIF OPTIMIZE LIMIT OFFSET PROCEDURE PUBLIC CASEWHEN IN GROUPING ORDER
         ::= RelObjectName
           | 'ALL'
           | 'ANY'
           | 'SOME'
           | 'LEFT'
           | 'RIGHT'
           | 'SET'
           | 'DOUBLE'
           | 'IF'
           | 'IIF'
           | 'OPTIMIZE'
           | 'LIMIT'
           | 'OFFSET'
           | 'PROCEDURE'
           | 'PUBLIC'
           | 'CASEWHEN'
           | 'IN'
           | 'GROUPING'
           | 'ORDER'

RelObjectNameExt2

RelObjectNameExt FROM K_SELECT CURRENT
         ::= RelObjectNameExt
           | 'FROM'
           | K_SELECT
           | 'CURRENT'

Table

RelObjectNameList

TableWithAlias

Table Alias
         ::= Table Alias?
Referenced by:

SelectWithWithItems

Select
         ::= Select
Referenced by:

Select

WithList PlainSelect Values ParenthesedSelect SetOperationList OrderByElements LimitWithOffset Offset Fetch WithIsolation

ParenthesedSelect

( Select )
         ::= '(' Select ')'

LateralView

LATERAL VIEW OUTER Function RelObjectNameWithoutStart AS RelObjectNameWithoutStart
         ::= 'LATERAL' 'VIEW' 'OUTER'? Function RelObjectNameWithoutStart? 'AS' RelObjectNameWithoutStart
Referenced by:

LateralViews

LateralView
         ::= LateralView+
Referenced by:

LateralSubSelect

LATERAL ( Select )
         ::= 'LATERAL' '(' Select ')'
Referenced by:

PlainSelect

K_SELECT STRAIGHT_JOIN Skip First ALL DISTINCT ON ( SelectItemsList ) UNIQUE SQL_CALC_FOUND_ROWS SQL_NO_CACHE SQL_CACHE Top SelectItemsList IntoClause FROM FromItem LateralViews JoinsList FINAL KSQLWindowClause WhereClause OracleHierarchicalQueryClause Having GroupByColumnReferences Having OrderByElements WINDOW RelObjectName AS windowDefinition , OrderByElements EMIT CHANGES LimitBy LimitWithOffset Offset LimitWithOffset Fetch WithIsolation FOR UPDATE OF Table Wait NOWAIT SKIP LOCKED OptimizeFor FOR XML PATH ( S_CHAR_LITERAL )
         ::= K_SELECT 'STRAIGHT_JOIN'? Skip? First? ( 'ALL' | 'DISTINCT' ( 'ON' '(' SelectItemsList ')' )? | 'UNIQUE' | 'SQL_CALC_FOUND_ROWS' | 'SQL_NO_CACHE' | 'SQL_CACHE' )? Top? SelectItemsList IntoClause? ( 'FROM' FromItem LateralViews? JoinsList? )? 'FINAL'? KSQLWindowClause? WhereClause? OracleHierarchicalQueryClause? Having? GroupByColumnReferences? Having? OrderByElements? ( 'WINDOW' RelObjectName 'AS' windowDefinition ( ',' RelObjectName 'AS' windowDefinition )* )? OrderByElements? ( 'EMIT' 'CHANGES' )? LimitBy? LimitWithOffset? Offset? LimitWithOffset? Fetch? WithIsolation? ( 'FOR' 'UPDATE' ( 'OF' Table )? Wait? ( 'NOWAIT' | 'SKIP' 'LOCKED' )? )? OptimizeFor? ( 'FOR' 'XML' 'PATH' '(' S_CHAR_LITERAL ')' )?
Referenced by:

SetOperationList

UNION ALL DISTINCT INTERSECT MINUS EXCEPT PlainSelect Values ParenthesedSelect OrderByElements LimitWithOffset Offset LimitWithOffset Fetch WithIsolation
         ::= ( ( 'UNION' ( 'ALL' | 'DISTINCT' )? | 'INTERSECT' | 'MINUS' | 'EXCEPT' ) ( PlainSelect | Values | ParenthesedSelect ) )+ OrderByElements? LimitWithOffset? Offset? LimitWithOffset? Fetch? WithIsolation?
Referenced by:

WithList

WITH WithItem ,
WithList ::= 'WITH' WithItem ( ',' WithItem )*
Referenced by:

WithItem

RECURSIVE RelObjectName ( SelectItemsList ) AS ParenthesedSelect
WithItem ::= 'RECURSIVE'? RelObjectName ( '(' SelectItemsList ')' )? 'AS' ParenthesedSelect
Referenced by:

SelectItemsList

SelectItem ,
         ::= SelectItem ( ',' SelectItem )*

SelectItem

* AllTableColumns Condition ConcatExpression Expression Alias
         ::= ( '*' | AllTableColumns | Condition | ConcatExpression | Expression ) Alias?
Referenced by:

AllTableColumns

Table . *
         ::= Table '.' '*'

Alias

AS RelObjectNameWithoutStart S_CHAR_LITERAL ( RelObjectName ColDataType , )

SQLServerHint

INDEX ( RelObjectName ) NOLOCK
         ::= 'INDEX' '(' RelObjectName ')'
           | 'NOLOCK'
Referenced by:

SQLServerHints

WITH ( SQLServerHint , )
         ::= 'WITH' '(' SQLServerHint ( ',' SQLServerHint )* ')'
Referenced by:

MySQLIndexHint

USE SHOW IGNORE FORCE INDEX KEY ( RelObjectNameWithoutValue , )
         ::= ( 'USE' | 'SHOW' | 'IGNORE' | 'FORCE' ) ( 'INDEX' | 'KEY' ) '(' RelObjectNameWithoutValue ( ',' RelObjectNameWithoutValue )* ')'
Referenced by:

FunctionItem

Function Alias
         ::= Function Alias?
Referenced by:

PivotForColumns

ParenthesedColumnList Column
         ::= ParenthesedColumnList
           | Column
Referenced by:

PivotFunctionItems

FunctionItem ,
         ::= FunctionItem ( ',' FunctionItem )*
Referenced by:

ExpressionListItem

ParenthesedExpressionList Alias
         ::= ParenthesedExpressionList Alias?
Referenced by:

PivotMultiInItems

ExpressionListItem ,
         ::= ExpressionListItem ( ',' ExpressionListItem )*
Referenced by:

Pivot

PIVOT ( PivotFunctionItems FOR PivotForColumns IN ( SelectItemsList PivotMultiInItems ) ) Alias
Pivot    ::= 'PIVOT' '(' PivotFunctionItems 'FOR' PivotForColumns 'IN' '(' ( SelectItemsList | PivotMultiInItems ) ')' ')' Alias?
Referenced by:

PivotXml

PIVOT XML ( PivotFunctionItems FOR PivotForColumns IN ( ANY Select SelectItemsList PivotMultiInItems ) )
PivotXml ::= 'PIVOT' 'XML' '(' PivotFunctionItems 'FOR' PivotForColumns 'IN' '(' ( 'ANY' | Select | SelectItemsList | PivotMultiInItems ) ')' ')'
Referenced by:

UnPivot

UNPIVOT INCLUDE EXCLUDE NULLS ( PivotForColumns FOR PivotForColumns IN ( SelectItemsList ) ) Alias
UnPivot  ::= 'UNPIVOT' ( ( 'INCLUDE' | 'EXCLUDE' ) 'NULLS' )? '(' PivotForColumns 'FOR' PivotForColumns 'IN' '(' SelectItemsList ')' ')' Alias?
Referenced by:

IntoClause

INTO Table ,
         ::= 'INTO' Table ( ',' Table )*
Referenced by:

ParenthesedFromItem

( FromItem JoinsList )
         ::= '(' FromItem JoinsList? ')'
Referenced by:

FromItem

TableFunction Table ParenthesedFromItem ParenthesedSelect Pivot UnPivot LateralSubSelect Alias UnPivot PivotXml Pivot MySQLIndexHint SQLServerHints

JoinsList

JoinerExpression
         ::= JoinerExpression+

JoinerExpression

GLOBAL NATURAL RIGHT FULL OUTER LEFT SEMI OUTER INNER CROSS JOIN , OUTER STRAIGHT_JOIN APPLY FromItem WITHIN ( JoinWindow ) ON Expression USING ( Column , )
         ::= 'GLOBAL'? 'NATURAL'? ( ( 'RIGHT' | 'FULL' )? 'OUTER'? | 'LEFT' ( 'SEMI' | 'OUTER' )? | 'INNER' | 'CROSS' ) ( 'JOIN' | ',' 'OUTER'? | 'STRAIGHT_JOIN' | 'APPLY' ) FromItem ( ( 'WITHIN' '(' JoinWindow ')' )? ( 'ON' Expression )+ | 'USING' '(' Column ( ',' Column )* ')' )?
Referenced by:

JoinWindow

S_LONG S_IDENTIFIER K_DATE_LITERAL , S_LONG S_IDENTIFIER K_DATE_LITERAL
         ::= S_LONG ( S_IDENTIFIER | K_DATE_LITERAL ) ( ',' S_LONG ( S_IDENTIFIER | K_DATE_LITERAL ) )?
Referenced by:

KSQLWindowClause

WINDOW HOPPING ( SIZE S_LONG S_IDENTIFIER , ADVANCE BY SESSION ( TUMBLING ( SIZE S_LONG S_IDENTIFIER )
         ::= 'WINDOW' ( 'HOPPING' '(' 'SIZE' S_LONG S_IDENTIFIER ',' 'ADVANCE' 'BY' | 'SESSION' '(' | 'TUMBLING' '(' 'SIZE' ) S_LONG S_IDENTIFIER ')'
Referenced by:

WhereClause

WHERE Expression
         ::= 'WHERE' Expression

OracleHierarchicalQueryClause

START WITH AndExpression CONNECT BY NOCYCLE CONNECT BY NOCYCLE AndExpression START WITH AndExpression
         ::= ( 'START' 'WITH' AndExpression 'CONNECT' 'BY' 'NOCYCLE'? | 'CONNECT' 'BY' 'NOCYCLE'? ( AndExpression 'START' 'WITH' )? ) AndExpression
Referenced by:

GroupByColumnReferences

GROUP BY GROUPING SETS ( GroupingSet , ) ExpressionList GROUPING SETS ( GroupingSet , )
         ::= 'GROUP' 'BY' ( 'GROUPING' 'SETS' '(' GroupingSet ( ',' GroupingSet )* ')' | ExpressionList ( 'GROUPING' 'SETS' '(' GroupingSet ( ',' GroupingSet )* ')' )? )
Referenced by:

GroupingSet

ParenthesedExpressionList SimpleExpression
         ::= ParenthesedExpressionList
           | SimpleExpression
Referenced by:

Having

HAVING Expression
Having   ::= 'HAVING' Expression
Referenced by:

OrderByElements

ORDER SIBLINGS BY OrderByElement ,
         ::= 'ORDER' 'SIBLINGS'? 'BY' OrderByElement ( ',' OrderByElement )*

OrderByElement

Expression ASC DESC NULLS FIRST LAST
         ::= Expression ( 'ASC' | 'DESC' )? ( 'NULLS' ( 'FIRST' | 'LAST' )? )?
Referenced by:

SimpleJdbcParameter

? S_LONG
         ::= '?' S_LONG?

SimpleJdbcNamedParameter

: RelObjectNameExt
         ::= ':' RelObjectNameExt
Referenced by:

LimitWithOffset

LIMIT Expression , Expression PlainLimit
         ::= 'LIMIT' Expression ',' Expression
           | PlainLimit

PlainLimit

LIMIT ParenthesedSelect Expression
         ::= 'LIMIT' ( ParenthesedSelect | Expression )

LimitBy

LimitWithOffset BY ExpressionList
Referenced by:

Offset

OFFSET Expression ROWS ROW
Offset   ::= 'OFFSET' Expression ( 'ROWS' | 'ROW' )?

Fetch

FETCH FIRST NEXT Expression ROWS ROW ONLY
Fetch    ::= 'FETCH' ( 'FIRST' | 'NEXT' ) Expression ( 'ROWS' | 'ROW' ) 'ONLY'

WithIsolation

WITH K_ISOLATION
         ::= 'WITH' K_ISOLATION

OptimizeFor

OPTIMIZE FOR S_LONG ROWS
         ::= 'OPTIMIZE' 'FOR' S_LONG 'ROWS'
Referenced by:

Top

TOP S_LONG SimpleJdbcParameter : S_IDENTIFIER ( AdditiveExpression ) PERCENT WITH TIES
Top      ::= 'TOP' ( S_LONG | SimpleJdbcParameter | ':' S_IDENTIFIER? | '(' AdditiveExpression ')' ) 'PERCENT'? 'WITH TIES'?
Referenced by:

Skip

SKIP S_LONG S_IDENTIFIER SimpleJdbcParameter
Skip     ::= 'SKIP' ( S_LONG | S_IDENTIFIER | SimpleJdbcParameter )
Referenced by:

First

FIRST LIMIT S_LONG S_IDENTIFIER SimpleJdbcParameter
First    ::= ( 'FIRST' | 'LIMIT' ) ( S_LONG | S_IDENTIFIER | SimpleJdbcParameter )
Referenced by:

Expression

XorExpression
         ::= XorExpression

XorExpression

OrExpression XOR
         ::= OrExpression ( 'XOR' OrExpression )*
Referenced by:

OrExpression

AndExpression OR
         ::= AndExpression ( 'OR' AndExpression )*
Referenced by:

AndExpression

Condition NOT ! ( XorExpression ) AND &&
         ::= ( Condition | ( 'NOT' | '!' )? '(' XorExpression ')' ) ( ( 'AND' | '&&' ) ( Condition | ( 'NOT' | '!' )? '(' XorExpression ')' ) )*

Condition

NOT ! RegularCondition SQLCondition
         ::= ( 'NOT' | '!' )? ( RegularCondition | SQLCondition )

OverlapsCondition

ParenthesedExpressionList OVERLAPS ParenthesedExpressionList
         ::= ParenthesedExpressionList 'OVERLAPS' ParenthesedExpressionList
Referenced by:

RegularCondition

PRIOR ComparisonItem ( + ) > < = OP_GREATERTHANEQUALS OP_MINORTHANEQUALS OP_NOTEQUALSSTANDARD OP_NOTEQUALSBANG @@ ~ NOT REGEXP RLIKE BINARY ~* !~ !~* @> <@ ? ?| ?& OP_CONCAT - -# <-> <#> PRIOR ComparisonItem ( + )
         ::= 'PRIOR'? ComparisonItem ( '(' '+' ')' )? ( '>' | '<' | '=' | OP_GREATERTHANEQUALS | OP_MINORTHANEQUALS | OP_NOTEQUALSSTANDARD | OP_NOTEQUALSBANG | '@@' | '~' | ( 'NOT'? 'REGEXP' | 'RLIKE' ) 'BINARY'? | '~*' | '!~' | '!~*' | '@>' | '<@' | '?' | '?|' | '?&' | OP_CONCAT | '-' | '-#' | '<->' | '<#>' ) 'PRIOR'? ComparisonItem ( '(' '+' ')' )?
Referenced by:

SQLCondition

ExistsExpression InExpression OverlapsCondition SimpleExpression Between MemberOfExpression IsNullExpression IsBooleanExpression LikeExpression IsDistinctExpression SimilarToExpression
         ::= ExistsExpression
           | InExpression
           | OverlapsCondition
Referenced by:

InExpression

SimpleExpression ( + ) NOT IN S_CHAR_LITERAL Function ParenthesedSelect ParenthesedExpressionList SimpleExpression
         ::= SimpleExpression ( '(' '+' ')' )? 'NOT'? 'IN' ( S_CHAR_LITERAL | Function | ParenthesedSelect | ParenthesedExpressionList | SimpleExpression )
Referenced by:

Between

NOT BETWEEN SimpleExpression AND SimpleExpression
Between  ::= 'NOT'? 'BETWEEN' SimpleExpression 'AND' SimpleExpression
Referenced by:

LikeExpression

NOT LIKE ILIKE SimpleExpression ESCAPE S_CHAR_LITERAL Expression
         ::= 'NOT'? ( 'LIKE' | 'ILIKE' ) SimpleExpression ( 'ESCAPE' ( S_CHAR_LITERAL | Expression ) )?
Referenced by:

SimilarToExpression

NOT SIMILAR TO SimpleExpression ESCAPE S_CHAR_LITERAL
         ::= 'NOT'? 'SIMILAR' 'TO' SimpleExpression ( 'ESCAPE' S_CHAR_LITERAL )?
Referenced by:

IsDistinctExpression

IS NOT DISTINCT FROM SimpleExpression
         ::= 'IS' 'NOT'? 'DISTINCT' 'FROM' SimpleExpression
Referenced by:

IsNullExpression

ISNULL IS NOT NULL
         ::= 'ISNULL'
           | 'IS' 'NOT'? 'NULL'
Referenced by:

IsBooleanExpression

IS NOT TRUE FALSE
         ::= 'IS' 'NOT'? ( 'TRUE' | 'FALSE' )
Referenced by:

ExistsExpression

EXISTS SimpleExpression
         ::= 'EXISTS' SimpleExpression
Referenced by:

MemberOfExpression

MEMBER OF Expression
         ::= 'MEMBER' 'OF' Expression
Referenced by:

ExpressionList

ComplexExpressionList SimpleExpressionList ParenthesedExpressionList
         ::= ComplexExpressionList
           | SimpleExpressionList
           | ParenthesedExpressionList

ParenthesedExpressionList

( ComplexExpressionList SimpleExpressionList )
         ::= '(' ( ComplexExpressionList | SimpleExpressionList )? ')'

SimpleExpressionList

SimpleExpression ,
         ::= SimpleExpression ( ',' SimpleExpression )*

ColumnList

Column ,
         ::= Column ( ',' Column )*

ParenthesedColumnList

( ColumnList )
         ::= '(' ColumnList ')'
Referenced by:

ComplexExpressionList

OracleNamedFunctionParameter Expression ,

NamedExpressionListExprFirst

SimpleExpression FROM IN PLACING SimpleExpression FOR FROM SimpleExpression FOR SimpleExpression
         ::= SimpleExpression ( 'FROM' | 'IN' | 'PLACING' ) SimpleExpression ( ( 'FOR' | 'FROM' ) SimpleExpression ( 'FOR' SimpleExpression )? )?

ComparisonItem

AnyComparisonExpression SimpleExpression ParenthesedExpressionList RowConstructor PrimaryExpression
         ::= AnyComparisonExpression
           | SimpleExpression
           | ParenthesedExpressionList
           | RowConstructor
           | PrimaryExpression
Referenced by:

AnyComparisonExpression

ANY SOME ALL Select
         ::= ( 'ANY' | 'SOME' | 'ALL' ) Select
Referenced by:

SimpleExpression

UserVariable = := ConcatExpression
         ::= ( UserVariable ( '=' | ':=' ) )? ConcatExpression

ConcatExpression

BitwiseAndOr OP_CONCAT
         ::= BitwiseAndOr ( OP_CONCAT BitwiseAndOr )*

BitwiseAndOr

AdditiveExpression | & << >>
         ::= AdditiveExpression ( ( '|' | '&' | '<<' | '>>' ) AdditiveExpression )*
Referenced by:

AdditiveExpression

MultiplicativeExpression + -
         ::= MultiplicativeExpression ( ( '+' | '-' ) MultiplicativeExpression )*
Referenced by:

MultiplicativeExpression

BitwiseXor * / DIV %
         ::= BitwiseXor ( ( '*' | '/' | 'DIV' | '%' ) BitwiseXor )*
Referenced by:

BitwiseXor

PrimaryExpression ^
         ::= PrimaryExpression ( '^' PrimaryExpression )*
Referenced by:

ArrayExpression

[ SimpleExpression : SimpleExpression ]
         ::= ( '[' SimpleExpression? ( ':' SimpleExpression? )? ']' )+
Referenced by:

PrimaryExpression

NOT ! + - ~ NULL CaseWhenExpression SimpleJdbcParameter JdbcNamedParameter UserVariable NumericBind ExtractExpression MySQLGroupConcat XMLSerializeExpr JsonExpression JsonFunction JsonAggregateFunction FullTextSearch Function AnalyticExpression IntervalExpression S_DOUBLE S_LONG S_HEX CastExpression CharacterPrimary K_TIME_KEY_EXPR CURRENT DateTimeLiteralExpression ARRAY ArrayConstructor NextValExpression ConnectByRootOperator ALL Column S_CHAR_LITERAL {d {t {ts S_CHAR_LITERAL } ParenthesedSelect ParenthesedExpressionList . RelObjectNameExt COLLATE S_IDENTIFIER IntervalExpressionWithoutInterval ArrayExpression :: ColDataType AT K_DATETIMELITERAL ZONE PrimaryExpression
         ::= ( 'NOT' | '!' )? ( '+' | '-' | '~' )? ( 'NULL' | CaseWhenExpression | SimpleJdbcParameter | JdbcNamedParameter | UserVariable | NumericBind | ExtractExpression | MySQLGroupConcat | XMLSerializeExpr | JsonExpression | JsonFunction | JsonAggregateFunction | FullTextSearch | Function AnalyticExpression? | IntervalExpression | S_DOUBLE | S_LONG | S_HEX | CastExpression | CharacterPrimary | K_TIME_KEY_EXPR | 'CURRENT' | DateTimeLiteralExpression | 'ARRAY' ArrayConstructor | NextValExpression | ConnectByRootOperator | 'ALL' | Column | S_CHAR_LITERAL | ( '{d' | '{t' | '{ts' ) S_CHAR_LITERAL '}' | ParenthesedSelect | ParenthesedExpressionList ( '.' RelObjectNameExt )? ) ( 'COLLATE' S_IDENTIFIER )? IntervalExpressionWithoutInterval? ArrayExpression? ( '::' ColDataType )* ( 'AT' K_DATETIMELITERAL 'ZONE' PrimaryExpression )*

ConnectByRootOperator

CONNECT_BY_ROOT Column
         ::= 'CONNECT_BY_ROOT' Column
Referenced by:

NextValExpression

K_NEXTVAL RelObjectNameList
         ::= K_NEXTVAL RelObjectNameList
Referenced by:

JdbcNamedParameter

: & IdentifierChain
         ::= ( ':' | '&' ) IdentifierChain

OracleNamedFunctionParameter

RelObjectNameExt2 => Expression
         ::= RelObjectNameExt2 '=>' Expression
Referenced by:

UserVariable

@ @@ IdentifierChain
         ::= ( '@' | '@@' ) IdentifierChain

NumericBind

: S_LONG
         ::= ':' S_LONG
Referenced by:

DateTimeLiteralExpression

K_DATETIMELITERAL S_CHAR_LITERAL
         ::= K_DATETIMELITERAL S_CHAR_LITERAL
Referenced by:

RangeExpression

: Expression
         ::= ':' Expression
Referenced by:

ArrayConstructor

[ Expression RangeExpression ArrayConstructor , ]
         ::= '[' ( ( Expression RangeExpression? | ArrayConstructor ) ( ',' ( Expression RangeExpression? | ArrayConstructor ) )* )? ']'

ParenthesedExpression

( PrimaryExpression )
         ::= '(' PrimaryExpression ')'
Referenced by:

JsonExpression

CaseWhenExpression SimpleJdbcParameter JdbcNamedParameter UserVariable JsonFunction JsonAggregateFunction FullTextSearch Function Column S_CHAR_LITERAL ParenthesedExpression ParenthesedSelect :: ColDataType -> ->> S_CHAR_LITERAL S_LONG #> #>> S_CHAR_LITERAL :: ColDataType -> ->> S_CHAR_LITERAL S_LONG #> #>> S_CHAR_LITERAL
         ::= ( CaseWhenExpression | SimpleJdbcParameter | JdbcNamedParameter | UserVariable | JsonFunction | JsonAggregateFunction | FullTextSearch | Function | Column | S_CHAR_LITERAL | ParenthesedExpression | ParenthesedSelect ) ( '::' ColDataType )* ( ( '->' | '->>' ) ( S_CHAR_LITERAL | S_LONG ) | ( '#>' | '#>>' ) S_CHAR_LITERAL )+ ( ( '::' ColDataType )+ ( ( '->' | '->>' ) ( S_CHAR_LITERAL | S_LONG ) | ( '#>' | '#>>' ) S_CHAR_LITERAL )* )*
Referenced by:

JsonFunction

JSON_OBJECT ( KEY S_CHAR_LITERAL : , VALUE Expression FORMAT JSON , KEY S_CHAR_LITERAL : , VALUE Expression FORMAT JSON NULL ABSENT ON NULL WITH WITHOUT UNIQUE KEYS JSON_ARRAY ( NULL ON NULL Expression FORMAT JSON , ABSENT ON NULL )
         ::= ( 'JSON_OBJECT' '(' ( 'KEY'? S_CHAR_LITERAL ( ( ':' | ',' | 'VALUE' ) Expression ( 'FORMAT' 'JSON' )? )? ( ',' 'KEY'? S_CHAR_LITERAL ( ':' | ',' | 'VALUE' ) Expression ( 'FORMAT' 'JSON' )? )* )? ( ( 'NULL' | 'ABSENT' ) 'ON' 'NULL' )? ( ( 'WITH' | 'WITHOUT' ) 'UNIQUE' 'KEYS' )? | 'JSON_ARRAY' '(' ( 'NULL' 'ON' 'NULL' | Expression ( 'FORMAT' 'JSON' )? ( ',' Expression ( 'FORMAT' 'JSON' )? )* )* ( 'ABSENT' 'ON' 'NULL' )? ) ')'

JsonAggregateFunction

JSON_OBJECTAGG ( KEY DT_ZONE S_DOUBLE S_LONG S_HEX S_CHAR_LITERAL S_IDENTIFIER S_QUOTED_IDENTIFIER : VALUE S_IDENTIFIER S_QUOTED_IDENTIFIER FORMAT JSON NULL ABSENT ON NULL WITH WITHOUT UNIQUE KEYS JSON_ARRAYAGG ( Expression FORMAT JSON OrderByElements NULL ABSENT ON NULL ) FILTER ( WHERE Expression ) OVER ( PARTITION BY ComplexExpressionList ( ComplexExpressionList ) OrderByElements WindowElement )
         ::= ( 'JSON_OBJECTAGG' '(' 'KEY'? ( DT_ZONE | S_DOUBLE | S_LONG | S_HEX | S_CHAR_LITERAL | S_IDENTIFIER | S_QUOTED_IDENTIFIER ) ( ':' | 'VALUE' ) ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) ( 'FORMAT' 'JSON' )? ( ( 'NULL' | 'ABSENT' ) 'ON' 'NULL' )? ( ( 'WITH' | 'WITHOUT' ) 'UNIQUE' 'KEYS' )? | 'JSON_ARRAYAGG' '(' Expression ( 'FORMAT' 'JSON' )? OrderByElements? ( ( 'NULL' | 'ABSENT' ) 'ON' 'NULL' )? ) ')' ( 'FILTER' '(' 'WHERE' Expression ')' )? ( 'OVER' '(' ( 'PARTITION' 'BY' ( ComplexExpressionList | '(' ComplexExpressionList ')' ) )? OrderByElements? WindowElement? ')' )?

IntervalExpression

INTERVAL - S_LONG S_DOUBLE S_CHAR_LITERAL SimpleJdbcParameter JdbcNamedParameter Function Column S_IDENTIFIER K_DATE_LITERAL
Referenced by:

IntervalExpressionWithoutInterval

K_DATE_LITERAL
         ::= K_DATE_LITERAL
Referenced by:

KeepExpression

KEEP ( S_IDENTIFIER FIRST LAST OrderByElements )
         ::= 'KEEP' '(' S_IDENTIFIER ( 'FIRST' | 'LAST' ) OrderByElements ')'
Referenced by:

windowFun

IGNORE NULLS OVER WITHIN GROUP RelObjectName windowDefinition OVER ( PARTITION BY ComplexExpressionList ( ComplexExpressionList ) )
         ::= ( ( 'IGNORE' 'NULLS' )? 'OVER' | 'WITHIN' 'GROUP' ) ( RelObjectName | windowDefinition ( 'OVER' '(' ( 'PARTITION' 'BY' ( ComplexExpressionList | '(' ComplexExpressionList ')' ) )? ')' )? )
Referenced by:

windowDefinition

( PARTITION BY ComplexExpressionList ( ComplexExpressionList ) OrderByElements WindowElement )
         ::= '(' ( 'PARTITION' 'BY' ( ComplexExpressionList | '(' ComplexExpressionList ')' ) )? OrderByElements? WindowElement? ')'
Referenced by:

AnalyticExpression

FILTER ( WHERE Expression ) windowFun windowFun
         ::= 'FILTER' '(' 'WHERE' Expression ')' windowFun?
           | windowFun
Referenced by:

WindowElement

ROWS RANGE BETWEEN WindowOffset AND WindowOffset
         ::= ( 'ROWS' | 'RANGE' ) ( 'BETWEEN' WindowOffset 'AND' )? WindowOffset

WindowOffset

UNBOUNDED SimpleExpression PRECEDING FOLLOWING CURRENT ROW
         ::= ( 'UNBOUNDED' | SimpleExpression ) ( 'PRECEDING' | 'FOLLOWING' )
           | 'CURRENT' 'ROW'
Referenced by:

ExtractExpression

EXTRACT ( RelObjectName S_CHAR_LITERAL FROM SimpleExpression )
         ::= 'EXTRACT' '(' ( RelObjectName | S_CHAR_LITERAL ) 'FROM' SimpleExpression ')'
Referenced by:

CastExpression

CAST SAFE_CAST TRY_CAST ( SimpleExpression AS ROW ( ColumnDefinition , ) ColDataType )
         ::= ( 'CAST' | 'SAFE_CAST' | 'TRY_CAST' ) '(' SimpleExpression 'AS' ( 'ROW' '(' ColumnDefinition ( ',' ColumnDefinition )* ')' | ColDataType ) ')'
Referenced by:

CaseWhenExpression

CASE Expression WhenThenSearchCondition ELSE ( CaseWhenExpression ) CaseWhenExpression Expression SimpleExpression END
         ::= 'CASE' Expression? WhenThenSearchCondition+ ( 'ELSE' ( '(' CaseWhenExpression ')' | CaseWhenExpression | Expression | SimpleExpression ) )? 'END'

WhenThenSearchCondition

WHEN Expression THEN Expression SimpleExpression
         ::= 'WHEN' Expression 'THEN' ( Expression | SimpleExpression )
Referenced by:

RowConstructor

ROW ParenthesedExpressionList
         ::= 'ROW' ParenthesedExpressionList
Referenced by:

VariableExpression

UserVariable = SimpleExpression
         ::= UserVariable '=' SimpleExpression
Not referenced by any.

Execute

EXEC EXECUTE CALL RelObjectNameList ExpressionList
Execute  ::= ( 'EXEC' | 'EXECUTE' | 'CALL' ) RelObjectNameList ExpressionList?
Referenced by:

FullTextSearch

MATCH ( ColumnList ) AGAINST ( S_CHAR_LITERAL SimpleJdbcParameter SimpleJdbcNamedParameter IN NATURAL LANGUAGE MODE IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION IN BOOLEAN MODE WITH QUERY EXPANSION )
         ::= 'MATCH' '(' ColumnList ')' 'AGAINST' '(' ( S_CHAR_LITERAL | SimpleJdbcParameter | SimpleJdbcNamedParameter ) ( 'IN NATURAL LANGUAGE MODE' | 'IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION' | 'IN BOOLEAN MODE' | 'WITH QUERY EXPANSION' )? ')'

Function

{ FN InternalFunction } SpecialStringFunctionWithNamedParameters InternalFunction
Function ::= '{' 'FN' InternalFunction '}'
           | InternalFunction

SpecialStringFunctionWithNamedParameters

K_STRING_FUNCTION_NAME ( NamedExpressionListExprFirst ExpressionList )
Referenced by:

InternalFunction

RelObjectNameList ( DISTINCT ALL UNIQUE * AllTableColumns ExpressionList OrderByElements Select IGNORE NULLS ) . Function Column KeepExpression
         ::= RelObjectNameList '(' ( ( 'DISTINCT' | 'ALL' | 'UNIQUE' )? ( '*' | AllTableColumns | ExpressionList OrderByElements? | Select ) )? ( 'IGNORE' 'NULLS' )? ')' ( '.' ( Function | Column ) )? KeepExpression?
Referenced by:

XMLSerializeExpr

XMLSERIALIZE ( XMLAGG ( XMLTEXT ( SimpleExpression ) OrderByElements ) AS ColDataType )
         ::= 'XMLSERIALIZE' '(' 'XMLAGG' '(' 'XMLTEXT' '(' SimpleExpression ')' OrderByElements? ')' 'AS' ColDataType ')'
Referenced by:

MySQLGroupConcat

GROUP_CONCAT ( DISTINCT ExpressionList OrderByElements SEPARATOR S_CHAR_LITERAL )
         ::= 'GROUP_CONCAT' '(' 'DISTINCT'? ExpressionList OrderByElements? ( 'SEPARATOR' S_CHAR_LITERAL )? ')'
Referenced by:

TableFunction

Function Alias
         ::= Function Alias?
Referenced by:

ColumnNamesWithParamsList

( RelObjectName CreateParameter , )
         ::= '(' RelObjectName CreateParameter? ( ',' RelObjectName CreateParameter? )* ')'
Referenced by:

Index

RelObjectNameList

CreateIndex

CreateParameter INDEX Index ON Table USING S_IDENTIFIER ColumnNamesWithParamsList CreateParameter
         ::= CreateParameter? 'INDEX' Index 'ON' Table ( 'USING' S_IDENTIFIER )? ColumnNamesWithParamsList CreateParameter*
Referenced by:

ColumnDefinition

RelObjectName ColDataType CreateParameter

CreateSchema

SCHEMA S_IDENTIFIER S_QUOTED_IDENTIFIER AUTHORIZATION S_IDENTIFIER S_QUOTED_IDENTIFIER PathSpecification CREATE CreateTable CreateView
         ::= 'SCHEMA' ( S_IDENTIFIER | S_QUOTED_IDENTIFIER )? ( 'AUTHORIZATION' ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) )? PathSpecification? ( 'CREATE' CreateTable | CreateView )*
Referenced by:

PathSpecification

PATH S_IDENTIFIER S_QUOTED_IDENTIFIER ,
         ::= 'PATH' ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) ( ',' ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) )*
Referenced by:

CreateTable

UNLOGGED GLOBAL CreateParameter TABLE IF NOT EXISTS Table ( ColumnDefinition , INDEX UNIQUE FULLTEXT KEY RelObjectName ColumnNamesWithParamsList CreateParameter CONSTRAINT RelObjectName PRIMARY KEY UNIQUE KEY ColumnNamesWithParamsList CreateParameter FOREIGN KEY ColumnNamesWithParamsList REFERENCES Table ColumnsNamesList ON DELETE UPDATE Action ON DELETE UPDATE Action CHECK ( Expression ) EXCLUDE WHERE ( Expression ) ColumnDefinition RelObjectName , ) CreateParameter RowMovement AS Select LIKE ( Table ) Table , SpannerInterleaveIn
         ::= 'UNLOGGED'? 'GLOBAL'? CreateParameter* 'TABLE' ( 'IF' 'NOT' 'EXISTS' )? Table ( '(' ( RelObjectName ( ',' RelObjectName )* | ColumnDefinition ( ',' ( ( 'INDEX' | 'UNIQUE'? 'FULLTEXT'? 'KEY' ) RelObjectName ColumnNamesWithParamsList CreateParameter* | ( 'CONSTRAINT' RelObjectName )? ( ( 'PRIMARY' 'KEY' | 'UNIQUE' 'KEY'? ) ColumnNamesWithParamsList CreateParameter* | 'FOREIGN' 'KEY' ColumnNamesWithParamsList 'REFERENCES' Table ColumnsNamesList ( 'ON' ( 'DELETE' | 'UPDATE' ) Action )? ( 'ON' ( 'DELETE' | 'UPDATE' ) Action )? | 'CHECK' ( '(' Expression ')' )* ) | 'EXCLUDE' 'WHERE' ( '(' Expression ')' )* | ColumnDefinition ) )* ) ')' )? CreateParameter* RowMovement? ( 'AS' Select )? ( 'LIKE' ( '(' Table ')' | Table ) )? ( ',' SpannerInterleaveIn )?
Referenced by:

SpannerInterleaveIn

INTERLEAVE IN PARENT Table ON DELETE NO ACTION CASCADE
         ::= 'INTERLEAVE' 'IN' 'PARENT' Table ( 'ON' 'DELETE' ( 'NO' 'ACTION' | 'CASCADE' ) )?
Referenced by:

ColDataType

ARRAY < ColDataType > BYTES STRING JSON ( S_LONG S_IDENTIFIER ) CHARACTER BIT VARYING DOUBLE PRECISION S_IDENTIFIER S_QUOTED_IDENTIFIER K_DATETIMELITERAL K_DATE_LITERAL XML INTERVAL DT_ZONE CHAR SET BINARY JSON STRING . S_IDENTIFIER S_QUOTED_IDENTIFIER UNSIGNED SIGNED S_IDENTIFIER ( S_LONG BYTE CHAR S_CHAR_LITERAL S_IDENTIFIER CHAR , ) [ S_LONG ] CHARACTER SET S_IDENTIFIER BINARY
         ::= ( 'ARRAY' '<' ColDataType '>' | ( 'BYTES' | 'STRING' | 'JSON' ) '(' ( S_LONG | S_IDENTIFIER ) ')' | ( 'CHARACTER' | 'BIT' ) 'VARYING'? | 'DOUBLE' 'PRECISION'? | ( S_IDENTIFIER | S_QUOTED_IDENTIFIER | K_DATETIMELITERAL | K_DATE_LITERAL | 'XML' | 'INTERVAL' | DT_ZONE | 'CHAR' | 'SET' | 'BINARY' | 'JSON' | 'STRING' ) ( '.' ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) )? | ( 'UNSIGNED' | 'SIGNED' ) S_IDENTIFIER? ) ( '(' ( ( S_LONG ( 'BYTE' | 'CHAR' )? | S_CHAR_LITERAL | S_IDENTIFIER | 'CHAR' ) ','? )* ')' )? ( '[' S_LONG? ']' )* ( 'CHARACTER' 'SET' ( S_IDENTIFIER | 'BINARY' ) )?

Analyze

ANALYZE Table
Analyze  ::= 'ANALYZE' Table
Referenced by:

CreateView

NO FORCE TEMP TEMPORARY MATERIALIZED VIEW Table AUTO REFRESH YES NO IF NOT EXISTS ColumnsNamesList AS Select WITH READ ONLY
         ::= ( 'NO'? 'FORCE' )? ( 'TEMP' | 'TEMPORARY' )? 'MATERIALIZED'? 'VIEW' Table ( 'AUTO' 'REFRESH' ( 'YES' | 'NO' ) )? ( 'IF' 'NOT' 'EXISTS' )? ColumnsNamesList? 'AS' Select ( 'WITH' 'READ' 'ONLY' )?
Referenced by:

Action

CASCADE RESTRICT NO ACTION SET NULL DEFAULT
Action   ::= 'CASCADE'
           | 'RESTRICT'
           | 'NO' 'ACTION'
           | 'SET' ( 'NULL' | 'DEFAULT' )

AlterView

VIEW Table ColumnsNamesList AS Select
         ::= 'VIEW' Table ColumnsNamesList? 'AS' Select
Referenced by:

CreateParameter

K_NEXTVAL ( S_CHAR_LITERAL :: ColDataType ) S_IDENTIFIER S_QUOTED_IDENTIFIER . S_IDENTIFIER S_QUOTED_IDENTIFIER USING INDEX TABLESPACE RelObjectName S_CHAR_LITERAL NULL NOT PRIMARY FOREIGN REFERENCES KEY STORED ON COMMIT DROP ROWS UNIQUE CASCADE DELETE UPDATE CONSTRAINT WITH EXCLUDE WHERE UNSIGNED TEMP TEMPORARY PARTITION BY IN TYPE COMMENT USING COLLATE ASC DESC TRUE FALSE PARALLEL BINARY START K_TIME_KEY_EXPR = DEFAULT AS CHECK ( Expression ) + - S_LONG S_DOUBLE AList CHARACTER SET ARRAY ArrayConstructor :: ColDataType
         ::= K_NEXTVAL '(' S_CHAR_LITERAL '::' ColDataType ')'
           | ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) ( '.' ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) )?
           | ( 'USING' 'INDEX' )? 'TABLESPACE' RelObjectName
           | S_CHAR_LITERAL
           | 'NULL'
           | 'NOT'
           | 'PRIMARY'
           | 'FOREIGN'
           | 'REFERENCES'
           | 'KEY'
           | 'STORED'
           | 'ON'
           | 'COMMIT'
           | 'DROP'
           | 'ROWS'
           | 'UNIQUE'
           | 'CASCADE'
           | 'DELETE'
           | 'UPDATE'
           | 'CONSTRAINT'
           | 'WITH'
           | 'EXCLUDE'
           | 'WHERE'
           | 'UNSIGNED'
           | 'TEMP'
           | 'TEMPORARY'
           | 'PARTITION'
           | 'BY'
           | 'IN'
           | 'TYPE'
           | 'COMMENT'
           | 'USING'
           | 'COLLATE'
           | 'ASC'
           | 'DESC'
           | 'TRUE'
           | 'FALSE'
           | 'PARALLEL'
           | 'BINARY'
           | 'START'
           | K_TIME_KEY_EXPR
           | '='
           | ( 'DEFAULT' | 'AS' | 'CHECK' ) ( '(' Expression ')' )?
           | ( '+' | '-' )? S_LONG
           | S_DOUBLE
           | AList
           | 'CHARACTER' 'SET'
           | 'ARRAY' ArrayConstructor
           | '::' ColDataType

RowMovement

ENABLE DISABLE ROW MOVEMENT
         ::= ( 'ENABLE' | 'DISABLE' ) 'ROW' 'MOVEMENT'
Referenced by:

AList

( S_LONG S_DOUBLE S_CHAR_LITERAL RelObjectNameWithoutValue , = )
AList    ::= '(' ( ( S_LONG | S_DOUBLE | S_CHAR_LITERAL | RelObjectNameWithoutValue ) ( ',' | '=' )? )* ')'
Referenced by:

ColumnsNamesListItem

RelObjectName ( S_LONG )
         ::= RelObjectName ( '(' S_LONG ')' )?

ColumnsNamesList

( ColumnsNamesListItem , )
         ::= '(' ColumnsNamesListItem ( ',' ColumnsNamesListItem )* ')'

FuncArgsListItem

RelObjectName RelObjectName ( S_LONG )
         ::= RelObjectName RelObjectName? ( '(' S_LONG ')' )?
Referenced by:

FuncArgsList

( FuncArgsListItem , )
         ::= '(' ( FuncArgsListItem ( ',' FuncArgsListItem )* )? ')'
Referenced by:

Drop

DROP MATERIALIZED S_IDENTIFIER TEMPORARY TABLE INDEX VIEW SCHEMA SEQUENCE FUNCTION IF EXISTS Table FuncArgsList S_IDENTIFIER CASCADE RESTRICT ON
Drop     ::= 'DROP' 'MATERIALIZED'? ( S_IDENTIFIER | 'TEMPORARY'? 'TABLE' | 'INDEX' | 'VIEW' | 'SCHEMA' | 'SEQUENCE' | 'FUNCTION' ) ( 'IF' 'EXISTS' )? Table FuncArgsList? ( S_IDENTIFIER | 'CASCADE' | 'RESTRICT' | 'ON' )*
Referenced by:

Truncate

TRUNCATE TABLE ONLY Table CASCADE
Truncate ::= 'TRUNCATE' 'TABLE'? 'ONLY'? Table 'CASCADE'?
Referenced by:

AlterExpressionColumnDataType

RelObjectName TYPE ColDataType CreateParameter
         ::= RelObjectName 'TYPE'? ColDataType CreateParameter*
Referenced by:

AlterExpressionColumnDropNotNull

RelObjectName DROP NOT NULL
         ::= RelObjectName 'DROP' 'NOT'? 'NULL'
Referenced by:

AlterExpressionColumnDropDefault

RelObjectName DROP DEFAULT
         ::= RelObjectName 'DROP' 'DEFAULT'
Referenced by:

AlterExpressionConstraintState

NOT DEFERRABLE VALIDATE NOVALIDATE ENABLE DISABLE
         ::= ( 'NOT'? 'DEFERRABLE' | 'VALIDATE' | 'NOVALIDATE' | 'ENABLE' | 'DISABLE' )*
Referenced by:

AlterExpression

ADD ALTER MODIFY PRIMARY KEY KEY INDEX RelObjectName ColumnsNamesList AlterExpressionConstraintState UNIQUE KEY INDEX S_IDENTIFIER S_QUOTED_IDENTIFIER ColumnsNamesList USING RelObjectName COLUMN ( AlterExpressionColumnDataType , ) AlterExpressionColumnDataType AlterExpressionColumnDropNotNull AlterExpressionColumnDropDefault ( AlterExpressionColumnDataType , ) FOREIGN KEY ColumnsNamesList REFERENCES Table ColumnsNamesList ON DELETE UPDATE Action ON DELETE UPDATE Action CONSTRAINT RelObjectName FOREIGN KEY ColumnsNamesList REFERENCES Table ColumnsNamesList ON DELETE UPDATE Action ON DELETE UPDATE Action KEY ColumnsNamesList AlterExpressionConstraintState PRIMARY KEY UNIQUE KEY INDEX ColumnsNamesList AlterExpressionConstraintState USING RelObjectName CHECK ( Expression ) RelObjectName COMMENT S_CHAR_LITERAL CHANGE COLUMN S_IDENTIFIER S_QUOTED_IDENTIFIER AlterExpressionColumnDataType DROP ColumnsNamesList COLUMN IF EXISTS S_IDENTIFIER S_QUOTED_IDENTIFIER INVALIDATE CASCADE CONSTRAINTS INDEX S_IDENTIFIER S_QUOTED_IDENTIFIER UNIQUE FOREIGN KEY ColumnsNamesList PRIMARY KEY CONSTRAINT IF EXISTS S_IDENTIFIER S_QUOTED_IDENTIFIER CASCADE RESTRICT ALGORITHM = RelObjectName RENAME COLUMN S_IDENTIFIER S_QUOTED_IDENTIFIER TO S_IDENTIFIER S_QUOTED_IDENTIFIER COMMENT S_CHAR_LITERAL captureRest
         ::= ( 'ADD' | 'ALTER' | 'MODIFY' ) ( ( ( 'PRIMARY' 'KEY' | ( 'KEY' | 'INDEX' ) RelObjectName ) ColumnsNamesList AlterExpressionConstraintState | 'UNIQUE' ( ( 'KEY' | 'INDEX' ) ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) )? ColumnsNamesList ) ( 'USING' RelObjectName )? | 'COLUMN'? ( '(' AlterExpressionColumnDataType ( ',' AlterExpressionColumnDataType )* ')' | AlterExpressionColumnDataType | AlterExpressionColumnDropNotNull | AlterExpressionColumnDropDefault ) | '(' AlterExpressionColumnDataType ( ',' AlterExpressionColumnDataType )* ')' | 'FOREIGN' 'KEY' ColumnsNamesList 'REFERENCES' Table ColumnsNamesList? ( 'ON' ( 'DELETE' | 'UPDATE' ) Action )? ( 'ON' ( 'DELETE' | 'UPDATE' ) Action )? | 'CONSTRAINT' RelObjectName ( ( 'FOREIGN' 'KEY' ColumnsNamesList 'REFERENCES' Table ColumnsNamesList? ( 'ON' ( 'DELETE' | 'UPDATE' ) Action )? ( 'ON' ( 'DELETE' | 'UPDATE' ) Action )? | 'KEY' ColumnsNamesList ) AlterExpressionConstraintState | ( 'PRIMARY' 'KEY' | 'UNIQUE' ( 'KEY' | 'INDEX' )? ) ColumnsNamesList AlterExpressionConstraintState ( 'USING' RelObjectName )? | 'CHECK' ( '(' Expression ')' )* ) | RelObjectName 'COMMENT' S_CHAR_LITERAL )
           | 'CHANGE' 'COLUMN'? ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) AlterExpressionColumnDataType
           | 'DROP' ( ( ColumnsNamesList | 'COLUMN'? ( 'IF' 'EXISTS' )? ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) ) 'INVALIDATE'? ( 'CASCADE' 'CONSTRAINTS'? )? | 'INDEX' ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) | ( ( 'UNIQUE' | 'FOREIGN' 'KEY' ) ColumnsNamesList | 'PRIMARY' 'KEY' | 'CONSTRAINT' ( 'IF' 'EXISTS' )? ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) ) ( 'CASCADE' | 'RESTRICT' )? )
           | 'ALGORITHM' '='? RelObjectName
           | 'RENAME' ( 'COLUMN'? ( S_IDENTIFIER | S_QUOTED_IDENTIFIER ) )? 'TO' ( S_IDENTIFIER | S_QUOTED_IDENTIFIER )
           | 'COMMENT' S_CHAR_LITERAL
           | captureRest
Referenced by:

Alter

ALTER AlterTable AlterSession AlterView AlterSystemStatement AlterSequence captureRest REPLACE AlterView captureRest
           | 'REPLACE' ( AlterView | captureRest )
Referenced by:

AlterTable

TABLE ONLY IF EXISTS Table AlterExpression ,
         ::= 'TABLE' 'ONLY'? ( 'IF' 'EXISTS' )? Table AlterExpression ( ',' AlterExpression )*
Referenced by:

AlterSession

SESSION ADVISE COMMIT ROLLBACK NOTHING CLOSE DATABASE LINK ENABLE DISABLE COMMIT IN PROCEDURE GUARD PARALLEL DML DDL QUERY RESUMABLE FORCE PARALLEL DML DDL QUERY SET S_CHAR_LITERAL S_IDENTIFIER = S_LONG PARALLEL
         ::= 'SESSION' ( 'ADVISE' ( 'COMMIT' | 'ROLLBACK' | 'NOTHING' ) | 'CLOSE' 'DATABASE' 'LINK' | ( 'ENABLE' | 'DISABLE' ) ( 'COMMIT' 'IN' 'PROCEDURE' | 'GUARD' | 'PARALLEL' ( 'DML' | 'DDL' | 'QUERY' ) | 'RESUMABLE' ) | 'FORCE' 'PARALLEL' ( 'DML' | 'DDL' | 'QUERY' ) | 'SET' ) ( S_CHAR_LITERAL | S_IDENTIFIER | '=' | S_LONG | 'PARALLEL' )*
Referenced by:

AlterSystemStatement

SYSTEM ARCHIVE LOG CHECKPOINT DUMP ACTIVE SESSION HISTORY ENABLE DISABLE DISTRIBUTED RECOVERY RESTRICTED SESSION FLUSH DISCONNECT SESSION KILL SESSION SWITCH SUSPEND RESUME QUIESCE RESTRICTED UNQUIESCE SHUTDOWN REGISTER SET RESET captureRest
         ::= 'SYSTEM' ( 'ARCHIVE' 'LOG' | 'CHECKPOINT' | 'DUMP' 'ACTIVE' 'SESSION' 'HISTORY' | ( 'ENABLE' | 'DISABLE' ) ( 'DISTRIBUTED RECOVERY' | 'RESTRICTED SESSION' ) | 'FLUSH' | 'DISCONNECT' 'SESSION' | 'KILL SESSION' | 'SWITCH' | 'SUSPEND' | 'RESUME' | 'QUIESCE' 'RESTRICTED' | 'UNQUIESCE' | 'SHUTDOWN' | 'REGISTER' | 'SET' | 'RESET' ) captureRest
Referenced by:

Wait

WAIT S_LONG
Wait     ::= 'WAIT' S_LONG
Referenced by:

SavepointStatement

SAVEPOINT S_IDENTIFIER
         ::= 'SAVEPOINT' S_IDENTIFIER
Referenced by:

RollbackStatement

ROLLBACK WORK TO SAVEPOINT S_IDENTIFIER FORCE S_CHAR_LITERAL
         ::= 'ROLLBACK' 'WORK'? ( 'TO' 'SAVEPOINT'? S_IDENTIFIER | 'FORCE' S_CHAR_LITERAL )?
Referenced by:

Comment

COMMENT ON TABLE VIEW Table COLUMN Column IS S_CHAR_LITERAL
Comment  ::= 'COMMENT' 'ON' ( ( 'TABLE' | 'VIEW' ) Table | 'COLUMN' Column ) 'IS' S_CHAR_LITERAL
Referenced by:

Grant

GRANT readGrantTypes , ON RelObjectNameList S_IDENTIFIER TO UsersList
Grant    ::= 'GRANT' ( ( readGrantTypes ( ',' readGrantTypes )* )? 'ON' RelObjectNameList | S_IDENTIFIER ) 'TO' UsersList
Referenced by:

UsersList

RelObjectName , ColumnsNamesListItem
         ::= RelObjectName ( ',' ColumnsNamesListItem )*
Referenced by:

readGrantTypes

K_SELECT INSERT UPDATE DELETE EXECUTE ALTER DROP
         ::= K_SELECT
           | 'INSERT'
           | 'UPDATE'
           | 'DELETE'
           | 'EXECUTE'
           | 'ALTER'
           | 'DROP'
Referenced by:

Sequence

RelObjectNameList

SequenceParameters

INCREMENT BY START WITH MAXVALUE MINVALUE CACHE S_LONG RESTART WITH S_LONG NOMAXVALUE NOMINVALUE NOCYCLE CYCLE NOCACHE ORDER NOORDER KEEP NOKEEP SESSION GLOBAL
         ::= ( ( 'INCREMENT' 'BY' | 'START' 'WITH' | 'MAXVALUE' | 'MINVALUE' | 'CACHE' ) S_LONG | 'RESTART' ( 'WITH' S_LONG )? | 'NOMAXVALUE' | 'NOMINVALUE' | 'NOCYCLE' | 'CYCLE' | 'NOCACHE' | 'ORDER' | 'NOORDER' | 'KEEP' | 'NOKEEP' | 'SESSION' | 'GLOBAL' )*

CreateSequence

SEQUENCE Sequence SequenceParameters
         ::= 'SEQUENCE' Sequence SequenceParameters
Referenced by:

AlterSequence

SEQUENCE Sequence SequenceParameters
         ::= 'SEQUENCE' Sequence SequenceParameters
Referenced by:

Create

CREATE OR REPLACE CreateFunctionStatement CreateSchema CreateSequence CreateSynonym CreateTable CreateView TRIGGER DOMAIN captureRest CreateIndex
Create   ::= 'CREATE' ( 'OR' 'REPLACE' )? ( CreateFunctionStatement | CreateSchema | CreateSequence | CreateSynonym | CreateTable | CreateView | ( 'TRIGGER' | 'DOMAIN' )? captureRest | CreateIndex )
Referenced by:

CreateFunctionStatement

FUNCTION PROCEDURE captureFunctionBody
         ::= ( 'FUNCTION' | 'PROCEDURE' ) captureFunctionBody
Referenced by:

CreateSynonym

PUBLIC SYNONYM Synonym FOR RelObjectNameList
         ::= 'PUBLIC'? 'SYNONYM' Synonym 'FOR' RelObjectNameList
Referenced by:

Synonym

RelObjectNameList
Referenced by:

UnsupportedStatement

captureUnsupportedStatementDeclaration
Referenced by:

IdentifierChain

RelObjectNameExt2 .
         ::= RelObjectNameExt2 ( '.' RelObjectNameExt2 )*

CharacterPrimary

TranscodingFunction TrimFunction
         ::= TranscodingFunction
           | TrimFunction
Referenced by:

TranscodingFunction

CONVERT ( Expression USING IdentifierChain )
         ::= 'CONVERT' '(' Expression 'USING' IdentifierChain ')'
Referenced by:

TrimFunction

TRIM ( LEADING TRAILING BOTH Expression , FROM Expression )
         ::= 'TRIM' '(' ( 'LEADING' | 'TRAILING' | 'BOTH' )? Expression? ( ( ',' | 'FROM' ) Expression )? ')'
Referenced by:

WHITESPACE

[#x9] [#xD] [#xA]
         ::= [ #x9#xD#xA]

K_DATETIMELITERAL

DATE TIME TIMESTAMP TIMESTAMPTZ
         ::= 'DATE'
           | 'TIME'
           | 'TIMESTAMP'
           | 'TIMESTAMPTZ'

K_DATE_LITERAL

YEAR MONTH DAY HOUR MINUTE SECOND
         ::= 'YEAR'
           | 'MONTH'
           | 'DAY'
           | 'HOUR'
           | 'MINUTE'
           | 'SECOND'

K_ISOLATION

UR RS RR CS
         ::= 'UR'
           | 'RS'
           | 'RR'
           | 'CS'

K_NEXTVAL

NEXTVAL FOR NEXT VALUE FOR
         ::= 'NEXTVAL' ( ' '+ 'FOR' )?
           | 'NEXT' ' '+ 'VALUE' ' '+ 'FOR'

K_SELECT

SELECT SEL
K_SELECT ::= 'SELECT'
           | 'SEL'

K_TIME_KEY_EXPR

CURRENT _ TIMESTAMP TIME DATE ()
         ::= 'CURRENT' ( '_' | ' '+ ) ( 'TIMESTAMP' | 'TIME' | 'DATE' ) '()'?

K_STRING_FUNCTION_NAME

SUBSTR SUBSTRING TRIM POSITION OVERLAY
         ::= 'SUBSTR'
           | 'SUBSTRING'
           | 'TRIM'
           | 'POSITION'
           | 'OVERLAY'

ST_SEMICOLON

; [#xA] / [#xA] [#xA] go
         ::= ';'
           | #xA ( [/#xA] #xA | 'go' )
Referenced by:

OP_GREATERTHANEQUALS

> WHITESPACE =
         ::= '>' WHITESPACE* '='
Referenced by:

OP_MINORTHANEQUALS

< WHITESPACE =
         ::= '<' WHITESPACE* '='
Referenced by:

OP_NOTEQUALSSTANDARD

< WHITESPACE >
         ::= '<' WHITESPACE* '>'
Referenced by:

OP_NOTEQUALSBANG

! WHITESPACE =
         ::= '!' WHITESPACE* '='
Referenced by:

OP_CONCAT

| WHITESPACE |
         ::= '|' WHITESPACE* '|'

DT_ZONE

K_DATETIMELITERAL WHITESPACE ( S_LONG ) WHITESPACE WITH WITHOUT WHITESPACE LOCAL WHITESPACE TIME WHITESPACE ZONE
DT_ZONE  ::= K_DATETIMELITERAL WHITESPACE* ( '(' S_LONG ')' )? WHITESPACE* ( 'WITH' | 'WITHOUT' ) WHITESPACE+ ( 'LOCAL' WHITESPACE+ )? 'TIME' WHITESPACE+ 'ZONE'

S_DOUBLE

S_LONG . S_LONG e E + [#x2D] S_LONG S_LONG . e E + [#x2D] S_LONG e E + [#x2D] S_LONG
S_DOUBLE ::= S_LONG? '.' S_LONG ( [eE] [+#x2D]? S_LONG )?
           | S_LONG ( '.' ( [eE] [+#x2D]? S_LONG )? | [eE] [+#x2D]? S_LONG )

S_LONG

DIGIT
S_LONG   ::= DIGIT+

DIGIT

[0-9]
DIGIT    ::= [0-9]
Referenced by:

S_HEX

x' HEX_VALUE ' 0x HEX_VALUE
S_HEX    ::= "x'" HEX_VALUE+ "'"
           | '0x' HEX_VALUE+

HEX_VALUE

[0-9] [A-F]
         ::= [0-9A-F]
Referenced by:

LINE_COMMENT

-- // [^#xD#xA]
         ::= ( '--' | '//' ) [^#xD#xA]*
Not referenced by any.

MULTI_LINE_COMMENT

/* [^*] * [^*] [^*/] /
         ::= '/*' [^*]* '*' ( ( [^*/] [^*]* )? '*' )* '/'
Not referenced by any.

S_IDENTIFIER

LETTER PART_LETTER
         ::= LETTER PART_LETTER*

LETTER

UnicodeIdentifierStart Nd $ _ [#x23]
           | Nd
           | [$_#x23]
Referenced by:

PART_LETTER

UnicodeIdentifierStart UnicodeIdentifierExtend $ _ @ [#x23]
         ::= UnicodeIdentifierStart
           | UnicodeIdentifierExtend
           | [$_@#x23]
Referenced by:

UnicodeIdentifierStart

[#xB7] Ll Lm Lo Lt Lu Nl CJK
         ::= #xB7
           | Ll
           | Lm
           | Lo
           | Lt
           | Lu
           | Nl
           | CJK
Referenced by:

Ll

[a-z] [#xB5] [#xDF-#xF6] [#xF8-#xFF] [#x101] [#x103] [#x105] [#x107] [#x109] [#x10B] [#x10D] [#x10F] [#x111] [#x113] [#x115] [#x117] [#x119] [#x11B] [#x11D] [#x11F] [#x121] [#x123] [#x125] [#x127] [#x129] [#x12B] [#x12D] [#x12F] [#x131] [#x133] [#x135] [#x137-#x138] [#x13A] [#x13C] [#x13E] [#x140] [#x142] [#x144] [#x146] [#x148-#x149] [#x14B] [#x14D] [#x14F] [#x151] [#x153] [#x155] [#x157] [#x159] [#x15B] [#x15D] [#x15F] [#x161] [#x163] [#x165] [#x167] [#x169] [#x16B] [#x16D] [#x16F] [#x171] [#x173] [#x175] [#x177] [#x17A] [#x17C] [#x17E-#x180] [#x183] [#x185] [#x188] [#x18C-#x18D] [#x192] [#x195] [#x199-#x19B] [#x19E] [#x1A1] [#x1A3] [#x1A5] [#x1A8] [#x1AA-#x1AB] [#x1AD] [#x1B0] [#x1B4] [#x1B6] [#x1B9-#x1BA] [#x1BD-#x1BF] [#x1C6] [#x1C9] [#x1CC] [#x1CE] [#x1D0] [#x1D2] [#x1D4] [#x1D6] [#x1D8] [#x1DA] [#x1DC-#x1DD] [#x1DF] [#x1E1] [#x1E3] [#x1E5] [#x1E7] [#x1E9] [#x1EB] [#x1ED] [#x1EF-#x1F0] [#x1F3] [#x1F5] [#x1F9] [#x1FB] [#x1FD] [#x1FF] [#x201] [#x203] [#x205] [#x207] [#x209] [#x20B] [#x20D] [#x20F] [#x211] [#x213] [#x215] [#x217] [#x219] [#x21B] [#x21D] [#x21F] [#x221] [#x223] [#x225] [#x227] [#x229] [#x22B] [#x22D] [#x22F] [#x231] [#x233-#x239] [#x23C] [#x23F-#x240] [#x242] [#x247] [#x249] [#x24B] [#x24D] [#x24F-#x293] [#x295-#x2AF] [#x371] [#x373] [#x377] [#x37B-#x37D] [#x390] [#x3AC-#x3CE] [#x3D0-#x3D1] [#x3D5-#x3D7] [#x3D9] [#x3DB] [#x3DD] [#x3DF] [#x3E1] [#x3E3] [#x3E5] [#x3E7] [#x3E9] [#x3EB] [#x3ED] [#x3EF-#x3F3] [#x3F5] [#x3F8] [#x3FB-#x3FC] [#x430-#x45F] [#x461] [#x463] [#x465] [#x467] [#x469] [#x46B] [#x46D] [#x46F] [#x471] [#x473] [#x475] [#x477] [#x479] [#x47B] [#x47D] [#x47F] [#x481] [#x48B] [#x48D] [#x48F] [#x491] [#x493] [#x495] [#x497] [#x499] [#x49B] [#x49D] [#x49F] [#x4A1] [#x4A3] [#x4A5] [#x4A7] [#x4A9] [#x4AB] [#x4AD] [#x4AF] [#x4B1] [#x4B3] [#x4B5] [#x4B7] [#x4B9] [#x4BB] [#x4BD] [#x4BF] [#x4C2] [#x4C4] [#x4C6] [#x4C8] [#x4CA] [#x4CC] [#x4CE-#x4CF] [#x4D1] [#x4D3] [#x4D5] [#x4D7] [#x4D9] [#x4DB] [#x4DD] [#x4DF] [#x4E1] [#x4E3] [#x4E5] [#x4E7] [#x4E9] [#x4EB] [#x4ED] [#x4EF] [#x4F1] [#x4F3] [#x4F5] [#x4F7] [#x4F9] [#x4FB] [#x4FD] [#x4FF] [#x501] [#x503] [#x505] [#x507] [#x509] [#x50B] [#x50D] [#x50F] [#x511] [#x513] [#x515] [#x517] [#x519] [#x51B] [#x51D] [#x51F] [#x521] [#x523] [#x525] [#x527] [#x529] [#x52B] [#x52D] [#x52F] [#x560-#x588] [#x10D0-#x10FA] [#x10FD-#x10FF] [#x13F8-#x13FD] [#x1C80-#x1C88] [#x1D00-#x1D2B] [#x1D6B-#x1D77] [#x1D79-#x1D9A] [#x1E01] [#x1E03] [#x1E05] [#x1E07] [#x1E09] [#x1E0B] [#x1E0D] [#x1E0F] [#x1E11] [#x1E13] [#x1E15] [#x1E17] [#x1E19] [#x1E1B] [#x1E1D] [#x1E1F] [#x1E21] [#x1E23] [#x1E25] [#x1E27] [#x1E29] [#x1E2B] [#x1E2D] [#x1E2F] [#x1E31] [#x1E33] [#x1E35] [#x1E37] [#x1E39] [#x1E3B] [#x1E3D] [#x1E3F] [#x1E41] [#x1E43] [#x1E45] [#x1E47] [#x1E49] [#x1E4B] [#x1E4D] [#x1E4F] [#x1E51] [#x1E53] [#x1E55] [#x1E57] [#x1E59] [#x1E5B] [#x1E5D] [#x1E5F] [#x1E61] [#x1E63] [#x1E65] [#x1E67] [#x1E69] [#x1E6B] [#x1E6D] [#x1E6F] [#x1E71] [#x1E73] [#x1E75] [#x1E77] [#x1E79] [#x1E7B] [#x1E7D] [#x1E7F] [#x1E81] [#x1E83] [#x1E85] [#x1E87] [#x1E89] [#x1E8B] [#x1E8D] [#x1E8F] [#x1E91] [#x1E93] [#x1E95-#x1E9D] [#x1E9F] [#x1EA1] [#x1EA3] [#x1EA5] [#x1EA7] [#x1EA9] [#x1EAB] [#x1EAD] [#x1EAF] [#x1EB1] [#x1EB3] [#x1EB5] [#x1EB7] [#x1EB9]