Supported SQL Syntax

The EBNF and Railroad Diagrams for the supported SQL Syntax.

CompilationUnit

direct_SQL_statement EOF
         ::= direct_SQL_statement* EOF
Not referenced by any.

non_reserved_word

A ABSOLUTE ACTION ADA ADD ADMIN AFTER ALWAYS ASC ASSERTION ASSIGNMENT ATTRIBUTE ATTRIBUTES BEFORE BERNOULLI BREADTH C CASCADE CATALOG CATALOG_NAME CHAIN CHARACTER_SET_CATALOG CHARACTER_SET_NAME CHARACTER_SET_SCHEMA CHARACTERISTICS CHARACTERS CLASS_ORIGIN COBOL COLLATION COLLATION_CATALOG COLLATION_NAME COLLATION_SCHEMA COLUMN_NAME COMMAND_FUNCTION COMMAND_FUNCTION_CODE COMMITTED CONDITION_NUMBER CONNECTION CONNECTION_NAME CONSTRAINT_CATALOG CONSTRAINT_NAME CONSTRAINT_SCHEMA CONSTRAINTS CONSTRUCTOR CONTAINS CONTINUE CURSOR_NAME DATA DATETIME_INTERVAL_CODE DATETIME_INTERVAL_PRECISION DEFAULTS DEFERRABLE DEFERRED DEFINED DEFINER DEGREE DEPTH DERIVED DESC DESCRIPTOR DIAGNOSTICS DISPATCH DOMAIN DYNAMIC_FUNCTION DYNAMIC_FUNCTION_CODE ENFORCED EQUALS EXCLUDE EXCLUDING EXPRESSION FINAL FIRST FLAG FOLLOWING FORTRAN FOUND G GENERAL GENERATED GO GOTO GRANTED HIERARCHY IF IGNORE IMMEDIATE IMPLEMENTATION INCLUDING INCREMENT INITIALLY INPUT INSTANCE INSTANTIABLE INSTEAD INVOKER ISOLATION K KEY KEY_MEMBER KEY_TYPE LAST LENGTH LEVEL LOCATOR M MAP MATCHED MAXVALUE MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MESSAGE_TEXT MINVALUE MORE MUMPS NAMES NESTING NEXT NFC NFD NFKC NFKD NORMALIZED NULLABLE NULLS NUMBER OBJECT OCTETS OPTION OPTIONS ORDERING ORDINALITY OTHERS OUTPUT OVERRIDING P PAD PARAMETER_MODE PARAMETER_NAME PARAMETER_ORDINAL_POSITION PARAMETER_SPECIFIC_CATALOG PARAMETER_SPECIFIC_NAME PARAMETER_SPECIFIC_SCHEMA PARTIAL PASCAL PATH PLACING PLI PRECEDING PRESERVE PRIOR PRIVILEGES PROPERTIES PUBLIC READ RELATIVE REPEATABLE RESPECT RESTART RESTRICT RETURNED_CARDINALITY RETURNED_LENGTH RETURNED_OCTET_LENGTH RETURNED_SQLSTATE ROLE ROUTINE ROUTINE_CATALOG ROUTINE_NAME ROUTINE_SCHEMA ROW_COUNT SCALE SCHEMA SCHEMA_NAME SCOPE_CATALOG SCOPE_NAME SCOPE_SCHEMA SECTION SECURITY SELF SEQUENCE SERIALIZABLE SERVER_NAME SESSION SETS SIMPLE SIZE SOURCE SPACE SPECIFIC_NAME STATE STATEMENT STRUCTURE STYLE SUBCLASS_ORIGIN T TABLE_NAME TEMPORARY TIES TOP_LEVEL_COUNT TRANSACTION TRANSACTION_ACTIVE TRANSACTIONS_COMMITTED TRANSACTIONS_ROLLED_BACK TRANSFORM TRANSFORMS TRIGGER_CATALOG TRIGGER_NAME TRIGGER_SCHEMA TRY_CAST TYPE UNBOUNDED UNCOMMITTED UNDER UNNAMED USAGE USER_DEFINED_TYPE_CATALOG USER_DEFINED_TYPE_CODE USER_DEFINED_TYPE_NAME USER_DEFINED_TYPE_SCHEMA VIEW WORK WRITE ZONE ABS ALL ARRAY_AGG AT AVG BLOB BOTH CARDINALITY CLOSE COLUMN CONDITION COUNT CUBE CURRENT CURRENT_CATALOG CURRENT_DATE CURRENT_DEFAULT_TRANSFORM_GROUP CURRENT_PATH CURRENT_ROLE CURRENT_SCHEMA CURRENT_TIME CURRENT_TIMESTAMP CURRENT_TRANSFORM_GROUP_FOR_TYPE CURRENT_USER CURSOR CYCLE DATE DAY DAYS DEC DYNAMIC EXP EXTERNAL FILTER FLOOR FREE FUNCTION GLOBAL HOLD HOUR HOURS IDENTITY INDICATOR INTERSECTION INTERVAL LANGUAGE LEAD LOCAL LOWER MAX MERGE METHOD MIN MINUTE MINUTES MOD MODULE MONTH MONTHS NAME NEW NONE OCCURRENCE OFFSET OLD OPEN PARTITION POSITION POWER PRECISION RANGE RANK READS REF REFERENCES RELEASE RESULT RETURNS ROLLUP ROW ROW_NUMBER ROWS SAVEPOINT SCOPE SEARCH SECOND SECONDS SESSION_USER SQL START STATIC SUM SYSTEM TIME TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TRIGGER TRUNCATE UNKNOWN UPDATE UPPER USER VALUE VALUES VERSION VERSIONS WINDOW YEAR YEARS COMMENT DEFAULT USE LIMIT NUMERIC_HISTOGRAM REPLACE HISTOGRAM APPROEX_PERCENTILE MAP_AGG SET_AGG MAP_UNION "COUNT"
         ::= 'A'
           | 'ABSOLUTE'
           | 'ACTION'
           | 'ADA'
           | 'ADD'
           | 'ADMIN'
           | 'AFTER'
           | 'ALWAYS'
           | 'ASC'
           | 'ASSERTION'
           | 'ASSIGNMENT'
           | 'ATTRIBUTE'
           | 'ATTRIBUTES'
           | 'BEFORE'
           | 'BERNOULLI'
           | 'BREADTH'
           | 'C'
           | 'CASCADE'
           | 'CATALOG'
           | 'CATALOG_NAME'
           | 'CHAIN'
           | 'CHARACTER_SET_CATALOG'
           | 'CHARACTER_SET_NAME'
           | 'CHARACTER_SET_SCHEMA'
           | 'CHARACTERISTICS'
           | 'CHARACTERS'
           | 'CLASS_ORIGIN'
           | 'COBOL'
           | 'COLLATION'
           | 'COLLATION_CATALOG'
           | 'COLLATION_NAME'
           | 'COLLATION_SCHEMA'
           | 'COLUMN_NAME'
           | 'COMMAND_FUNCTION'
           | 'COMMAND_FUNCTION_CODE'
           | 'COMMITTED'
           | 'CONDITION_NUMBER'
           | 'CONNECTION'
           | 'CONNECTION_NAME'
           | 'CONSTRAINT_CATALOG'
           | 'CONSTRAINT_NAME'
           | 'CONSTRAINT_SCHEMA'
           | 'CONSTRAINTS'
           | 'CONSTRUCTOR'
           | 'CONTAINS'
           | 'CONTINUE'
           | 'CURSOR_NAME'
           | 'DATA'
           | 'DATETIME_INTERVAL_CODE'
           | 'DATETIME_INTERVAL_PRECISION'
           | 'DEFAULTS'
           | 'DEFERRABLE'
           | 'DEFERRED'
           | 'DEFINED'
           | 'DEFINER'
           | 'DEGREE'
           | 'DEPTH'
           | 'DERIVED'
           | 'DESC'
           | 'DESCRIPTOR'
           | 'DIAGNOSTICS'
           | 'DISPATCH'
           | 'DOMAIN'
           | 'DYNAMIC_FUNCTION'
           | 'DYNAMIC_FUNCTION_CODE'
           | 'ENFORCED'
           | 'EQUALS'
           | 'EXCLUDE'
           | 'EXCLUDING'
           | 'EXPRESSION'
           | 'FINAL'
           | 'FIRST'
           | 'FLAG'
           | 'FOLLOWING'
           | 'FORTRAN'
           | 'FOUND'
           | 'G'
           | 'GENERAL'
           | 'GENERATED'
           | 'GO'
           | 'GOTO'
           | 'GRANTED'
           | 'HIERARCHY'
           | 'IF'
           | 'IGNORE'
           | 'IMMEDIATE'
           | 'IMPLEMENTATION'
           | 'INCLUDING'
           | 'INCREMENT'
           | 'INITIALLY'
           | 'INPUT'
           | 'INSTANCE'
           | 'INSTANTIABLE'
           | 'INSTEAD'
           | 'INVOKER'
           | 'ISOLATION'
           | 'K'
           | 'KEY'
           | 'KEY_MEMBER'
           | 'KEY_TYPE'
           | 'LAST'
           | 'LENGTH'
           | 'LEVEL'
           | 'LOCATOR'
           | 'M'
           | 'MAP'
           | 'MATCHED'
           | 'MAXVALUE'
           | 'MESSAGE_LENGTH'
           | 'MESSAGE_OCTET_LENGTH'
           | 'MESSAGE_TEXT'
           | 'MINVALUE'
           | 'MORE'
           | 'MUMPS'
           | 'NAMES'
           | 'NESTING'
           | 'NEXT'
           | 'NFC'
           | 'NFD'
           | 'NFKC'
           | 'NFKD'
           | 'NORMALIZED'
           | 'NULLABLE'
           | 'NULLS'
           | 'NUMBER'
           | 'OBJECT'
           | 'OCTETS'
           | 'OPTION'
           | 'OPTIONS'
           | 'ORDERING'
           | 'ORDINALITY'
           | 'OTHERS'
           | 'OUTPUT'
           | 'OVERRIDING'
           | 'P'
           | 'PAD'
           | 'PARAMETER_MODE'
           | 'PARAMETER_NAME'
           | 'PARAMETER_ORDINAL_POSITION'
           | 'PARAMETER_SPECIFIC_CATALOG'
           | 'PARAMETER_SPECIFIC_NAME'
           | 'PARAMETER_SPECIFIC_SCHEMA'
           | 'PARTIAL'
           | 'PASCAL'
           | 'PATH'
           | 'PLACING'
           | 'PLI'
           | 'PRECEDING'
           | 'PRESERVE'
           | 'PRIOR'
           | 'PRIVILEGES'
           | 'PROPERTIES'
           | 'PUBLIC'
           | 'READ'
           | 'RELATIVE'
           | 'REPEATABLE'
           | 'RESPECT'
           | 'RESTART'
           | 'RESTRICT'
           | 'RETURNED_CARDINALITY'
           | 'RETURNED_LENGTH'
           | 'RETURNED_OCTET_LENGTH'
           | 'RETURNED_SQLSTATE'
           | 'ROLE'
           | 'ROUTINE'
           | 'ROUTINE_CATALOG'
           | 'ROUTINE_NAME'
           | 'ROUTINE_SCHEMA'
           | 'ROW_COUNT'
           | 'SCALE'
           | 'SCHEMA'
           | 'SCHEMA_NAME'
           | 'SCOPE_CATALOG'
           | 'SCOPE_NAME'
           | 'SCOPE_SCHEMA'
           | 'SECTION'
           | 'SECURITY'
           | 'SELF'
           | 'SEQUENCE'
           | 'SERIALIZABLE'
           | 'SERVER_NAME'
           | 'SESSION'
           | 'SETS'
           | 'SIMPLE'
           | 'SIZE'
           | 'SOURCE'
           | 'SPACE'
           | 'SPECIFIC_NAME'
           | 'STATE'
           | 'STATEMENT'
           | 'STRUCTURE'
           | 'STYLE'
           | 'SUBCLASS_ORIGIN'
           | 'T'
           | 'TABLE_NAME'
           | 'TEMPORARY'
           | 'TIES'
           | 'TOP_LEVEL_COUNT'
           | 'TRANSACTION'
           | 'TRANSACTION_ACTIVE'
           | 'TRANSACTIONS_COMMITTED'
           | 'TRANSACTIONS_ROLLED_BACK'
           | 'TRANSFORM'
           | 'TRANSFORMS'
           | 'TRIGGER_CATALOG'
           | 'TRIGGER_NAME'
           | 'TRIGGER_SCHEMA'
           | 'TRY_CAST'
           | 'TYPE'
           | 'UNBOUNDED'
           | 'UNCOMMITTED'
           | 'UNDER'
           | 'UNNAMED'
           | 'USAGE'
           | 'USER_DEFINED_TYPE_CATALOG'
           | 'USER_DEFINED_TYPE_CODE'
           | 'USER_DEFINED_TYPE_NAME'
           | 'USER_DEFINED_TYPE_SCHEMA'
           | 'VIEW'
           | 'WORK'
           | 'WRITE'
           | 'ZONE'
           | 'ABS'
           | 'ALL'
           | 'ARRAY_AGG'
           | 'AT'
           | 'AVG'
           | 'BLOB'
           | 'BOTH'
           | 'CARDINALITY'
           | 'CLOSE'
           | 'COLUMN'
           | 'CONDITION'
           | 'COUNT'
           | 'CUBE'
           | 'CURRENT'
           | 'CURRENT_CATALOG'
           | 'CURRENT_DATE'
           | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
           | 'CURRENT_PATH'
           | 'CURRENT_ROLE'
           | 'CURRENT_SCHEMA'
           | 'CURRENT_TIME'
           | 'CURRENT_TIMESTAMP'
           | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE'
           | 'CURRENT_USER'
           | 'CURSOR'
           | 'CYCLE'
           | 'DATE'
           | 'DAY'
           | 'DAYS'
           | 'DEC'
           | 'DYNAMIC'
           | 'EXP'
           | 'EXTERNAL'
           | 'FILTER'
           | 'FLOOR'
           | 'FREE'
           | 'FUNCTION'
           | 'GLOBAL'
           | 'HOLD'
           | 'HOUR'
           | 'HOURS'
           | 'IDENTITY'
           | 'INDICATOR'
           | 'INTERSECTION'
           | 'INTERVAL'
           | 'LANGUAGE'
           | 'LEAD'
           | 'LOCAL'
           | 'LOWER'
           | 'MAX'
           | 'MERGE'
           | 'METHOD'
           | 'MIN'
           | 'MINUTE'
           | 'MINUTES'
           | 'MOD'
           | 'MODULE'
           | 'MONTH'
           | 'MONTHS'
           | 'NAME'
           | 'NEW'
           | 'NONE'
           | 'OCCURRENCE'
           | 'OFFSET'
           | 'OLD'
           | 'OPEN'
           | 'PARTITION'
           | 'POSITION'
           | 'POWER'
           | 'PRECISION'
           | 'RANGE'
           | 'RANK'
           | 'READS'
           | 'REF'
           | 'REFERENCES'
           | 'RELEASE'
           | 'RESULT'
           | 'RETURNS'
           | 'ROLLUP'
           | 'ROW'
           | 'ROW_NUMBER'
           | 'ROWS'
           | 'SAVEPOINT'
           | 'SCOPE'
           | 'SEARCH'
           | 'SECOND'
           | 'SECONDS'
           | 'SESSION_USER'
           | 'SQL'
           | 'START'
           | 'STATIC'
           | 'SUM'
           | 'SYSTEM'
           | 'TIME'
           | 'TIMESTAMP'
           | 'TIMEZONE_HOUR'
           | 'TIMEZONE_MINUTE'
           | 'TRIGGER'
           | 'TRUNCATE'
           | 'UNKNOWN'
           | 'UPDATE'
           | 'UPPER'
           | 'USER'
           | 'VALUE'
           | 'VALUES'
           | 'VERSION'
           | 'VERSIONS'
           | 'WINDOW'
           | 'YEAR'
           | 'YEARS'
           | 'COMMENT'
           | 'DEFAULT'
           | 'USE'
           | 'LIMIT'
           | 'NUMERIC_HISTOGRAM'
           | 'REPLACE'
           | 'HISTOGRAM'
           | 'APPROEX_PERCENTILE'
           | 'MAP_AGG'
           | 'SET_AGG'
           | 'MAP_UNION'
           | '"COUNT"'
Referenced by:

left_bracket_or_trigraph

[ ??(
         ::= '['
           | '??('

right_bracket_or_trigraph

] ??)
         ::= ']'
           | '??)'

literal

signed_numeric_literal general_literal
           | general_literal

signed_numeric_literal

+ - unsigned_numeric_literal
         ::= ( '+' | '-' )? unsigned_numeric_literal

unsigned_literal

unsigned_numeric_literal general_literal
         ::= unsigned_numeric_literal
           | general_literal

unsigned_numeric_literal

exact_numeric_literal approximate_numeric_literal
         ::= exact_numeric_literal
           | approximate_numeric_literal

exact_numeric_literal

unsigned_integer float_literal
         ::= unsigned_integer
           | float_literal
Referenced by:

general_literal

character_string_literal national_character_string_literal Unicode_character_string_literal binary_string_literal datetime_literal interval_literal boolean_literal
         ::= character_string_literal
           | national_character_string_literal
           | Unicode_character_string_literal
           | binary_string_literal
           | datetime_literal
           | interval_literal
           | boolean_literal
Referenced by:

character_string_literal

_ character_set_specification quoted_string
         ::= ( '_' character_set_specification )? quoted_string+

Unicode_character_string_literal

_ character_set_specification unicode_literal
         ::= ( '_' character_set_specification )? unicode_literal
Referenced by:

datetime_literal

date_literal time_literal timestamp_literal
         ::= date_literal
           | time_literal
           | timestamp_literal
Referenced by:

date_literal

DATE character_string_literal
         ::= 'DATE' character_string_literal
Referenced by:

time_literal

TIME character_string_literal
         ::= 'TIME' character_string_literal
Referenced by:

timestamp_literal

TIMESTAMP character_string_literal
         ::= 'TIMESTAMP' character_string_literal
Referenced by:

interval_literal

INTERVAL + - character_string_literal interval_qualifier
         ::= 'INTERVAL' ( '+' | '-' )? character_string_literal interval_qualifier
Referenced by:

boolean_literal

TRUE FALSE UNKNOWN
         ::= 'TRUE'
           | 'FALSE'
           | 'UNKNOWN'
Referenced by:

identifier

actual_identifier _ identifier_suffix_chain
         ::= ( actual_identifier | '_' ) identifier_suffix_chain?

actual_identifier

regular_identifier delimited_identifier Unicode_delimited_identifier non_reserved_word
         ::= regular_identifier
           | delimited_identifier
           | Unicode_delimited_identifier
           | non_reserved_word

table_name

identifier_chain
         ::= identifier_chain

schema_name

identifier_chain
         ::= identifier_chain

catalog_name

identifier
         ::= identifier
Not referenced by any.

schema_qualified_name

identifier_chain
         ::= identifier_chain

local_or_schema_qualified_name

identifier_chain
         ::= identifier_chain
Not referenced by any.

local_or_schema_qualifier

MODULE schema_name
         ::= 'MODULE'
           | schema_name
Not referenced by any.

cursor_name

identifier_chain
         ::= identifier_chain

host_parameter_name

: identifier
         ::= ':' identifier

external_routine_name

identifier character_string_literal
         ::= identifier
           | character_string_literal

character_set_name

schema_name . SQL_language_identifier
         ::= ( schema_name '.' )? SQL_language_identifier

schema_resolved_user_defined_type_name

user_defined_type_name
         ::= user_defined_type_name

user_defined_type_name

identifier_chain
         ::= identifier_chain

SQL_identifier

identifier extended_identifier
         ::= identifier
           | extended_identifier

extended_identifier

scope_option simple_value_specification

dynamic_cursor_name

cursor_name extended_cursor_name
         ::= cursor_name
           | extended_cursor_name

extended_cursor_name

scope_option simple_value_specification

descriptor_name

identifier extended_descriptor_name
         ::= identifier
           | extended_descriptor_name

extended_descriptor_name

scope_option simple_value_specification
Referenced by:

scope_option

GLOBAL LOCAL
         ::= 'GLOBAL'
           | 'LOCAL'

data_type

predefined_type row_type reference_type presto_generic_type path_resolved_user_defined_type_name collection_type

predefined_type

character_string_type CHARACTER SET character_set_specification national_character_string_type collate_clause binary_string_type numeric_type BOOLEAN datetime_type interval_type
           | binary_string_type
           | numeric_type
           | 'BOOLEAN'
           | datetime_type
           | interval_type

character_string_type

CHARACTER CHAR VARYING ( character_length ) VARCHAR ( character_length ) character_large_object_type
         ::= ( 'CHARACTER' | 'CHAR' ) ( 'VARYING'? '(' character_length ')' )?
           | 'VARCHAR' ( '(' character_length ')' )?
           | character_large_object_type
Referenced by:

character_large_object_type

CHARACTER CHAR LARGE OBJECT CLOB ( character_large_object_length )
         ::= ( ( 'CHARACTER' | 'CHAR' ) 'LARGE' 'OBJECT' | 'CLOB' ) ( '(' character_large_object_length ')' )?
Referenced by:

national_character_string_type

NATIONAL CHARACTER CHAR NCHAR VARYING ( character_length ) national_character_large_object_type
         ::= ( 'NATIONAL' ( 'CHARACTER' | 'CHAR' ) | 'NCHAR' ) ( 'VARYING'? '(' character_length ')' )?
           | national_character_large_object_type
Referenced by:

national_character_large_object_type

NATIONAL CHARACTER NCHAR LARGE OBJECT NCLOB ( character_large_object_length )
         ::= ( ( 'NATIONAL' 'CHARACTER' | 'NCHAR' ) 'LARGE' 'OBJECT' | 'NCLOB' ) ( '(' character_large_object_length ')' )?

binary_string_type

BINARY VARYING ( unsigned_integer ) VARBINARY ( unsigned_integer ) binary_large_object_string_type
         ::= 'BINARY' ( 'VARYING'? '(' unsigned_integer ')' )?
           | 'VARBINARY' ( '(' unsigned_integer ')' )?
           | binary_large_object_string_type
Referenced by:

binary_large_object_string_type

BINARY LARGE OBJECT BLOB ( large_object_length )
         ::= ( 'BINARY' 'LARGE' 'OBJECT' | 'BLOB' ) ( '(' large_object_length ')' )?
Referenced by:

numeric_type

exact_numeric_type approximate_numeric_type
         ::= exact_numeric_type
           | approximate_numeric_type
Referenced by:

exact_numeric_type

NUMERIC DECIMAL DEC ( unsigned_integer , unsigned_integer ) SMALLINT INTEGER INT BIGINT
         ::= ( 'NUMERIC' | 'DECIMAL' | 'DEC' ) ( '(' unsigned_integer ( ',' unsigned_integer )? ')' )?
           | 'SMALLINT'
           | 'INTEGER'
           | 'INT'
           | 'BIGINT'
Referenced by:

approximate_numeric_type

FLOAT ( unsigned_integer ) REAL DOUBLE PRECISION
         ::= 'FLOAT' ( '(' unsigned_integer ')' )?
           | 'REAL'
           | 'DOUBLE' 'PRECISION'?
Referenced by:

character_length

unsigned_integer char_length_units
         ::= unsigned_integer char_length_units?

large_object_length

unsigned_integer multiplier large_object_length_token
         ::= unsigned_integer multiplier?
           | large_object_length_token

character_large_object_length

large_object_length char_length_units
         ::= large_object_length char_length_units?

char_length_units

CHARACTERS OCTETS
         ::= 'CHARACTERS'
           | 'OCTETS'

datetime_type

DATE TIME TIMESTAMP ( unsigned_integer ) with_or_without_time_zone
         ::= 'DATE'
           | ( 'TIME' | 'TIMESTAMP' ) ( '(' unsigned_integer ')' )? with_or_without_time_zone?
Referenced by:

with_or_without_time_zone

WITH WITHOUT TIME ZONE
         ::= ( 'WITH' | 'WITHOUT' ) 'TIME' 'ZONE'
Referenced by:

interval_type

INTERVAL interval_qualifier
         ::= 'INTERVAL' interval_qualifier
Referenced by:

row_type

ROW row_type_body
Referenced by:

row_type_body

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

reference_type

REF ( referenced_type ) scope_clause
         ::= 'REF' '(' referenced_type ')' scope_clause?
Referenced by:

scope_clause

SCOPE table_name
         ::= 'SCOPE' table_name

referenced_type

path_resolved_user_defined_type_name
Referenced by:

path_resolved_user_defined_type_name

user_defined_type_name
         ::= user_defined_type_name

collection_type

array_type MULTISET
         ::= array_type
           | 'MULTISET'
Referenced by:

array_type

ARRAY left_bracket_or_trigraph unsigned_integer right_bracket_or_trigraph
Referenced by:

field_definition

identifier data_type
         ::= identifier data_type
Referenced by:

value_expression_primary

parenthesized_value_expression nonparenthesized_value_expression_primary
         ::= parenthesized_value_expression

parenthesized_value_expression

( value_expression , ) primary_suffix
         ::= '(' value_expression ( ',' value_expression )* ')' primary_suffix*
Referenced by:

nonparenthesized_value_expression_primary

set_function_specification subquery case_expression cast_specification subtype_treatment new_specification reference_resolution collection_value_constructor multiset_element_reference next_value_expression window_function_type ( column_name_list ) unsigned_value_specification column_reference primary_suffix contextually_typed_value_specification

primary_suffix

field_reference attribute_or_method_reference method_invocation window_function array_element_reference static_method_invocation
         ::= field_reference
           | attribute_or_method_reference
           | method_invocation
           | window_function
           | array_element_reference
           | static_method_invocation

collection_value_constructor

array_value_constructor multiset_value_constructor
         ::= array_value_constructor
           | multiset_value_constructor

value_specification

literal general_value_specification
         ::= literal
           | general_value_specification

unsigned_value_specification

unsigned_literal general_value_specification
         ::= unsigned_literal
           | general_value_specification

general_value_specification

identifier_chain CURRENT_USER USER ? host_parameter_name current_collation_specification SESSION_USER SYSTEM_USER CURRENT_CATALOG CURRENT_PATH CURRENT_ROLE CURRENT_SCHEMA VALUE CURRENT_DEFAULT_TRANSFORM_GROUP CURRENT_TRANSFORM_GROUP_FOR_TYPE path_resolved_user_defined_type_name
         ::= identifier_chain
           | 'CURRENT_USER'
           | 'USER'
           | '?'
           | host_parameter_name
           | current_collation_specification
           | 'SESSION_USER'
           | 'SYSTEM_USER'
           | 'CURRENT_CATALOG'
           | 'CURRENT_PATH'
           | 'CURRENT_ROLE'
           | 'CURRENT_SCHEMA'
           | 'VALUE'
           | 'CURRENT_DEFAULT_TRANSFORM_GROUP'
           | 'CURRENT_TRANSFORM_GROUP_FOR_TYPE' path_resolved_user_defined_type_name

simple_value_specification

literal identifier_chain host_parameter_name
         ::= literal
           | identifier_chain
           | host_parameter_name

target_specification

identifier_chain column_reference target_array_element_specification ?

simple_target_specification

identifier_chain column_reference
         ::= identifier_chain
           | column_reference

target_array_element_specification

left_bracket_or_trigraph simple_value_specification right_bracket_or_trigraph
Referenced by:

current_collation_specification

COLLATION FOR ( string_value_expression )
         ::= 'COLLATION' 'FOR' '(' string_value_expression ')'

contextually_typed_value_specification

implicitly_typed_value_specification DEFAULT
           | 'DEFAULT'

implicitly_typed_value_specification

NULL empty_specification
         ::= 'NULL'
           | empty_specification

empty_specification

ARRAY MULTISET left_bracket_or_trigraph right_bracket_or_trigraph
         ::= ( 'ARRAY' | 'MULTISET' ) left_bracket_or_trigraph right_bracket_or_trigraph

identifier_chain

identifier .
         ::= identifier ( '.' identifier )*

column_reference

identifier_chain MODULE . identifier . identifier
         ::= identifier_chain
           | 'MODULE' '.' identifier '.' identifier

set_function_specification

aggregate_function grouping_operation
         ::= aggregate_function
           | grouping_operation

grouping_operation

GROUPING ( column_reference , )
         ::= 'GROUPING' '(' column_reference ( ',' column_reference )* ')'

window_function

OVER window_name_or_specification
         ::= 'OVER' window_name_or_specification
Referenced by:

window_function_type

rank_function_type ROW_NUMBER ( ) aggregate_function ntile_function lead_or_lag_function first_or_last_value_function nth_value_function
         ::= ( rank_function_type | 'ROW_NUMBER' ) '(' ')'
           | aggregate_function
           | ntile_function
           | lead_or_lag_function
           | first_or_last_value_function
           | nth_value_function

rank_function_type

RANK DENSE_RANK PERCENT_RANK CUME_DIST
         ::= 'RANK'
           | 'DENSE_RANK'
           | 'PERCENT_RANK'
           | 'CUME_DIST'

ntile_function

NTILE ( number_of_tiles )
         ::= 'NTILE' '(' number_of_tiles ')'
Referenced by:

number_of_tiles

value_expression ?
         ::= value_expression
           | '?'
Referenced by:

lead_or_lag_function

lead_or_lag ( value_expression , value_expression , value_expression ) null_treatment
         ::= lead_or_lag '(' value_expression ( ',' value_expression ( ',' value_expression )? )? ')' null_treatment?
Referenced by:

lead_or_lag

LEAD LAG
         ::= 'LEAD'
           | 'LAG'
Referenced by:

null_treatment

RESPECT IGNORE NULLS
         ::= ( 'RESPECT' | 'IGNORE' ) 'NULLS'

first_or_last_value_function

first_or_last_value ( value_expression ) null_treatment
         ::= first_or_last_value '(' value_expression ')' null_treatment?
Referenced by:

first_or_last_value

FIRST_VALUE LAST_VALUE
         ::= 'FIRST_VALUE'
           | 'LAST_VALUE'

nth_value_function

NTH_VALUE ( value_expression , nth_row ) from_first_or_last null_treatment
         ::= 'NTH_VALUE' '(' value_expression ',' nth_row ')' from_first_or_last? null_treatment?
Referenced by:

nth_row

simple_value_specification ?
           | '?'
Referenced by:

from_first_or_last

FROM FIRST LAST
         ::= 'FROM' ( 'FIRST' | 'LAST' )
Referenced by:

window_name_or_specification

in_line_window_specification identifier
         ::= in_line_window_specification
           | identifier
Referenced by:

in_line_window_specification

window_specification
         ::= window_specification

case_expression

case_abbreviation case_specification
         ::= case_abbreviation
           | case_specification

case_abbreviation

NULLIF ( value_expression , COALESCE ( value_expression , value_expression )
         ::= ( 'NULLIF' '(' value_expression ',' | 'COALESCE' '(' ( value_expression ',' )+ ) value_expression ')'
Referenced by:

case_specification

simple_case searched_case
         ::= simple_case
           | searched_case
Referenced by:

simple_case

CASE case_operand simple_when_clause else_clause END
         ::= 'CASE' case_operand simple_when_clause+ else_clause? 'END'
Referenced by:

searched_case

CASE searched_when_clause else_clause END
         ::= 'CASE' searched_when_clause+ else_clause? 'END'
Referenced by:

simple_when_clause

WHEN when_operand_list THEN result
         ::= 'WHEN' when_operand_list 'THEN' result
Referenced by:

searched_when_clause

WHEN search_condition THEN result
         ::= 'WHEN' search_condition 'THEN' result
Referenced by:

else_clause

ELSE result
         ::= 'ELSE' result
Referenced by:

case_operand

row_value_predicand overlaps_predicate_part_1
         ::= row_value_predicand
           | overlaps_predicate_part_1
Referenced by:

when_operand_list

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

when_operand

row_value_predicand comparison_predicate_part_2 between_predicate_part_2 in_predicate_part_2 character_like_predicate_part_2 octet_like_predicate_part_2 similar_predicate_part_2 regex_like_predicate_part_2 null_predicate_part_2 quantified_comparison_predicate_part_2 normalized_predicate_part_2 match_predicate_part_2 overlaps_predicate_part_2 distinct_predicate_part_2 member_predicate_part_2 submultiset_predicate_part_2 set_predicate_part_2 type_predicate_part_2
         ::= row_value_predicand
           | comparison_predicate_part_2
           | between_predicate_part_2
           | in_predicate_part_2
           | character_like_predicate_part_2
           | octet_like_predicate_part_2
           | similar_predicate_part_2
           | regex_like_predicate_part_2
           | null_predicate_part_2
           | normalized_predicate_part_2
           | match_predicate_part_2
           | overlaps_predicate_part_2
           | distinct_predicate_part_2
           | member_predicate_part_2
           | submultiset_predicate_part_2
           | set_predicate_part_2
           | type_predicate_part_2
Referenced by:

result

value_expression NULL
           | 'NULL'

cast_specification

CAST ( cast_operand AS cast_target ) try_cast
         ::= 'CAST' '(' cast_operand 'AS' cast_target ')'
           | try_cast

cast_operand

value_expression implicitly_typed_value_specification
         ::= value_expression
           | implicitly_typed_value_specification

cast_target

data_type schema_qualified_name
         ::= data_type
           | schema_qualified_name

next_value_expression

NEXT VALUE FOR schema_qualified_name
         ::= 'NEXT' 'VALUE' 'FOR' schema_qualified_name

field_reference

. identifier
         ::= '.' identifier
Referenced by:

subtype_treatment

TREAT ( value_expression AS target_subtype )
         ::= 'TREAT' '(' value_expression 'AS' target_subtype ')'

target_subtype

path_resolved_user_defined_type_name reference_type
           | reference_type
Referenced by:

method_invocation

direct_invocation udaf_filter generalized_invocation
         ::= direct_invocation udaf_filter?
           | generalized_invocation

direct_invocation

SQL_argument_list
         ::= SQL_argument_list
Referenced by:

generalized_invocation

. identifier SQL_argument_list
         ::= '.' identifier SQL_argument_list?
Referenced by:

static_method_invocation

:: identifier SQL_argument_list
         ::= '::' identifier SQL_argument_list?
Referenced by:

new_specification

NEW path_resolved_user_defined_type_name SQL_argument_list

new_invocation

method_invocation routine_invocation
         ::= method_invocation
           | routine_invocation
Not referenced by any.

attribute_or_method_reference

lambda_body
         ::= lambda_body
Referenced by:

dereference_operation

reference_value_expression -> identifier
         ::= reference_value_expression '->' identifier
Not referenced by any.

reference_resolution

DEREF ( reference_value_expression )
         ::= 'DEREF' '(' reference_value_expression ')'

array_element_reference

left_bracket_or_trigraph value_expression right_bracket_or_trigraph
Referenced by:

multiset_element_reference

ELEMENT ( multiset_value_expression )
         ::= 'ELEMENT' '(' multiset_value_expression ')'

value_expression

boolean_value_expression common_value_expression row_value_expression
         ::= boolean_value_expression
           | common_value_expression
           | row_value_expression

common_value_expression

numeric_value_expression string_value_expression datetime_value_expression interval_value_expression user_defined_type_value_expression reference_value_expression collection_value_expression
         ::= numeric_value_expression
           | string_value_expression
           | datetime_value_expression
           | interval_value_expression
           | user_defined_type_value_expression
           | reference_value_expression
           | collection_value_expression

user_defined_type_value_expression

value_expression_primary
         ::= value_expression_primary
Referenced by:

reference_value_expression

value_expression_primary
         ::= value_expression_primary

collection_value_expression

array_value_expression multiset_value_expression
         ::= array_value_expression
           | multiset_value_expression

numeric_value_expression

term + -
         ::= term ( ( '+' | '-' ) term )*

term

factor * / %
term     ::= factor ( ( '*' | '/' | '%' ) factor )*
Referenced by:

factor

+ - numeric_primary
factor   ::= ( '+' | '-' )? numeric_primary
Referenced by:

numeric_primary

numeric_value_function character_value_expression
         ::= numeric_value_function
           | character_value_expression
Referenced by:

numeric_value_function

position_expression regex_occurrences_function regex_position_expression extract_expression length_expression cardinality_expression max_cardinality_expression absolute_value_expression modulus_expression natural_logarithm exponential_function power_function square_root floor_function ceiling_function width_bucket_function
         ::= position_expression
           | regex_occurrences_function
           | regex_position_expression
           | extract_expression
           | length_expression
           | cardinality_expression
           | max_cardinality_expression
           | absolute_value_expression
           | modulus_expression
           | natural_logarithm
           | exponential_function
           | power_function
           | square_root
           | floor_function
           | ceiling_function
           | width_bucket_function
Referenced by:

position_expression

character_position_expression binary_position_expression
         ::= character_position_expression
           | binary_position_expression
Referenced by:

regex_occurrences_function

OCCURRENCES_REGEX ( character_value_expression FLAG character_value_expression IN character_value_expression FROM numeric_value_expression USING char_length_units )
         ::= 'OCCURRENCES_REGEX' '(' character_value_expression ( 'FLAG' character_value_expression )? 'IN' character_value_expression ( 'FROM' numeric_value_expression )? ( 'USING' char_length_units )? ')'
Referenced by:

regex_position_expression

POSITION_REGEX ( regex_position_start_or_after character_value_expression FLAG character_value_expression IN character_value_expression FROM numeric_value_expression USING char_length_units OCCURRENCE numeric_value_expression GROUP numeric_value_expression )
Referenced by:

regex_position_start_or_after

START AFTER
         ::= 'START'
           | 'AFTER'

character_position_expression

POSITION ( character_value_expression IN character_value_expression USING char_length_units )
         ::= 'POSITION' '(' character_value_expression 'IN' character_value_expression ( 'USING' char_length_units )? ')'
Referenced by:

binary_position_expression

POSITION ( binary_value_expression IN binary_value_expression )
         ::= 'POSITION' '(' binary_value_expression 'IN' binary_value_expression ')'
Referenced by:

length_expression

char_length_expression octet_length_expression
         ::= char_length_expression
           | octet_length_expression
Referenced by:

char_length_expression

CHAR_LENGTH CHARACTER_LENGTH ( character_value_expression USING char_length_units )
         ::= ( 'CHAR_LENGTH' | 'CHARACTER_LENGTH' ) '(' character_value_expression ( 'USING' char_length_units )? ')'
Referenced by:

octet_length_expression

OCTET_LENGTH ( string_value_expression )
         ::= 'OCTET_LENGTH' '(' string_value_expression ')'
Referenced by:

extract_expression

EXTRACT ( extract_field FROM extract_source )
         ::= 'EXTRACT' '(' extract_field 'FROM' extract_source ')'
Referenced by:

extract_field

primary_datetime_field time_zone_field
         ::= primary_datetime_field
           | time_zone_field
Referenced by:

time_zone_field

TIMEZONE_HOUR TIMEZONE_MINUTE
         ::= 'TIMEZONE_HOUR'
           | 'TIMEZONE_MINUTE'
Referenced by:

extract_source

datetime_value_expression interval_value_expression
         ::= datetime_value_expression
           | interval_value_expression
Referenced by:

cardinality_expression

CARDINALITY ( collection_value_expression )
         ::= 'CARDINALITY' '(' collection_value_expression ')'
Referenced by:

max_cardinality_expression

MAX_CARDINALITY ( array_value_expression )
         ::= 'MAX_CARDINALITY' '(' array_value_expression ')'
Referenced by:

absolute_value_expression

ABS ( numeric_value_expression )
         ::= 'ABS' '(' numeric_value_expression ')'
Referenced by:

modulus_expression

MOD ( numeric_value_expression , numeric_value_expression )
         ::= 'MOD' '(' numeric_value_expression ',' numeric_value_expression ')'
Referenced by:

natural_logarithm

LN ( numeric_value_expression )
         ::= 'LN' '(' numeric_value_expression ')'
Referenced by:

exponential_function

EXP ( numeric_value_expression )
         ::= 'EXP' '(' numeric_value_expression ')'
Referenced by:

power_function

POWER ( numeric_value_expression , numeric_value_expression )
         ::= 'POWER' '(' numeric_value_expression ',' numeric_value_expression ')'
Referenced by:

square_root

SQRT ( numeric_value_expression )
         ::= 'SQRT' '(' numeric_value_expression ')'
Referenced by:

floor_function

FLOOR ( numeric_value_expression )
         ::= 'FLOOR' '(' numeric_value_expression ')'
Referenced by:

ceiling_function

CEIL CEILING ( numeric_value_expression )
         ::= ( 'CEIL' | 'CEILING' ) '(' numeric_value_expression ')'
Referenced by:

width_bucket_function

WIDTH_BUCKET ( numeric_value_expression , numeric_value_expression , numeric_value_expression , numeric_value_expression )
         ::= 'WIDTH_BUCKET' '(' numeric_value_expression ',' numeric_value_expression ( ',' numeric_value_expression ',' numeric_value_expression )? ')'
Referenced by:

string_value_expression

character_value_expression binary_value_expression
         ::= character_value_expression
           | binary_value_expression

character_value_expression

character_factor concatenation
         ::= character_factor concatenation*

concatenation

|| character_factor
         ::= '||' character_factor

character_factor

character_primary collate_clause
         ::= character_primary collate_clause?

character_primary

string_value_function binary_value_expression
         ::= string_value_function
           | binary_value_expression
Referenced by:

binary_value_expression

binary_primary binary_concatenation
         ::= binary_primary binary_concatenation*

binary_primary

string_value_function datetime_value_expression
         ::= string_value_function
           | datetime_value_expression

binary_concatenation

|| binary_primary
         ::= '||' binary_primary
Referenced by:

string_value_function

character_value_function binary_value_function
         ::= character_value_function
           | binary_value_function

character_value_function

character_substring_function regular_expression_substring_function regex_substring_function fold transcoding character_transliteration regex_transliteration trim_function character_overlay_function normalize_function specific_type_method
         ::= character_substring_function
           | regex_substring_function
           | fold
           | transcoding
           | character_transliteration
           | regex_transliteration
           | trim_function
           | character_overlay_function
           | normalize_function
           | specific_type_method
Referenced by:

character_substring_function

SUBSTRING ( character_value_expression FROM numeric_value_expression FOR numeric_value_expression USING char_length_units )
         ::= 'SUBSTRING' '(' character_value_expression 'FROM' numeric_value_expression ( 'FOR' numeric_value_expression )? ( 'USING' char_length_units )? ')'
Referenced by:

regular_expression_substring_function

SUBSTRING ( character_value_expression SIMILAR character_value_expression ESCAPE character_value_expression )
         ::= 'SUBSTRING' '(' character_value_expression 'SIMILAR' character_value_expression 'ESCAPE' character_value_expression ')'
Referenced by:

regex_substring_function

SUBSTRING_REGEX ( character_value_expression FLAG character_value_expression IN character_value_expression FROM numeric_value_expression USING char_length_units OCCURRENCE numeric_value_expression GROUP numeric_value_expression )
         ::= 'SUBSTRING_REGEX' '(' character_value_expression ( 'FLAG' character_value_expression )? 'IN' character_value_expression ( 'FROM' numeric_value_expression )? ( 'USING' char_length_units )? ( 'OCCURRENCE' numeric_value_expression )? ( 'GROUP' numeric_value_expression )? ')'
Referenced by:

fold

UPPER LOWER ( character_value_expression )
fold     ::= ( 'UPPER' | 'LOWER' ) '(' character_value_expression ')'
Referenced by:

transcoding

CONVERT ( character_value_expression USING schema_qualified_name )
         ::= 'CONVERT' '(' character_value_expression 'USING' schema_qualified_name ')'
Referenced by:

character_transliteration

TRANSLATE ( character_value_expression USING schema_qualified_name )
         ::= 'TRANSLATE' '(' character_value_expression 'USING' schema_qualified_name ')'
Referenced by:

regex_transliteration

TRANSLATE_REGEX ( character_value_expression FLAG character_value_expression IN character_value_expression WITH character_value_expression FROM numeric_value_expression USING char_length_units OCCURRENCE regex_transliteration_occurrence )
         ::= 'TRANSLATE_REGEX' '(' character_value_expression ( 'FLAG' character_value_expression )? 'IN' character_value_expression ( 'WITH' character_value_expression )? ( 'FROM' numeric_value_expression )? ( 'USING' char_length_units )? ( 'OCCURRENCE' regex_transliteration_occurrence )? ')'
Referenced by:

regex_transliteration_occurrence

ALL numeric_value_expression
         ::= 'ALL'
           | numeric_value_expression
Referenced by:

trim_function

TRIM ( trim_operands )
         ::= 'TRIM' '(' trim_operands ')'
Referenced by:

trim_operands

trim_specification character_value_expression , FROM character_value_expression
         ::= trim_specification? character_value_expression ( ( ',' | 'FROM' ) character_value_expression )?
Referenced by:

trim_specification

LEADING TRAILING BOTH
         ::= 'LEADING'
           | 'TRAILING'
           | 'BOTH'

character_overlay_function

OVERLAY ( character_value_expression PLACING character_value_expression FROM numeric_value_expression FOR numeric_value_expression USING char_length_units )
         ::= 'OVERLAY' '(' character_value_expression 'PLACING' character_value_expression 'FROM' numeric_value_expression ( 'FOR' numeric_value_expression )? ( 'USING' char_length_units )? ')'
Referenced by:

normalize_function

NORMALIZE ( character_value_expression , normal_form , normalize_function_result_length )
         ::= 'NORMALIZE' '(' character_value_expression ( ',' normal_form ( ',' normalize_function_result_length )? )? ')'
Referenced by:

normal_form

NFC NFD NFKC NFKD
         ::= 'NFC'
           | 'NFD'
           | 'NFKC'
           | 'NFKD'

normalize_function_result_length

character_length character_large_object_length
         ::= character_length
           | character_large_object_length
Referenced by:

specific_type_method

. SPECIFICTYPE ( )
         ::= '.' 'SPECIFICTYPE' ( '(' ')' )?
Referenced by:

binary_value_function

binary_substring_function binary_trim_function binary_overlay_function
         ::= binary_substring_function
           | binary_trim_function
           | binary_overlay_function
Referenced by:

binary_substring_function

SUBSTRING ( binary_value_expression FROM numeric_value_expression FOR numeric_value_expression )
         ::= 'SUBSTRING' '(' binary_value_expression 'FROM' numeric_value_expression ( 'FOR' numeric_value_expression )? ')'
Referenced by:

binary_trim_function

TRIM ( binary_trim_operands )
         ::= 'TRIM' '(' binary_trim_operands ')'
Referenced by:

binary_trim_operands

trim_specification binary_value_expression , FROM binary_value_expression
         ::= trim_specification? binary_value_expression ( ( ',' | 'FROM' ) binary_value_expression )?
Referenced by:

binary_overlay_function

OVERLAY ( binary_value_expression PLACING binary_value_expression FROM numeric_value_expression FOR numeric_value_expression )
         ::= 'OVERLAY' '(' binary_value_expression 'PLACING' binary_value_expression 'FROM' numeric_value_expression ( 'FOR' numeric_value_expression )? ')'
Referenced by:

datetime_value_expression

datetime_term interval_value_expression
         ::= datetime_term
           | interval_value_expression

datetime_term

datetime_factor
         ::= datetime_factor

datetime_factor

datetime_primary time_zone
         ::= datetime_primary time_zone?
Referenced by:

datetime_primary

datetime_value_function interval_value_expression
         ::= datetime_value_function
           | interval_value_expression
Referenced by:

time_zone

AT time_zone_specifier
         ::= 'AT' time_zone_specifier
Referenced by:

time_zone_specifier

LOCAL TIME ZONE interval_primary
         ::= 'LOCAL'
           | 'TIME' 'ZONE' interval_primary
Referenced by:

datetime_value_function

CURRENT_DATE current_time_value_function current_timestamp_value_function current_local_time_value_function current_local_timestamp_value_function
         ::= 'CURRENT_DATE'
           | current_time_value_function
           | current_timestamp_value_function
           | current_local_time_value_function

current_time_value_function

CURRENT_TIME ( unsigned_integer )
         ::= 'CURRENT_TIME' ( '(' unsigned_integer ')' )?
Referenced by:

current_local_time_value_function

LOCALTIME ( unsigned_integer )
         ::= 'LOCALTIME' ( '(' unsigned_integer ')' )?
Referenced by:

current_timestamp_value_function

CURRENT_TIMESTAMP ( unsigned_integer )
         ::= 'CURRENT_TIMESTAMP' ( '(' unsigned_integer ')' )?
Referenced by:

current_local_timestamp_value_function

LOCALTIMESTAMP ( unsigned_integer )
         ::= 'LOCALTIMESTAMP' ( '(' unsigned_integer ')' )?
Referenced by:

interval_value_expression

interval_term ( datetime_value_expression - datetime_term ) interval_qualifier
         ::= interval_term
           | '(' datetime_value_expression '-' datetime_term ')' interval_qualifier

interval_term

interval_factor * / factor
         ::= interval_factor ( ( '*' | '/' ) factor )?

interval_factor

+ - interval_primary
         ::= ( '+' | '-' )? interval_primary
Referenced by:

interval_primary

interval_value_function array_value_expression interval_qualifier
         ::= interval_value_function

interval_value_function

interval_absolute_value_function
         ::= interval_absolute_value_function
Referenced by:

interval_absolute_value_function

ABS ( interval_value_expression )
         ::= 'ABS' '(' interval_value_expression ')'
Referenced by:

boolean_value_expression

boolean_term OR
         ::= boolean_term ( 'OR' boolean_term )*

boolean_term

boolean_factor AND
         ::= boolean_factor ( 'AND' boolean_factor )*
Referenced by:

boolean_factor

NOT boolean_test
         ::= 'NOT'? boolean_test
Referenced by:

boolean_test

boolean_primary IS NOT truth_value
         ::= boolean_primary ( 'IS' 'NOT'? truth_value )?
Referenced by:

truth_value

TRUE FALSE UNKNOWN
         ::= 'TRUE'
           | 'FALSE'
           | 'UNKNOWN'
Referenced by:

boolean_primary

predicate boolean_predicand
         ::= predicate
           | boolean_predicand
Referenced by:

boolean_predicand

parenthesized_boolean_value_expression numeric_value_expression
           | numeric_value_expression
Referenced by:

parenthesized_boolean_value_expression

( boolean_value_expression )
         ::= '(' boolean_value_expression ')'
Referenced by:

array_value_expression

array_primary ||
         ::= array_primary ( '||' array_primary )*

array_value_expression_1

array_value_expression
         ::= array_value_expression
Not referenced by any.

array_primary

array_value_function multiset_value_expression
         ::= array_value_function
           | multiset_value_expression
Referenced by:

array_value_function

trim_array_function
         ::= trim_array_function
Referenced by:

trim_array_function

TRIM_ARRAY ( array_value_expression , numeric_value_expression )
         ::= 'TRIM_ARRAY' '(' array_value_expression ',' numeric_value_expression ')'
Referenced by:

array_value_constructor

array_value_constructor_by_enumeration array_value_constructor_by_query
           | array_value_constructor_by_query

array_value_constructor_by_enumeration

ARRAY left_bracket_or_trigraph array_element_list right_bracket_or_trigraph
Referenced by:

array_element_list

array_element ,
         ::= array_element ( ',' array_element )*

array_element

value_expression
         ::= value_expression
Referenced by:

array_value_constructor_by_query

ARRAY subquery
         ::= 'ARRAY' subquery
Referenced by:

multiset_value_expression

multiset_term MULTISET UNION EXCEPT ALL DISTINCT multiset_term
         ::= multiset_term ( 'MULTISET' ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? multiset_term )?

multiset_term

multiset_primary MULTISET INTERSECT ALL DISTINCT multiset_primary
         ::= multiset_primary ( 'MULTISET' 'INTERSECT' ( 'ALL' | 'DISTINCT' )? multiset_primary )?

multiset_primary

multiset_set_function value_expression_primary
         ::= multiset_set_function
           | value_expression_primary
Referenced by:

multiset_set_function

SET ( multiset_value_expression )
         ::= 'SET' '(' multiset_value_expression ')'
Referenced by:

multiset_value_constructor

multiset_value_constructor_by_enumeration multiset_value_constructor_by_query table_value_constructor_by_query
           | multiset_value_constructor_by_query
           | table_value_constructor_by_query

multiset_value_constructor_by_enumeration

MULTISET left_bracket_or_trigraph multiset_element_list right_bracket_or_trigraph

multiset_element_list

multiset_element ,
         ::= multiset_element ( ',' multiset_element )*

multiset_element

value_expression
         ::= value_expression
Referenced by:

multiset_value_constructor_by_query

MULTISET subquery
         ::= 'MULTISET' subquery

table_value_constructor_by_query

TABLE subquery
         ::= 'TABLE' subquery

row_value_constructor

explicit_row_value_constructor common_value_expression boolean_value_expression
         ::= explicit_row_value_constructor
           | common_value_expression
           | boolean_value_expression

explicit_row_value_constructor

ROW ( row_value_constructor_element_list ( row_value_constructor_element , row_value_constructor_element_list ) subquery
           | subquery

row_value_constructor_element_list

row_value_constructor_element ,

row_value_constructor_element

value_expression
         ::= value_expression

contextually_typed_row_value_constructor

common_value_expression boolean_value_expression contextually_typed_value_specification ( contextually_typed_value_specification contextually_typed_row_value_constructor_element , contextually_typed_row_value_constructor_element_list ROW ( contextually_typed_row_value_constructor_element_list )
         ::= common_value_expression
           | boolean_value_expression

contextually_typed_row_value_constructor_element_list

contextually_typed_row_value_constructor_element ,

contextually_typed_row_value_constructor_element

contextually_typed_value_specification

row_value_constructor_predicand

common_value_expression explicit_row_value_constructor
         ::= common_value_expression
           | explicit_row_value_constructor
Referenced by:

row_value_expression

explicit_row_value_constructor row_value_special_case
         ::= explicit_row_value_constructor
           | row_value_special_case

table_row_value_expression

row_value_constructor row_value_special_case
         ::= row_value_constructor
           | row_value_special_case

contextually_typed_row_value_expression

contextually_typed_row_value_constructor row_value_special_case
           | row_value_special_case

row_value_predicand

row_value_constructor_predicand row_value_special_case
         ::= row_value_constructor_predicand
           | row_value_special_case

row_value_special_case

common_value_expression nonparenthesized_value_expression_primary
         ::= common_value_expression

table_value_constructor

VALUES row_value_expression_list
         ::= 'VALUES' row_value_expression_list
Referenced by:

row_value_expression_list

table_row_value_expression ,
Referenced by:

contextually_typed_table_value_constructor

VALUES contextually_typed_row_value_expression_list
         ::= 'VALUES' contextually_typed_row_value_expression_list
Referenced by:

contextually_typed_row_value_expression_list

contextually_typed_row_value_expression ,

table_expression

from_clause where_clause group_by_clause having_clause window_clause

from_clause

FROM table_reference_list
         ::= 'FROM' table_reference_list
Referenced by:

table_reference_list

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

table_reference

table_factor joined_table
         ::= table_factor joined_table*

table_factor

table_primary sample_clause partitioned_join_table

sample_clause

TABLESAMPLE sample_method ( sample_percentage ) repeatable_clause
         ::= 'TABLESAMPLE' sample_method '(' sample_percentage ')' repeatable_clause?
Referenced by:

sample_method

BERNOULLI SYSTEM
         ::= 'BERNOULLI'
           | 'SYSTEM'
Referenced by:

repeatable_clause

REPEATABLE ( repeat_argument )
         ::= 'REPEATABLE' '(' repeat_argument ')'
Referenced by:

sample_percentage

numeric_value_expression
         ::= numeric_value_expression
Referenced by:

repeat_argument

numeric_value_expression
         ::= numeric_value_expression
Referenced by:

table_primary

table_or_query_name derived_table parenthesized_joined_table lateral_derived_table collection_derived_table table_function_derived_table only_spec data_change_delta_table alias

alias

AS identifier identifier_suffix_chain ( column_name_list )
Referenced by:

system_version_specification

AS OF SYSTEM TIME VERSIONS BEFORE AFTER SYSTEM TIME BETWEEN ASYMMETRIC SYMMETRIC SYSTEM TIME datetime_value_expression AND datetime_value_expression
         ::= ( 'AS' 'OF' 'SYSTEM' 'TIME' | 'VERSIONS' ( ( 'BEFORE' | 'AFTER' ) 'SYSTEM' 'TIME' | 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? 'SYSTEM' 'TIME' datetime_value_expression 'AND' ) ) datetime_value_expression
Not referenced by any.

only_spec

ONLY ( table_or_query_name )
         ::= 'ONLY' '(' table_or_query_name ')'
Referenced by:

lateral_derived_table

LATERAL subquery
         ::= 'LATERAL' subquery
Referenced by:

collection_derived_table

UNNEST ( collection_value_expression , ) WITH ORDINALITY
         ::= 'UNNEST' '(' collection_value_expression ( ',' collection_value_expression )* ')' ( 'WITH' 'ORDINALITY' )?
Referenced by:

table_function_derived_table

TABLE ( collection_value_expression )
         ::= 'TABLE' '(' collection_value_expression ')'
Referenced by:

derived_table

query_expression subquery
         ::= query_expression
           | subquery
Referenced by:

table_or_query_name

table_name identifier
         ::= table_name
           | identifier

column_name_list

identifier ,
         ::= identifier ( ',' identifier )*

data_change_delta_table

result_option TABLE ( data_change_statement )
         ::= result_option 'TABLE' '(' data_change_statement ')'
Referenced by:

data_change_statement

delete_statement_searched insert_statement merge_statement update_statement_searched
         ::= delete_statement_searched
           | insert_statement
           | merge_statement
           | update_statement_searched
Referenced by:

result_option

FINAL NEW OLD
         ::= 'FINAL'
           | 'NEW'
           | 'OLD'
Referenced by:

parenthesized_joined_table

( table_primary table_reference joined_table )
         ::= '(' ( table_primary | table_reference ) joined_table* ')'
Referenced by:

joined_table

cross_join qualified_join natural_join
         ::= cross_join
           | qualified_join
           | natural_join

cross_join

CROSS JOIN table_factor
         ::= 'CROSS' 'JOIN' table_factor
Referenced by:

qualified_join

join_type JOIN table_reference partitioned_join_table join_specification
Referenced by:

partitioned_join_table

PARTITION BY partitioned_join_column_reference_list
         ::= 'PARTITION' 'BY' partitioned_join_column_reference_list

partitioned_join_column_reference_list

( partitioned_join_column_reference , )
Referenced by:

partitioned_join_column_reference

column_reference
         ::= column_reference

natural_join

NATURAL join_type JOIN table_factor partitioned_join_table
         ::= 'NATURAL' join_type? 'JOIN' ( table_factor | partitioned_join_table )
Referenced by:

join_specification

join_condition named_columns_join
         ::= join_condition
           | named_columns_join
Referenced by:

join_condition

ON search_condition
         ::= 'ON' search_condition
Referenced by:

named_columns_join

USING ( join_column_list )
         ::= 'USING' '(' join_column_list ')'
Referenced by:

join_type

INNER outer_join_type OUTER
         ::= 'INNER'
           | outer_join_type 'OUTER'?

outer_join_type

LEFT RIGHT FULL
         ::= 'LEFT'
           | 'RIGHT'
           | 'FULL'
Referenced by:

join_column_list

column_name_list
         ::= column_name_list
Referenced by:

where_clause

WHERE search_condition
         ::= 'WHERE' search_condition
Referenced by:

group_by_clause

GROUP BY set_quantifier grouping_element_list
         ::= 'GROUP' 'BY' set_quantifier? grouping_element_list
Referenced by:

grouping_element_list

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

grouping_element

rollup_list cube_list grouping_sets_specification empty_grouping_set ordinary_grouping_set
         ::= rollup_list
           | cube_list
           | grouping_sets_specification
           | empty_grouping_set
           | ordinary_grouping_set
Referenced by:

ordinary_grouping_set

grouping_column_reference ( grouping_column_reference_list )
         ::= grouping_column_reference
           | '(' grouping_column_reference_list ')'

grouping_column_reference

grouping_expression column_reference collate_clause

grouping_column_reference_list

grouping_column_reference ,
Referenced by:

rollup_list

ROLLUP ( ordinary_grouping_set_list )
         ::= 'ROLLUP' '(' ordinary_grouping_set_list ')'

ordinary_grouping_set_list

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

cube_list

CUBE ( ordinary_grouping_set_list )
         ::= 'CUBE' '(' ordinary_grouping_set_list ')'

grouping_sets_specification

GROUPING SETS ( grouping_set_list )
         ::= 'GROUPING' 'SETS' '(' grouping_set_list ')'

grouping_set_list

grouping_set ,
         ::= grouping_set ( ',' grouping_set )*

grouping_set

rollup_list cube_list grouping_sets_specification empty_grouping_set ordinary_grouping_set
         ::= rollup_list
           | cube_list
           | grouping_sets_specification
           | empty_grouping_set
           | ordinary_grouping_set
Referenced by:

empty_grouping_set

( )
         ::= '(' ')'

having_clause

HAVING search_condition
         ::= 'HAVING' search_condition
Referenced by:

window_clause

WINDOW window_definition_list
         ::= 'WINDOW' window_definition_list
Referenced by:

window_definition_list

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

window_definition

identifier AS window_specification
         ::= identifier 'AS' window_specification
Referenced by:

window_specification

( window_specification_details )
         ::= '(' window_specification_details? ')'

window_specification_details

window_partition_clause window_order_clause window_frame_clause existing_identifier
Referenced by:

existing_identifier

identifier
         ::= identifier

window_partition_clause

PARTITION BY window_partition_column_reference_list
         ::= 'PARTITION' 'BY' window_partition_column_reference_list

window_partition_column_reference_list

window_partition_column_reference ,
Referenced by:

window_partition_column_reference

value_expression column_reference collate_clause
         ::= ( value_expression | column_reference ) collate_clause?

window_order_clause

ORDER BY sort_specification_list
         ::= 'ORDER' 'BY' sort_specification_list

window_frame_clause

window_frame_units window_frame_extent window_frame_exclusion

window_frame_units

ROWS RANGE
         ::= 'ROWS'
           | 'RANGE'
Referenced by:

window_frame_extent

window_frame_start window_frame_between
         ::= window_frame_start
           | window_frame_between
Referenced by:

window_frame_start

UNBOUNDED PRECEDING CURRENT ROW window_frame_preceding
         ::= 'UNBOUNDED' 'PRECEDING'
           | 'CURRENT' 'ROW'
           | window_frame_preceding

window_frame_preceding

value_expression PRECEDING
         ::= value_expression 'PRECEDING'
Referenced by:

window_frame_between

BETWEEN window_frame_bound AND window_frame_bound
         ::= 'BETWEEN' window_frame_bound 'AND' window_frame_bound
Referenced by:

window_frame_bound

window_frame_start UNBOUNDED FOLLOWING window_frame_following
         ::= window_frame_start
           | 'UNBOUNDED' 'FOLLOWING'
           | window_frame_following
Referenced by:

window_frame_following

value_expression FOLLOWING
         ::= value_expression 'FOLLOWING'
Referenced by:

window_frame_exclusion

EXCLUDE CURRENT ROW GROUP TIES NO OTHERS
         ::= 'EXCLUDE' ( 'CURRENT' 'ROW' | 'GROUP' | 'TIES' | 'NO' 'OTHERS' )
Referenced by:

query_specification

SELECT set_quantifier select_list table_expression
         ::= 'SELECT' set_quantifier? select_list table_expression?

select_list

* select_sublist , , * , select_sublist
         ::= ( '*' | select_sublist ( ',' select_sublist )* ( ',' '*' )? ) ( ',' select_sublist )*

select_sublist

derived_column . * AS ( all_fields_column_name_list ) as_clause
         ::= derived_column ( '.' '*' ( 'AS' '(' all_fields_column_name_list ')' )? | as_clause )?
Referenced by:

qualified_asterisk

asterisked_identifier_chain . * all_fields_reference
         ::= asterisked_identifier_chain '.' '*'
           | all_fields_reference
Not referenced by any.

asterisked_identifier_chain

identifier .
         ::= identifier ( '.' identifier )*
Referenced by:

derived_column

value_expression as_clause
         ::= value_expression as_clause?
Referenced by:

as_clause

AS identifier
         ::= 'AS'? identifier

all_fields_reference

value_expression_primary . * AS ( all_fields_column_name_list )
         ::= value_expression_primary '.' '*' ( 'AS' '(' all_fields_column_name_list ')' )?
Referenced by:

all_fields_column_name_list

column_name_list
         ::= column_name_list

query_expression

with_clause query_expression_body order_by_clause result_offset_clause fetch_first_clause limit_clause

with_clause

WITH RECURSIVE with_list
         ::= 'WITH' 'RECURSIVE'? with_list
Referenced by:

with_list

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

with_list_element

identifier ( column_name_list ) AS subquery search_or_cycle_clause
         ::= identifier ( '(' column_name_list ')' )? 'AS' subquery search_or_cycle_clause?
Referenced by:

query_expression_body

query_term corresponding_spec ALL DISTINCT UNION EXCEPT
         ::= query_term ( ( 'UNION' | 'EXCEPT' ) ( 'ALL' | 'DISTINCT' )? corresponding_spec? query_term )*

query_term

query_primary corresponding_spec ALL DISTINCT INTERSECT
         ::= query_primary ( 'INTERSECT' ( 'ALL' | 'DISTINCT' )? corresponding_spec? query_primary )*
Referenced by:

query_primary

( query_expression_body order_by_clause limit_clause result_offset_clause fetch_first_clause ) simple_table
           | simple_table
Referenced by:

simple_table

table_value_constructor explicit_table query_specification
         ::= table_value_constructor
           | explicit_table
           | query_specification
Referenced by:

explicit_table

TABLE table_or_query_name
         ::= 'TABLE' table_or_query_name
Referenced by:

corresponding_spec

CORRESPONDING BY ( column_name_list )
         ::= 'CORRESPONDING' ( 'BY' '(' column_name_list ')' )?

order_by_clause

ORDER BY sort_specification_list
         ::= 'ORDER' 'BY' sort_specification_list

result_offset_clause

OFFSET simple_value_specification ROW ROWS
         ::= 'OFFSET' simple_value_specification ( 'ROW' | 'ROWS' )

fetch_first_clause

FETCH FIRST NEXT simple_value_specification ROW ROWS ONLY
         ::= 'FETCH' ( 'FIRST' | 'NEXT' ) simple_value_specification? ( 'ROW' | 'ROWS' ) 'ONLY'

search_or_cycle_clause

search_clause cycle_clause cycle_clause
         ::= search_clause cycle_clause?
           | cycle_clause
Referenced by:

search_clause

SEARCH recursive_search_order SET identifier
         ::= 'SEARCH' recursive_search_order 'SET' identifier
Referenced by:

recursive_search_order

DEPTH BREADTH FIRST BY column_name_list
         ::= ( 'DEPTH' | 'BREADTH' ) 'FIRST' 'BY' column_name_list
Referenced by:

cycle_clause

CYCLE cycle_column_list SET identifier TO value_expression DEFAULT value_expression USING identifier
         ::= 'CYCLE' cycle_column_list 'SET' identifier 'TO' value_expression 'DEFAULT' value_expression 'USING' identifier
Referenced by:

cycle_column_list

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

subquery

( query_expression )

predicate

exists_predicate unique_predicate row_value_predicand comparison_predicate between_predicate in_predicate like_predicate similar_predicate regex_like_predicate null_predicate quantified_comparison_predicate normalized_predicate match_predicate overlaps_predicate distinct_predicate member_predicate submultiset_predicate set_predicate type_predicate
         ::= exists_predicate
           | unique_predicate
Referenced by:

comparison_predicate

comparison_predicate_part_2
         ::= comparison_predicate_part_2
Referenced by:

comparison_predicate_part_2

comp_op row_value_predicand
         ::= comp_op row_value_predicand

comp_op

= <> < > <= >= !=
comp_op  ::= '='
           | '<>'
           | '<'
           | '>'
           | '<='
           | '>='
           | '!='

between_predicate

between_predicate_part_2
         ::= between_predicate_part_2
Referenced by:

between_predicate_part_2

NOT BETWEEN ASYMMETRIC SYMMETRIC row_value_predicand AND row_value_predicand
         ::= 'NOT'? 'BETWEEN' ( 'ASYMMETRIC' | 'SYMMETRIC' )? row_value_predicand 'AND' row_value_predicand

in_predicate

in_predicate_part_2
         ::= in_predicate_part_2
Referenced by:

in_predicate_part_2

NOT IN in_predicate_value
         ::= 'NOT'? 'IN' in_predicate_value
Referenced by:

in_predicate_value

( in_value_list ) subquery
         ::= '(' in_value_list ')'
           | subquery
Referenced by:

in_value_list

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

like_predicate

character_like_predicate octet_like_predicate
         ::= character_like_predicate
           | octet_like_predicate
Referenced by:

character_like_predicate

character_like_predicate_part_2
         ::= character_like_predicate_part_2
Referenced by:

character_like_predicate_part_2

NOT LIKE character_value_expression ESCAPE character_value_expression
         ::= 'NOT'? 'LIKE' character_value_expression ( 'ESCAPE' character_value_expression )?

octet_like_predicate

octet_like_predicate_part_2
         ::= octet_like_predicate_part_2
Referenced by:

octet_like_predicate_part_2

NOT LIKE binary_value_expression ESCAPE binary_value_expression
         ::= 'NOT'? 'LIKE' binary_value_expression ( 'ESCAPE' binary_value_expression )?

similar_predicate

similar_predicate_part_2
         ::= similar_predicate_part_2
Referenced by:

similar_predicate_part_2

NOT SIMILAR TO character_value_expression ESCAPE character_value_expression
         ::= 'NOT'? 'SIMILAR' 'TO' character_value_expression ( 'ESCAPE' character_value_expression )?

regex_like_predicate

regex_like_predicate_part_2
         ::= regex_like_predicate_part_2
Referenced by:

regex_like_predicate_part_2

NOT LIKE_REGEX character_value_expression FLAG character_value_expression
         ::= 'NOT'? 'LIKE_REGEX' character_value_expression ( 'FLAG' character_value_expression )?

null_predicate

null_predicate_part_2
         ::= null_predicate_part_2
Referenced by:

null_predicate_part_2

IS NOT NULL
         ::= 'IS' 'NOT'? 'NULL'

quantified_comparison_predicate

quantified_comparison_predicate_part_2
Referenced by:

quantified_comparison_predicate_part_2

comp_op ALL SOME ANY subquery
         ::= comp_op ( 'ALL' | 'SOME' | 'ANY' ) subquery

exists_predicate

EXISTS subquery
         ::= 'EXISTS' subquery
Referenced by:

unique_predicate

UNIQUE subquery
         ::= 'UNIQUE' subquery
Referenced by:

normalized_predicate

normalized_predicate_part_2
         ::= normalized_predicate_part_2
Referenced by:

normalized_predicate_part_2

IS NOT normal_form NORMALIZED
         ::= 'IS' 'NOT'? normal_form? 'NORMALIZED'

match_predicate

match_predicate_part_2
         ::= match_predicate_part_2
Referenced by:

match_predicate_part_2

MATCH UNIQUE SIMPLE PARTIAL FULL subquery
         ::= 'MATCH' 'UNIQUE'? ( 'SIMPLE' | 'PARTIAL' | 'FULL' )? subquery

overlaps_predicate

overlaps_predicate_part_2
         ::= overlaps_predicate_part_2
Referenced by:

overlaps_predicate_part_1

row_value_predicand_1
         ::= row_value_predicand_1
Referenced by:

overlaps_predicate_part_2

OVERLAPS row_value_predicand_2
         ::= 'OVERLAPS' row_value_predicand_2

row_value_predicand_1

row_value_predicand
         ::= row_value_predicand

row_value_predicand_2

row_value_predicand
         ::= row_value_predicand

distinct_predicate

distinct_predicate_part_2
         ::= distinct_predicate_part_2
Referenced by:

distinct_predicate_part_2

IS NOT DISTINCT FROM row_value_predicand_4
         ::= 'IS' 'NOT'? 'DISTINCT' 'FROM' row_value_predicand_4

row_value_predicand_3

row_value_predicand
         ::= row_value_predicand
Not referenced by any.

row_value_predicand_4

row_value_predicand
         ::= row_value_predicand

member_predicate

member_predicate_part_2
         ::= member_predicate_part_2
Referenced by:

member_predicate_part_2

NOT MEMBER OF multiset_value_expression
         ::= 'NOT'? 'MEMBER' 'OF'? multiset_value_expression

submultiset_predicate

submultiset_predicate_part_2
         ::= submultiset_predicate_part_2
Referenced by:

submultiset_predicate_part_2

NOT SUBMULTISET OF multiset_value_expression
         ::= 'NOT'? 'SUBMULTISET' 'OF'? multiset_value_expression

set_predicate

set_predicate_part_2
         ::= set_predicate_part_2
Referenced by:

set_predicate_part_2

IS NOT A SET
         ::= 'IS' 'NOT'? 'A' 'SET'

type_predicate

type_predicate_part_2
         ::= type_predicate_part_2
Referenced by:

type_predicate_part_2

IS NOT OF ( type_list )
         ::= 'IS' 'NOT'? 'OF' '(' type_list ')'

type_list

user_defined_type_specification ,
Referenced by:

user_defined_type_specification

exclusive_user_defined_type_specification inclusive_user_defined_type_specification
Referenced by:

inclusive_user_defined_type_specification

path_resolved_user_defined_type_name

exclusive_user_defined_type_specification

ONLY path_resolved_user_defined_type_name
         ::= 'ONLY' path_resolved_user_defined_type_name

search_condition

boolean_value_expression
         ::= boolean_value_expression

interval_qualifier

start_field TO end_field single_datetime_field
         ::= start_field 'TO' end_field
           | single_datetime_field

start_field

non_second_primary_datetime_field ( interval_leading_field_precision )

end_field

non_second_primary_datetime_field SECOND ( interval_fractional_seconds_precision )
         ::= non_second_primary_datetime_field
           | 'SECOND' ( '(' interval_fractional_seconds_precision ')' )?
Referenced by:

single_datetime_field

start_field SECOND ( interval_leading_field_precision , interval_fractional_seconds_precision )
         ::= start_field
           | 'SECOND' ( '(' interval_leading_field_precision ( ',' interval_fractional_seconds_precision )? ')' )?
Referenced by:

primary_datetime_field

non_second_primary_datetime_field SECOND
         ::= non_second_primary_datetime_field
           | 'SECOND'
Referenced by:

non_second_primary_datetime_field

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

interval_fractional_seconds_precision

unsigned_integer
         ::= unsigned_integer

interval_leading_field_precision

unsigned_integer
         ::= unsigned_integer

language_clause

LANGUAGE language_name
         ::= 'LANGUAGE' language_name

language_name

ADA C COBOL FORTRAN M MUMPS PASCAL PLI SQL
         ::= 'ADA'
           | 'C'
           | 'COBOL'
           | 'FORTRAN'
           | 'M'
           | 'MUMPS'
           | 'PASCAL'
           | 'PLI'
           | 'SQL'
Referenced by:

path_specification

PATH schema_name_list
         ::= 'PATH' schema_name_list

schema_name_list

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

routine_invocation

routine_name SQL_argument_list
         ::= routine_name SQL_argument_list

routine_name

schema_name . identifier
         ::= ( schema_name '.' )? identifier
Referenced by:

SQL_argument_list

( SQL_argument , )
         ::= '(' ( SQL_argument ( ',' SQL_argument )* )? ')'

SQL_argument

lambda value_expression generalized_expression named_argument_specification contextually_typed_value_specification target_specification
         ::= lambda
           | value_expression generalized_expression?
           | named_argument_specification
           | target_specification
Referenced by:

generalized_expression

AS path_resolved_user_defined_type_name
         ::= 'AS' path_resolved_user_defined_type_name
Referenced by:

named_argument_specification

identifier => named_argument_SQL_argument
         ::= identifier '=>' named_argument_SQL_argument
Referenced by:

named_argument_SQL_argument

value_expression contextually_typed_value_specification target_specification
         ::= value_expression
           | target_specification

character_set_specification

standard_character_set_name implementation_defined_character_set_name user_defined_character_set_name
         ::= standard_character_set_name
           | user_defined_character_set_name

standard_character_set_name

character_set_name
         ::= character_set_name

implementation_defined_character_set_name

character_set_name
         ::= character_set_name

user_defined_character_set_name

character_set_name
         ::= character_set_name

specific_routine_designator

SPECIFIC routine_type schema_qualified_name routine_type member_name FOR schema_resolved_user_defined_type_name
         ::= 'SPECIFIC' routine_type schema_qualified_name

routine_type

ROUTINE FUNCTION PROCEDURE INSTANCE STATIC CONSTRUCTOR METHOD
         ::= 'ROUTINE'
           | 'FUNCTION'
           | 'PROCEDURE'
           | ( 'INSTANCE' | 'STATIC' | 'CONSTRUCTOR' )? 'METHOD'

member_name

member_name_alternatives data_type_list

member_name_alternatives

schema_qualified_name identifier
         ::= schema_qualified_name
           | identifier
Referenced by:

data_type_list

( data_type , )
         ::= '(' ( data_type ( ',' data_type )* )? ')'

collate_clause

COLLATE schema_qualified_name
         ::= 'COLLATE' schema_qualified_name

constraint_name_definition

CONSTRAINT schema_qualified_name
         ::= 'CONSTRAINT' schema_qualified_name

constraint_characteristics

constraint_check_time NOT DEFERRABLE NOT DEFERRABLE constraint_check_time constraint_enforcement constraint_enforcement
         ::= ( constraint_check_time ( 'NOT'? 'DEFERRABLE' )? | 'NOT'? 'DEFERRABLE' constraint_check_time? ) constraint_enforcement?
           | constraint_enforcement

constraint_check_time

INITIALLY DEFERRED IMMEDIATE
         ::= 'INITIALLY' ( 'DEFERRED' | 'IMMEDIATE' )

constraint_enforcement

NOT ENFORCED
         ::= 'NOT'? 'ENFORCED'

aggregate_function

COUNT ( * ) count general_set_function binary_set_function ordered_set_function array_aggregate_function presto_aggregations filter_clause

general_set_function

set_function_type ( set_quantifier value_expression extra_args_to_agg )
Referenced by:

set_function_type

computational_operation
         ::= computational_operation
Referenced by:

computational_operation

AVG MAX MIN SUM EVERY ANY SOME COUNT STDDEV_POP STDDEV_SAMP VAR_SAMP VAR_POP COLLECT FUSION INTERSECTION
         ::= 'AVG'
           | 'MAX'
           | 'MIN'
           | 'SUM'
           | 'EVERY'
           | 'ANY'
           | 'SOME'
           | 'COUNT'
           | 'STDDEV_POP'
           | 'STDDEV_SAMP'
           | 'VAR_SAMP'
           | 'VAR_POP'
           | 'COLLECT'
           | 'FUSION'
           | 'INTERSECTION'
Referenced by:

set_quantifier

DISTINCT ALL
         ::= 'DISTINCT'
           | 'ALL'

filter_clause

FILTER ( WHERE search_condition )
         ::= 'FILTER' '(' 'WHERE' search_condition ')'

binary_set_function

binary_set_function_type ( dependent_variable_expression , independent_variable_expression )
Referenced by:

binary_set_function_type

COVAR_POP COVAR_SAMP CORR REGR_SLOPE REGR_INTERCEPT REGR_COUNT REGR_R2 REGR_AVGX REGR_AVGY REGR_SXX REGR_SYY REGR_SXY
         ::= 'COVAR_POP'
           | 'COVAR_SAMP'
           | 'CORR'
           | 'REGR_SLOPE'
           | 'REGR_INTERCEPT'
           | 'REGR_COUNT'
           | 'REGR_R2'
           | 'REGR_AVGX'
           | 'REGR_AVGY'
           | 'REGR_SXX'
           | 'REGR_SYY'
           | 'REGR_SXY'
Referenced by:

dependent_variable_expression

numeric_value_expression
         ::= numeric_value_expression
Referenced by:

independent_variable_expression

numeric_value_expression
         ::= numeric_value_expression
Referenced by:

ordered_set_function

hypothetical_set_function inverse_distribution_function
         ::= hypothetical_set_function
           | inverse_distribution_function
Referenced by:

hypothetical_set_function

rank_function_type ( hypothetical_set_function_value_expression_list ) within_group_specification
Referenced by:

within_group_specification

WITHIN GROUP ( ORDER BY sort_specification_list )
         ::= 'WITHIN' 'GROUP' '(' 'ORDER' 'BY' sort_specification_list ')'

hypothetical_set_function_value_expression_list

value_expression ,
         ::= value_expression ( ',' value_expression )*

inverse_distribution_function

inverse_distribution_function_type ( inverse_distribution_function_argument ) within_group_specification
Referenced by:

inverse_distribution_function_argument

numeric_value_expression
         ::= numeric_value_expression

inverse_distribution_function_type

PERCENTILE_CONT PERCENTILE_DISC
         ::= 'PERCENTILE_CONT'
           | 'PERCENTILE_DISC'

array_aggregate_function

ARRAY_AGG ( DISTINCT value_expression ORDER BY sort_specification_list )
         ::= 'ARRAY_AGG' '(' 'DISTINCT'? value_expression ( 'ORDER' 'BY' sort_specification_list )? ')'
Referenced by:

sort_specification_list

sort_specification ,
         ::= sort_specification ( ',' sort_specification )*

sort_specification

sort_key ordering_specification null_ordering
Referenced by:

sort_key

value_expression
Referenced by:

ordering_specification

ASC DESC
         ::= 'ASC'
           | 'DESC'
Referenced by:

null_ordering

NULLS FIRST LAST
         ::= 'NULLS' ( 'FIRST' | 'LAST' )
Referenced by:

schema_definition

CREATE SCHEMA if_not_exists schema_name_clause schema_character_set_or_path schema_element

schema_character_set_or_path

schema_character_set_specification schema_path_specification schema_path_specification schema_character_set_specification
Referenced by:

schema_name_clause

schema_name AUTHORIZATION identifier AUTHORIZATION identifier
         ::= schema_name ( 'AUTHORIZATION' identifier )?
           | 'AUTHORIZATION' identifier
Referenced by:

schema_character_set_specification

DEFAULT CHARACTER SET character_set_specification
         ::= 'DEFAULT' 'CHARACTER' 'SET' character_set_specification

schema_path_specification

path_specification
         ::= path_specification

schema_element

table_definition view_definition domain_definition character_set_definition collation_definition transliteration_definition assertion_definition trigger_definition user_defined_type_definition user_defined_cast_definition user_defined_ordering_definition transform_definition schema_routine sequence_generator_definition grant_statement role_definition
         ::= table_definition
           | view_definition
           | domain_definition
           | character_set_definition
           | collation_definition
           | transliteration_definition
           | assertion_definition
           | trigger_definition
           | user_defined_type_definition
           | user_defined_cast_definition
           | user_defined_ordering_definition
           | transform_definition
           | schema_routine
           | sequence_generator_definition
           | grant_statement
           | role_definition
Referenced by:

drop_schema_statement

DROP SCHEMA schema_name drop_behavior
         ::= 'DROP' 'SCHEMA' schema_name drop_behavior

drop_behavior

CASCADE RESTRICT
         ::= 'CASCADE'
           | 'RESTRICT'

table_definition

CREATE table_scope TABLE if_not_exists table_name table_description WITH system_versioning_clause table_attributes table_contents_source table_contents_source table_description WITH system_versioning_clause table_attributes ON COMMIT table_commit_action ROWS

table_contents_source

typed_table_clause as_subquery_clause table_element_list
         ::= typed_table_clause
           | as_subquery_clause
           | table_element_list
Referenced by:

table_scope

global_or_local TEMPORARY
         ::= global_or_local 'TEMPORARY'
Referenced by:

global_or_local

GLOBAL LOCAL
         ::= 'GLOBAL'
           | 'LOCAL'
Referenced by:

system_versioning_clause

SYSTEM VERSIONING retention_period_specification
         ::= 'SYSTEM' 'VERSIONING' retention_period_specification?

retention_period_specification

KEEP VERSIONS FOREVER FOR length_of_time time_unit
         ::= 'KEEP' 'VERSIONS' ( 'FOREVER' | 'FOR' length_of_time time_unit )

length_of_time

unsigned_integer
         ::= unsigned_integer

time_unit

SECOND SECONDS MINUTE MINUTES HOUR HOURS DAY DAYS MONTH MONTHS YEAR YEARS
         ::= 'SECOND'
           | 'SECONDS'
           | 'MINUTE'
           | 'MINUTES'
           | 'HOUR'
           | 'HOURS'
           | 'DAY'
           | 'DAYS'
           | 'MONTH'
           | 'MONTHS'
           | 'YEAR'
           | 'YEARS'

table_commit_action

PRESERVE DELETE
         ::= 'PRESERVE'
           | 'DELETE'

table_element_list

( table_element , )
         ::= '(' table_element ( ',' table_element )* ')'

table_element

column_definition table_constraint_definition like_clause
         ::= column_definition
           | table_constraint_definition
           | like_clause
Referenced by:

typed_table_clause

OF path_resolved_user_defined_type_name subtable_clause typed_table_element_list
Referenced by:

typed_table_element_list

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

typed_table_element

column_options table_constraint_definition self_referencing_column_specification
         ::= column_options
           | table_constraint_definition
Referenced by:

self_referencing_column_specification

REF IS identifier reference_generation
         ::= 'REF' 'IS' identifier reference_generation?

reference_generation

SYSTEM USER GENERATED DERIVED
         ::= ( 'SYSTEM' | 'USER' ) 'GENERATED'
           | 'DERIVED'

column_options

identifier WITH OPTIONS column_option_list
         ::= identifier 'WITH' 'OPTIONS' column_option_list
Referenced by:

column_option_list

scope_clause default_clause column_constraint_definition
Referenced by:

subtable_clause

UNDER supertable_clause
         ::= 'UNDER' supertable_clause
Referenced by:

supertable_clause

supertable_name
         ::= supertable_name
Referenced by:

supertable_name

table_name
         ::= table_name
Referenced by:

like_clause

LIKE table_name like_options
         ::= 'LIKE' table_name like_options?
Referenced by:

like_options

like_option
         ::= like_option+
Referenced by:

like_option

identity_option column_default_option generation_option INCLUDING PROPERTIES
         ::= identity_option
           | column_default_option
           | generation_option
           | 'INCLUDING' 'PROPERTIES'
Referenced by:

identity_option

INCLUDING EXCLUDING IDENTITY
         ::= ( 'INCLUDING' | 'EXCLUDING' ) 'IDENTITY'
Referenced by:

column_default_option

INCLUDING EXCLUDING DEFAULTS
         ::= ( 'INCLUDING' | 'EXCLUDING' ) 'DEFAULTS'
Referenced by:

generation_option

INCLUDING EXCLUDING GENERATED
         ::= ( 'INCLUDING' | 'EXCLUDING' ) 'GENERATED'
Referenced by:

as_subquery_clause

( column_name_list ) WITH table_attributes AS subquery query_expression with_or_without_data
         ::= ( '(' column_name_list ')' )? ( 'WITH' table_attributes )? 'AS' ( subquery | query_expression ) with_or_without_data?
Referenced by:

with_or_without_data

WITH NO DATA
         ::= 'WITH' 'NO'? 'DATA'
Referenced by:

column_definition

identifier data_type_or_schema_qualified_name default_clause identity_column_specification generation_clause system_version_start_column_specification system_version_end_column_specification column_constraint_definition collate_clause column_description

data_type_or_schema_qualified_name

data_type schema_qualified_name
         ::= data_type
           | schema_qualified_name
Referenced by:

system_version_start_column_specification

timestamp_generation_rule AS SYSTEM VERSION START
         ::= timestamp_generation_rule 'AS' 'SYSTEM' 'VERSION' 'START'
Referenced by:

system_version_end_column_specification

timestamp_generation_rule AS SYSTEM VERSION END
         ::= timestamp_generation_rule 'AS' 'SYSTEM' 'VERSION' 'END'
Referenced by:

timestamp_generation_rule

GENERATED ALWAYS
         ::= 'GENERATED' 'ALWAYS'

column_constraint_definition

constraint_name_definition column_constraint constraint_characteristics

column_constraint

NOT NULL unique_specification references_specification check_constraint_definition
         ::= 'NOT' 'NULL'
           | unique_specification
           | references_specification
           | check_constraint_definition

identity_column_specification

GENERATED ALWAYS BY DEFAULT AS IDENTITY ( common_sequence_generator_options )
         ::= 'GENERATED' ( 'ALWAYS' | 'BY' 'DEFAULT' ) 'AS' 'IDENTITY' ( '(' common_sequence_generator_options ')' )?
Referenced by:

generation_clause

generation_rule AS generation_expression
         ::= generation_rule 'AS' generation_expression
Referenced by:

generation_rule

GENERATED ALWAYS
         ::= 'GENERATED' 'ALWAYS'
Referenced by:

generation_expression

( value_expression )
         ::= '(' value_expression ')'
Referenced by:

default_clause

DEFAULT default_option
         ::= 'DEFAULT' default_option

default_option

literal datetime_value_function USER CURRENT_USER CURRENT_ROLE SESSION_USER SYSTEM_USER CURRENT_CATALOG CURRENT_SCHEMA CURRENT_PATH implicitly_typed_value_specification
         ::= literal
           | datetime_value_function
           | 'USER'
           | 'CURRENT_USER'
           | 'CURRENT_ROLE'
           | 'SESSION_USER'
           | 'SYSTEM_USER'
           | 'CURRENT_CATALOG'
           | 'CURRENT_SCHEMA'
           | 'CURRENT_PATH'
           | implicitly_typed_value_specification
Referenced by:

table_constraint_definition

constraint_name_definition table_constraint constraint_characteristics

table_constraint

unique_constraint_definition referential_constraint_definition check_constraint_definition
         ::= unique_constraint_definition
           | referential_constraint_definition
           | check_constraint_definition

unique_constraint_definition

unique_specification ( unique_column_list ) UNIQUE VALUE
         ::= unique_specification '(' unique_column_list ')'
           | 'UNIQUE' 'VALUE'
Referenced by:

unique_specification

UNIQUE PRIMARY KEY
         ::= 'UNIQUE'
           | 'PRIMARY' 'KEY'

unique_column_list

column_name_list
         ::= column_name_list

referential_constraint_definition

FOREIGN KEY ( referencing_columns ) references_specification
         ::= 'FOREIGN' 'KEY' '(' referencing_columns ')' references_specification
Referenced by:

references_specification

REFERENCES referenced_table_and_columns MATCH match_type referential_triggered_action
         ::= 'REFERENCES' referenced_table_and_columns ( 'MATCH' match_type )? referential_triggered_action?

match_type

FULL PARTIAL SIMPLE
         ::= 'FULL'
           | 'PARTIAL'
           | 'SIMPLE'
Referenced by:

referencing_columns

reference_column_list
         ::= reference_column_list

referenced_table_and_columns

table_name ( reference_column_list )
         ::= table_name ( '(' reference_column_list ')' )?
Referenced by:

reference_column_list

column_name_list
         ::= column_name_list

referential_triggered_action

update_rule delete_rule delete_rule update_rule
         ::= update_rule delete_rule?
           | delete_rule update_rule?
Referenced by:

update_rule

ON UPDATE referential_action
         ::= 'ON' 'UPDATE' referential_action

delete_rule

ON DELETE referential_action
         ::= 'ON' 'DELETE' referential_action

referential_action

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

check_constraint_definition

CHECK ( search_condition )
         ::= 'CHECK' '(' search_condition ')'

alter_table_statement

ALTER TABLE table_name alter_table_action
         ::= 'ALTER' 'TABLE' table_name alter_table_action

alter_table_action

add_column_definition alter_column_definition drop_column_definition add_table_constraint_definition alter_table_constraint_definition drop_table_constraint_definition add_system_versioning_clause alter_system_versioning_clause drop_system_versioning_clause
         ::= add_column_definition
           | alter_column_definition
           | drop_column_definition
           | add_table_constraint_definition
           | alter_table_constraint_definition
           | drop_table_constraint_definition
           | add_system_versioning_clause
           | alter_system_versioning_clause
           | drop_system_versioning_clause
Referenced by:

add_column_definition

ADD COLUMN column_definition
         ::= 'ADD' 'COLUMN'? column_definition
Referenced by:

alter_column_definition

ALTER COLUMN identifier alter_column_action
         ::= 'ALTER' 'COLUMN'? identifier alter_column_action
Referenced by:

alter_column_action

set_column_default_clause drop_column_default_clause set_column_not_null_clause drop_column_not_null_clause add_column_scope_clause drop_column_scope_clause alter_column_data_type_clause alter_identity_column_specification drop_identity_property_clause drop_column_generation_expression_clause
         ::= set_column_default_clause
           | drop_column_default_clause
           | set_column_not_null_clause
           | drop_column_not_null_clause
           | add_column_scope_clause
           | drop_column_scope_clause
           | alter_column_data_type_clause
           | alter_identity_column_specification
           | drop_identity_property_clause
Referenced by:

set_column_default_clause

SET default_clause
         ::= 'SET' default_clause
Referenced by:

drop_column_default_clause

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

set_column_not_null_clause

SET NOT NULL
         ::= 'SET' 'NOT' 'NULL'
Referenced by:

drop_column_not_null_clause

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

add_column_scope_clause

ADD scope_clause
         ::= 'ADD' scope_clause
Referenced by:

drop_column_scope_clause

DROP SCOPE drop_behavior
         ::= 'DROP' 'SCOPE' drop_behavior
Referenced by:

alter_column_data_type_clause

SET DATA TYPE data_type
         ::= 'SET' 'DATA' 'TYPE' data_type
Referenced by:

alter_identity_column_specification

set_identity_column_generation_clause alter_identity_column_option alter_identity_column_option
Referenced by:

set_identity_column_generation_clause

SET GENERATED ALWAYS BY DEFAULT
         ::= 'SET' 'GENERATED' ( 'ALWAYS' | 'BY' 'DEFAULT' )

alter_identity_column_option

alter_sequence_generator_restart_option SET basic_sequence_generator_option
           | 'SET' basic_sequence_generator_option

drop_identity_property_clause

DROP IDENTITY
         ::= 'DROP' 'IDENTITY'
Referenced by:

drop_column_generation_expression_clause

DROP EXPRESSION
         ::= 'DROP' 'EXPRESSION'
Referenced by:

drop_column_definition

DROP COLUMN identifier drop_behavior
         ::= 'DROP' 'COLUMN'? identifier drop_behavior
Referenced by:

add_table_constraint_definition

ADD table_constraint_definition
         ::= 'ADD' table_constraint_definition
Referenced by:

alter_table_constraint_definition

ALTER CONSTRAINT schema_qualified_name constraint_enforcement
         ::= 'ALTER' 'CONSTRAINT' schema_qualified_name constraint_enforcement
Referenced by:

drop_table_constraint_definition

DROP CONSTRAINT schema_qualified_name drop_behavior
         ::= 'DROP' 'CONSTRAINT' schema_qualified_name drop_behavior
Referenced by:

add_system_versioning_clause

ADD system_versioning_clause add_system_version_column_list
Referenced by:

add_system_version_column_list

ADD COLUMN column_definition_1 ADD COLUMN column_definition_2
         ::= 'ADD' 'COLUMN'? column_definition_1 'ADD' 'COLUMN'? column_definition_2

column_definition_1

column_definition
         ::= column_definition

column_definition_2

column_definition
         ::= column_definition

alter_system_versioning_clause

ALTER SYSTEM VERSIONING retention_period_specification
         ::= 'ALTER' 'SYSTEM' 'VERSIONING' retention_period_specification
Referenced by:

drop_system_versioning_clause

DROP SYSTEM VERSIONING drop_behavior
         ::= 'DROP' 'SYSTEM' 'VERSIONING' drop_behavior
Referenced by:

drop_table_statement

DROP TABLE IF EXISTS table_name drop_behavior
         ::= 'DROP' 'TABLE' ( 'IF' 'EXISTS' )? table_name drop_behavior?

view_definition

CREATE or_replace RECURSIVE VIEW table_name view_specification AS query_expression WITH levels_clause CHECK OPTION
         ::= 'CREATE' or_replace? 'RECURSIVE'? 'VIEW' table_name view_specification 'AS' query_expression ( 'WITH' levels_clause? 'CHECK' 'OPTION' )?

view_specification

regular_view_specification referenceable_view_specification
         ::= regular_view_specification
           | referenceable_view_specification
Referenced by:

regular_view_specification

( view_column_list )
         ::= ( '(' view_column_list ')' )?
Referenced by:

referenceable_view_specification

OF path_resolved_user_defined_type_name subview_clause view_element_list
Referenced by:

subview_clause

UNDER table_name
         ::= 'UNDER' table_name

view_element_list

( view_element , )
         ::= '(' view_element ( ',' view_element )* ')'

view_element

self_referencing_column_specification view_column_option
           | view_column_option
Referenced by:

view_column_option

identifier WITH OPTIONS scope_clause
         ::= identifier 'WITH' 'OPTIONS' scope_clause
Referenced by:

levels_clause

CASCADED LOCAL
         ::= 'CASCADED'
           | 'LOCAL'
Referenced by:

view_column_list

column_name_list
         ::= column_name_list

drop_view_statement

DROP VIEW table_name drop_behavior
         ::= 'DROP' 'VIEW' table_name drop_behavior

domain_definition

CREATE DOMAIN schema_qualified_name AS predefined_type default_clause domain_constraint collate_clause

domain_constraint

constraint_name_definition check_constraint_definition constraint_characteristics

alter_domain_statement

ALTER DOMAIN schema_qualified_name alter_domain_action
         ::= 'ALTER' 'DOMAIN' schema_qualified_name alter_domain_action

alter_domain_action

set_domain_default_clause drop_domain_default_clause add_domain_constraint_definition drop_domain_constraint_definition
         ::= set_domain_default_clause
           | drop_domain_default_clause
           | add_domain_constraint_definition
           | drop_domain_constraint_definition
Referenced by:

set_domain_default_clause

SET default_clause
         ::= 'SET' default_clause
Referenced by:

drop_domain_default_clause

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

add_domain_constraint_definition

ADD domain_constraint
         ::= 'ADD' domain_constraint
Referenced by:

drop_domain_constraint_definition

DROP CONSTRAINT schema_qualified_name
         ::= 'DROP' 'CONSTRAINT' schema_qualified_name
Referenced by:

drop_domain_statement

DROP DOMAIN schema_qualified_name drop_behavior
         ::= 'DROP' 'DOMAIN' schema_qualified_name drop_behavior

character_set_definition

CREATE CHARACTER SET character_set_name AS character_set_source collate_clause
         ::= 'CREATE' 'CHARACTER' 'SET' character_set_name 'AS'? character_set_source collate_clause?

character_set_source

GET character_set_specification
         ::= 'GET' character_set_specification
Referenced by:

drop_character_set_statement

DROP CHARACTER SET character_set_name
         ::= 'DROP' 'CHARACTER' 'SET' character_set_name

collation_definition

CREATE COLLATION schema_qualified_name FOR character_set_specification FROM schema_qualified_name pad_characteristic
         ::= 'CREATE' 'COLLATION' schema_qualified_name 'FOR' character_set_specification 'FROM' schema_qualified_name pad_characteristic?

pad_characteristic

NO PAD PAD SPACE
         ::= 'NO' 'PAD'
           | 'PAD' 'SPACE'
Referenced by:

drop_collation_statement

DROP COLLATION schema_qualified_name drop_behavior
         ::= 'DROP' 'COLLATION' schema_qualified_name drop_behavior

transliteration_definition

CREATE TRANSLATION schema_qualified_name FOR source_character_set_specification TO target_character_set_specification FROM transliteration_source

source_character_set_specification

character_set_specification
         ::= character_set_specification

target_character_set_specification

character_set_specification
         ::= character_set_specification

transliteration_source

schema_qualified_name transliteration_routine
         ::= schema_qualified_name
           | transliteration_routine

transliteration_routine

specific_routine_designator
         ::= specific_routine_designator
Referenced by:

drop_transliteration_statement

DROP TRANSLATION schema_qualified_name
         ::= 'DROP' 'TRANSLATION' schema_qualified_name

assertion_definition

CREATE ASSERTION schema_qualified_name CHECK ( search_condition ) constraint_characteristics
         ::= 'CREATE' 'ASSERTION' schema_qualified_name 'CHECK' '(' search_condition ')' constraint_characteristics?

drop_assertion_statement

DROP ASSERTION schema_qualified_name drop_behavior
         ::= 'DROP' 'ASSERTION' schema_qualified_name drop_behavior?

trigger_definition

CREATE TRIGGER schema_qualified_name trigger_action_time trigger_event ON table_name REFERENCING transition_table_or_variable_list triggered_action

trigger_action_time

BEFORE AFTER INSTEAD OF
         ::= 'BEFORE'
           | 'AFTER'
           | 'INSTEAD' 'OF'
Referenced by:

trigger_event

INSERT DELETE UPDATE OF trigger_column_list
         ::= 'INSERT'
           | 'DELETE'
           | 'UPDATE' ( 'OF' trigger_column_list )?
Referenced by:

trigger_column_list

column_name_list
         ::= column_name_list
Referenced by:

triggered_action

FOR EACH ROW STATEMENT triggered_when_clause triggered_SQL_statement
         ::= ( 'FOR' 'EACH' ( 'ROW' | 'STATEMENT' ) )? triggered_when_clause? triggered_SQL_statement
Referenced by:

triggered_when_clause

WHEN ( search_condition )
         ::= 'WHEN' '(' search_condition ')'
Referenced by:

triggered_SQL_statement

SQL_procedure_statement BEGIN ATOMIC SQL_procedure_statement ; END
         ::= SQL_procedure_statement
           | 'BEGIN' 'ATOMIC' ( SQL_procedure_statement ';' )+ 'END'
Referenced by:

transition_table_or_variable_list

transition_table_or_variable
         ::= transition_table_or_variable+
Referenced by:

transition_table_or_variable

OLD NEW ROW TABLE AS identifier
         ::= ( 'OLD' | 'NEW' ) ( 'ROW' | 'TABLE' )? 'AS'? identifier

drop_trigger_statement

DROP TRIGGER schema_qualified_name
         ::= 'DROP' 'TRIGGER' schema_qualified_name

user_defined_type_definition

CREATE TYPE user_defined_type_body
         ::= 'CREATE' 'TYPE' user_defined_type_body

user_defined_type_body

schema_resolved_user_defined_type_name subtype_clause AS representation user_defined_type_option_list method_specification_list

user_defined_type_option_list

user_defined_type_option
         ::= user_defined_type_option+
Referenced by:

user_defined_type_option

instantiable_clause finality reference_type_specification cast_to_ref cast_to_type cast_to_distinct cast_to_source
         ::= instantiable_clause
           | finality
           | reference_type_specification
           | cast_to_ref
           | cast_to_type
           | cast_to_distinct
           | cast_to_source

subtype_clause

UNDER supertype_name
         ::= 'UNDER' supertype_name
Referenced by:

supertype_name

path_resolved_user_defined_type_name
Referenced by:

representation

predefined_type data_type member_list
         ::= predefined_type
           | data_type
           | member_list
Referenced by:

member_list

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

member

attribute_definition
Referenced by:

instantiable_clause

NOT INSTANTIABLE
         ::= 'NOT'? 'INSTANTIABLE'
Referenced by:

finality

NOT FINAL
finality ::= 'NOT'? 'FINAL'
Referenced by:

reference_type_specification

user_defined_representation derived_representation system_generated_representation
         ::= user_defined_representation
           | derived_representation
           | system_generated_representation
Referenced by:

user_defined_representation

REF USING predefined_type
         ::= 'REF' 'USING' predefined_type

derived_representation

REF FROM list_of_attributes
         ::= 'REF' 'FROM' list_of_attributes

system_generated_representation

REF IS SYSTEM GENERATED
         ::= 'REF' 'IS' 'SYSTEM' 'GENERATED'

cast_to_ref

CAST ( SOURCE AS REF ) WITH identifier
         ::= 'CAST' '(' 'SOURCE' 'AS' 'REF' ')' 'WITH' identifier
Referenced by:

cast_to_type

CAST ( REF AS SOURCE ) WITH identifier
         ::= 'CAST' '(' 'REF' 'AS' 'SOURCE' ')' 'WITH' identifier
Referenced by:

list_of_attributes

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

cast_to_distinct

CAST ( SOURCE AS DISTINCT ) WITH identifier
         ::= 'CAST' '(' 'SOURCE' 'AS' 'DISTINCT' ')' 'WITH' identifier
Referenced by:

cast_to_source

CAST ( DISTINCT AS SOURCE ) WITH identifier
         ::= 'CAST' '(' 'DISTINCT' 'AS' 'SOURCE' ')' 'WITH' identifier
Referenced by:

method_specification_list

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

method_specification

original_method_specification overriding_method_specification
         ::= original_method_specification
           | overriding_method_specification

original_method_specification

partial_method_specification SELF AS RESULT SELF AS LOCATOR method_characteristics
         ::= partial_method_specification ( 'SELF' 'AS' 'RESULT' )? ( 'SELF' 'AS' 'LOCATOR' )? method_characteristics?

overriding_method_specification

OVERRIDING partial_method_specification
         ::= 'OVERRIDING' partial_method_specification

partial_method_specification

INSTANCE STATIC CONSTRUCTOR METHOD identifier SQL_parameter_declaration_list returns_clause SPECIFIC specific_identifier
         ::= ( 'INSTANCE' | 'STATIC' | 'CONSTRUCTOR' )? 'METHOD' identifier SQL_parameter_declaration_list returns_clause ( 'SPECIFIC' specific_identifier )?

specific_identifier

schema_name . identifier
         ::= ( schema_name '.' )? identifier

method_characteristics

method_characteristic
         ::= method_characteristic+

method_characteristic

language_clause parameter_style_clause deterministic_characteristic SQL_data_access_indication null_call_clause
         ::= language_clause
           | parameter_style_clause
           | deterministic_characteristic
           | SQL_data_access_indication
           | null_call_clause
Referenced by:

attribute_definition

identifier data_type attribute_default collate_clause

attribute_default

default_clause
         ::= default_clause
Referenced by:

alter_type_statement

ALTER TYPE schema_resolved_user_defined_type_name alter_type_action
         ::= 'ALTER' 'TYPE' schema_resolved_user_defined_type_name alter_type_action

alter_type_action

add_attribute_definition drop_attribute_definition add_original_method_specification add_overriding_method_specification drop_method_specification
         ::= add_attribute_definition
           | drop_attribute_definition
           | add_original_method_specification
           | add_overriding_method_specification
           | drop_method_specification
Referenced by:

add_attribute_definition

ADD ATTRIBUTE attribute_definition
         ::= 'ADD' 'ATTRIBUTE' attribute_definition
Referenced by:

drop_attribute_definition

DROP ATTRIBUTE identifier RESTRICT
         ::= 'DROP' 'ATTRIBUTE' identifier 'RESTRICT'
Referenced by:

add_original_method_specification

ADD original_method_specification
         ::= 'ADD' original_method_specification
Referenced by:

add_overriding_method_specification

ADD overriding_method_specification
         ::= 'ADD' overriding_method_specification
Referenced by:

drop_method_specification

DROP specific_method_specification_designator RESTRICT
         ::= 'DROP' specific_method_specification_designator 'RESTRICT'
Referenced by:

specific_method_specification_designator

INSTANCE STATIC CONSTRUCTOR METHOD identifier data_type_list
         ::= ( 'INSTANCE' | 'STATIC' | 'CONSTRUCTOR' )? 'METHOD' identifier data_type_list

drop_data_type_statement

DROP TYPE schema_resolved_user_defined_type_name drop_behavior
         ::= 'DROP' 'TYPE' schema_resolved_user_defined_type_name drop_behavior

SQL_invoked_routine

schema_routine
         ::= schema_routine

schema_routine

schema_procedure schema_function
         ::= schema_procedure
           | schema_function

schema_procedure

CREATE SQL_invoked_procedure
         ::= 'CREATE' SQL_invoked_procedure
Referenced by:

schema_function

CREATE or_replace SQL_invoked_function
         ::= 'CREATE' or_replace? SQL_invoked_function
Referenced by:

SQL_invoked_procedure

PROCEDURE schema_qualified_name SQL_parameter_declaration_list routine_characteristics routine_body
Referenced by:

SQL_invoked_function

function_specification method_specification_designator routine_body
Referenced by:

SQL_parameter_declaration_list

( SQL_parameter_declaration , )
         ::= '(' ( SQL_parameter_declaration ( ',' SQL_parameter_declaration )* )? ')'

SQL_parameter_declaration

parameter_mode identifier parameter_type RESULT DEFAULT parameter_default
         ::= parameter_mode? identifier? parameter_type 'RESULT'? ( 'DEFAULT' parameter_default )?

parameter_default

value_expression contextually_typed_value_specification
         ::= value_expression

parameter_mode

IN OUT INOUT
         ::= 'IN'
           | 'OUT'
           | 'INOUT'

parameter_type

data_type locator_indication
         ::= data_type locator_indication?

locator_indication

AS LOCATOR
         ::= 'AS' 'LOCATOR'

function_specification

FUNCTION schema_qualified_name SQL_parameter_declaration_list returns_clause routine_description routine_characteristics dispatch_clause
Referenced by:

method_specification_designator

SPECIFIC METHOD specific_identifier INSTANCE STATIC CONSTRUCTOR METHOD identifier SQL_parameter_declaration_list returns_clause FOR schema_resolved_user_defined_type_name
         ::= 'SPECIFIC' 'METHOD' specific_identifier
           | ( 'INSTANCE' | 'STATIC' | 'CONSTRUCTOR' )? 'METHOD' identifier SQL_parameter_declaration_list returns_clause? 'FOR' schema_resolved_user_defined_type_name
Referenced by:

routine_characteristics

routine_characteristic
         ::= routine_characteristic*

routine_characteristic

language_clause parameter_style_clause SPECIFIC schema_qualified_name deterministic_characteristic SQL_data_access_indication null_call_clause returned_result_sets_characteristic savepoint_level_indication
         ::= language_clause
           | parameter_style_clause
           | 'SPECIFIC' schema_qualified_name
           | deterministic_characteristic
           | SQL_data_access_indication
           | null_call_clause
           | returned_result_sets_characteristic
           | savepoint_level_indication
Referenced by:

savepoint_level_indication

NEW OLD SAVEPOINT LEVEL
         ::= ( 'NEW' | 'OLD' ) 'SAVEPOINT' 'LEVEL'
Referenced by:

returned_result_sets_characteristic

DYNAMIC RESULT SETS maximum_returned_result_sets
         ::= 'DYNAMIC' 'RESULT' 'SETS' maximum_returned_result_sets

parameter_style_clause

PARAMETER STYLE parameter_style
         ::= 'PARAMETER' 'STYLE' parameter_style

dispatch_clause

STATIC DISPATCH
         ::= 'STATIC' 'DISPATCH'
Referenced by:

returns_clause

RETURNS returns_type
         ::= 'RETURNS' returns_type

returns_type

returns_data_type result_cast returns_table_type
         ::= returns_data_type result_cast?
           | returns_table_type
Referenced by:

returns_table_type

TABLE table_function_column_list
         ::= 'TABLE' table_function_column_list
Referenced by:

table_function_column_list

( table_function_column_list_element , )
Referenced by:

table_function_column_list_element

identifier data_type
         ::= identifier data_type

result_cast

CAST FROM result_cast_from_type
         ::= 'CAST' 'FROM' result_cast_from_type
Referenced by:

result_cast_from_type

data_type locator_indication
         ::= data_type locator_indication?
Referenced by:

returns_data_type

data_type locator_indication
         ::= data_type locator_indication?
Referenced by:

routine_body

SQL_routine_spec external_body_reference
         ::= SQL_routine_spec
           | external_body_reference

SQL_routine_spec

rights_clause SQL_routine_body
         ::= rights_clause? SQL_routine_body
Referenced by:

rights_clause

SQL SECURITY INVOKER DEFINER
         ::= 'SQL' 'SECURITY' ( 'INVOKER' | 'DEFINER' )
Referenced by:

SQL_routine_body

SQL_procedure_statement
         ::= SQL_procedure_statement
Referenced by:

external_body_reference

EXTERNAL NAME external_routine_name parameter_style_clause transform_group_specification external_security_clause
Referenced by:

external_security_clause

EXTERNAL SECURITY DEFINER INVOKER IMPLEMENTATION DEFINED
         ::= 'EXTERNAL' 'SECURITY' ( 'DEFINER' | 'INVOKER' | 'IMPLEMENTATION' 'DEFINED' )
Referenced by:

parameter_style

SQL GENERAL
         ::= 'SQL'
           | 'GENERAL'
Referenced by:

deterministic_characteristic

NOT DETERMINISTIC
         ::= 'NOT'? 'DETERMINISTIC'

SQL_data_access_indication

NO CONTAINS SQL READS MODIFIES SQL DATA
         ::= ( 'NO' | 'CONTAINS' ) 'SQL'
           | ( 'READS' | 'MODIFIES' ) 'SQL' 'DATA'

null_call_clause

RETURNS NULL CALLED ON NULL INPUT
         ::= ( 'RETURNS' 'NULL' | 'CALLED' ) 'ON' 'NULL' 'INPUT'

maximum_returned_result_sets

unsigned_integer
         ::= unsigned_integer

transform_group_specification

TRANSFORM GROUP single_group_specification multiple_group_specification
         ::= 'TRANSFORM' 'GROUP' ( single_group_specification | multiple_group_specification )

single_group_specification

identifier
         ::= identifier

multiple_group_specification

group_specification ,
         ::= group_specification ( ',' group_specification )*

group_specification

identifier FOR TYPE path_resolved_user_defined_type_name
         ::= identifier 'FOR' 'TYPE' path_resolved_user_defined_type_name

alter_routine_statement

ALTER specific_routine_designator alter_routine_characteristics RESTRICT
         ::= 'ALTER' specific_routine_designator alter_routine_characteristics 'RESTRICT'

alter_routine_characteristics

alter_routine_characteristic
         ::= alter_routine_characteristic+
Referenced by:

alter_routine_characteristic

language_clause parameter_style_clause SQL_data_access_indication null_call_clause returned_result_sets_characteristic NAME external_routine_name
         ::= language_clause
           | parameter_style_clause
           | SQL_data_access_indication
           | null_call_clause
           | returned_result_sets_characteristic
           | 'NAME' external_routine_name

drop_routine_statement

DROP specific_routine_designator drop_behavior
         ::= 'DROP' specific_routine_designator drop_behavior

user_defined_cast_definition

CREATE CAST ( source_data_type AS target_data_type ) WITH cast_function AS ASSIGNMENT
         ::= 'CREATE' 'CAST' '(' source_data_type 'AS' target_data_type ')' 'WITH' cast_function ( 'AS' 'ASSIGNMENT' )?

cast_function

specific_routine_designator
         ::= specific_routine_designator

source_data_type

data_type
         ::= data_type

target_data_type

data_type
         ::= data_type

drop_user_defined_cast_statement

DROP CAST ( source_data_type AS target_data_type ) drop_behavior
         ::= 'DROP' 'CAST' '(' source_data_type 'AS' target_data_type ')' drop_behavior

user_defined_ordering_definition

CREATE ORDERING FOR schema_resolved_user_defined_type_name ordering_form
         ::= 'CREATE' 'ORDERING' 'FOR' schema_resolved_user_defined_type_name ordering_form

ordering_form

equals_ordering_form full_ordering_form
         ::= equals_ordering_form
           | full_ordering_form

equals_ordering_form

EQUALS ONLY BY ordering_category
         ::= 'EQUALS' 'ONLY' 'BY' ordering_category
Referenced by:

full_ordering_form

ORDER FULL BY ordering_category
         ::= 'ORDER' 'FULL' 'BY' ordering_category
Referenced by:

ordering_category

relative_category map_category state_category
         ::= relative_category
           | map_category
           | state_category

relative_category

RELATIVE WITH relative_function_specification
         ::= 'RELATIVE' 'WITH' relative_function_specification
Referenced by:

map_category

MAP WITH map_function_specification
         ::= 'MAP' 'WITH' map_function_specification
Referenced by:

state_category

STATE schema_qualified_name
         ::= 'STATE' schema_qualified_name?
Referenced by:

relative_function_specification

specific_routine_designator
         ::= specific_routine_designator
Referenced by:

map_function_specification

specific_routine_designator
         ::= specific_routine_designator
Referenced by:

drop_user_defined_ordering_statement

DROP ORDERING FOR schema_resolved_user_defined_type_name drop_behavior
         ::= 'DROP' 'ORDERING' 'FOR' schema_resolved_user_defined_type_name drop_behavior

transform_definition

CREATE TRANSFORM TRANSFORMS FOR schema_resolved_user_defined_type_name transform_group
         ::= 'CREATE' ( 'TRANSFORM' | 'TRANSFORMS' ) 'FOR' schema_resolved_user_defined_type_name transform_group+

transform_group

identifier ( transform_element_list )
         ::= identifier '(' transform_element_list ')'
Referenced by:

transform_element_list

transform_element , transform_element
         ::= transform_element ( ',' transform_element )?

transform_element

to_sql from_sql
         ::= to_sql
           | from_sql
Referenced by:

to_sql

TO SQL WITH to_sql_function
to_sql   ::= 'TO' 'SQL' 'WITH' to_sql_function
Referenced by:

from_sql

FROM SQL WITH from_sql_function
from_sql ::= 'FROM' 'SQL' 'WITH' from_sql_function
Referenced by:

to_sql_function

specific_routine_designator
         ::= specific_routine_designator
Referenced by:

from_sql_function

specific_routine_designator
         ::= specific_routine_designator
Referenced by:

alter_transform_statement

ALTER TRANSFORM TRANSFORMS FOR schema_resolved_user_defined_type_name alter_group
         ::= 'ALTER' ( 'TRANSFORM' | 'TRANSFORMS' ) 'FOR' schema_resolved_user_defined_type_name alter_group+

alter_group

identifier ( alter_transform_action_list )
         ::= identifier '(' alter_transform_action_list ')'

alter_transform_action_list

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

alter_transform_action

add_transform_element_list drop_transform_element_list
         ::= add_transform_element_list
           | drop_transform_element_list

add_transform_element_list

ADD ( transform_element_list )
         ::= 'ADD' '(' transform_element_list ')'
Referenced by:

drop_transform_element_list

DROP ( transform_kind , transform_kind drop_behavior )
         ::= 'DROP' '(' transform_kind ( ',' transform_kind )? drop_behavior ')'
Referenced by:

transform_kind

TO FROM SQL
         ::= ( 'TO' | 'FROM' ) 'SQL'

drop_transform_statement

DROP TRANSFORM TRANSFORMS transforms_to_be_dropped FOR schema_resolved_user_defined_type_name drop_behavior
         ::= 'DROP' ( 'TRANSFORM' | 'TRANSFORMS' ) transforms_to_be_dropped 'FOR' schema_resolved_user_defined_type_name drop_behavior

transforms_to_be_dropped

ALL transform_group_element
         ::= 'ALL'
           | transform_group_element
Referenced by:

transform_group_element

identifier
         ::= identifier
Referenced by:

sequence_generator_definition

CREATE SEQUENCE schema_qualified_name sequence_generator_options
         ::= 'CREATE' 'SEQUENCE' schema_qualified_name sequence_generator_options?

sequence_generator_options

sequence_generator_option
         ::= sequence_generator_option+

sequence_generator_option

sequence_generator_data_type_option common_sequence_generator_options
           | common_sequence_generator_options

common_sequence_generator_options

common_sequence_generator_option
         ::= common_sequence_generator_option+

common_sequence_generator_option

sequence_generator_start_with_option basic_sequence_generator_option
           | basic_sequence_generator_option

basic_sequence_generator_option

sequence_generator_increment_by_option sequence_generator_maxvalue_option sequence_generator_minvalue_option sequence_generator_cycle_option
           | sequence_generator_maxvalue_option
           | sequence_generator_minvalue_option
           | sequence_generator_cycle_option

sequence_generator_data_type_option

AS data_type
         ::= 'AS' data_type

sequence_generator_start_with_option

START WITH sequence_generator_start_value
         ::= 'START' 'WITH' sequence_generator_start_value

sequence_generator_start_value

signed_numeric_literal
         ::= signed_numeric_literal

sequence_generator_increment_by_option

INCREMENT BY sequence_generator_increment
         ::= 'INCREMENT' 'BY' sequence_generator_increment

sequence_generator_increment

signed_numeric_literal
         ::= signed_numeric_literal

sequence_generator_maxvalue_option

MAXVALUE sequence_generator_max_value NO MAXVALUE
         ::= 'MAXVALUE' sequence_generator_max_value
           | 'NO' 'MAXVALUE'

sequence_generator_max_value

signed_numeric_literal
         ::= signed_numeric_literal

sequence_generator_minvalue_option

MINVALUE sequence_generator_min_value NO MINVALUE
         ::= 'MINVALUE' sequence_generator_min_value
           | 'NO' 'MINVALUE'

sequence_generator_min_value

signed_numeric_literal
         ::= signed_numeric_literal

sequence_generator_cycle_option

NO CYCLE
         ::= 'NO'? 'CYCLE'

alter_sequence_generator_statement

ALTER SEQUENCE schema_qualified_name alter_sequence_generator_options
         ::= 'ALTER' 'SEQUENCE' schema_qualified_name alter_sequence_generator_options

alter_sequence_generator_options

alter_sequence_generator_option
         ::= alter_sequence_generator_option+

alter_sequence_generator_option

alter_sequence_generator_restart_option basic_sequence_generator_option
           | basic_sequence_generator_option

alter_sequence_generator_restart_option

RESTART WITH sequence_generator_restart_value
         ::= 'RESTART' ( 'WITH' sequence_generator_restart_value )?

sequence_generator_restart_value

signed_numeric_literal
         ::= signed_numeric_literal

drop_sequence_generator_statement

DROP SEQUENCE schema_qualified_name drop_behavior
         ::= 'DROP' 'SEQUENCE' schema_qualified_name drop_behavior

grant_statement

grant_privilege_statement grant_role_statement
         ::= grant_privilege_statement
           | grant_role_statement

grant_privilege_statement

GRANT privileges TO grantee , WITH HIERARCHY OPTION WITH GRANT OPTION GRANTED BY grantor
         ::= 'GRANT' privileges 'TO' grantee ( ',' grantee )* ( 'WITH' 'HIERARCHY' 'OPTION' )? ( 'WITH' 'GRANT' 'OPTION' )? ( 'GRANTED' 'BY' grantor )?
Referenced by:

privileges

object_privileges ON object_name
         ::= object_privileges 'ON' object_name

object_name

TABLE table_name DOMAIN COLLATION TRANSLATION SEQUENCE schema_qualified_name CHARACTER SET character_set_name TYPE schema_resolved_user_defined_type_name specific_routine_designator
         ::= 'TABLE'? table_name
           | ( 'DOMAIN' | 'COLLATION' | 'TRANSLATION' | 'SEQUENCE' ) schema_qualified_name
           | 'CHARACTER' 'SET' character_set_name
           | 'TYPE' schema_resolved_user_defined_type_name
           | specific_routine_designator
Referenced by:

object_privileges

ALL PRIVILEGES action ,
         ::= 'ALL' 'PRIVILEGES'
           | action ( ',' action )*
Referenced by:

action

SELECT ( privilege_column_list privilege_method_list ) DELETE INSERT UPDATE REFERENCES ( privilege_column_list ) USAGE TRIGGER UNDER EXECUTE
action   ::= 'SELECT' ( '(' ( privilege_column_list | privilege_method_list ) ')' )?
           | 'DELETE'
           | ( 'INSERT' | 'UPDATE' | 'REFERENCES' ) ( '(' privilege_column_list ')' )?
           | 'USAGE'
           | 'TRIGGER'
           | 'UNDER'
           | 'EXECUTE'
Referenced by:

privilege_method_list

specific_routine_designator ,
Referenced by:

privilege_column_list

column_name_list
         ::= column_name_list
Referenced by:

grantee

PUBLIC identifier
grantee  ::= 'PUBLIC'
           | identifier

grantor

CURRENT_USER CURRENT_ROLE
grantor  ::= 'CURRENT_USER'
           | 'CURRENT_ROLE'

role_definition

CREATE ROLE identifier WITH ADMIN grantor
         ::= 'CREATE' 'ROLE' identifier ( 'WITH' 'ADMIN' grantor )?

grant_role_statement

GRANT identifier , TO grantee , WITH ADMIN OPTION GRANTED BY grantor
         ::= 'GRANT' identifier ( ',' identifier )* 'TO' grantee ( ',' grantee )* ( 'WITH' 'ADMIN' 'OPTION' )? ( 'GRANTED' 'BY' grantor )?
Referenced by:

drop_role_statement

DROP ROLE identifier
         ::= 'DROP' 'ROLE' identifier

revoke_statement

revoke_privilege_statement revoke_role_statement
         ::= revoke_privilege_statement
           | revoke_role_statement

revoke_privilege_statement

REVOKE revoke_option_extension privileges FROM grantee , GRANTED BY grantor drop_behavior
         ::= 'REVOKE' revoke_option_extension? privileges 'FROM' grantee ( ',' grantee )* ( 'GRANTED' 'BY' grantor )? drop_behavior
Referenced by:

revoke_option_extension

GRANT HIERARCHY OPTION FOR
         ::= ( 'GRANT' | 'HIERARCHY' ) 'OPTION' 'FOR'

revoke_role_statement

REVOKE ADMIN OPTION FOR identifier , FROM grantee , GRANTED BY grantor drop_behavior
         ::= 'REVOKE' ( 'ADMIN' 'OPTION' 'FOR' )? identifier ( ',' identifier )* 'FROM' grantee ( ',' grantee )* ( 'GRANTED' 'BY' grantor )? drop_behavior
Referenced by:

SQL_client_module_definition

module_name_clause language_clause module_authorization_clause module_path_specification module_transform_group_specification module_collations temporary_table_declaration module_contents
Not referenced by any.

module_authorization_clause

SCHEMA schema_name AUTHORIZATION identifier FOR STATIC ONLY AND DYNAMIC AUTHORIZATION identifier FOR STATIC ONLY AND DYNAMIC
         ::= 'SCHEMA' schema_name ( 'AUTHORIZATION' identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )? )?
           | 'AUTHORIZATION' identifier ( 'FOR' 'STATIC' ( 'ONLY' | 'AND' 'DYNAMIC' ) )?

module_path_specification

path_specification
         ::= path_specification

module_transform_group_specification

transform_group_specification
         ::= transform_group_specification

module_collations

module_collation_specification
         ::= module_collation_specification+

module_collation_specification

COLLATION schema_qualified_name FOR character_set_specification_list
         ::= 'COLLATION' schema_qualified_name ( 'FOR' character_set_specification_list )?
Referenced by:

character_set_specification_list

character_set_specification ,

module_contents

declare_cursor dynamic_declare_cursor externally_invoked_procedure
         ::= declare_cursor
           | dynamic_declare_cursor
           | externally_invoked_procedure

module_name_clause

MODULE identifier module_character_set_specification
         ::= 'MODULE' identifier? module_character_set_specification?

module_character_set_specification

NAMES ARE character_set_specification
         ::= 'NAMES' 'ARE' character_set_specification
Referenced by:

externally_invoked_procedure

PROCEDURE identifier host_parameter_declaration_list ; SQL_procedure_statement ;
         ::= 'PROCEDURE' identifier host_parameter_declaration_list ';' SQL_procedure_statement ';'
Referenced by:

host_parameter_declaration_list

( host_parameter_declaration , )
         ::= '(' host_parameter_declaration ( ',' host_parameter_declaration )* ')'

host_parameter_declaration

host_parameter_name host_parameter_data_type SQLSTATE
           | 'SQLSTATE'

host_parameter_data_type

data_type locator_indication
         ::= data_type locator_indication?

SQL_procedure_statement

SQL_executable_statement
         ::= SQL_executable_statement

SQL_executable_statement

SQL_schema_statement SQL_data_statement SQL_control_statement SQL_transaction_statement SQL_connection_statement SQL_session_statement SQL_diagnostics_statement SQL_dynamic_statement
         ::= SQL_schema_statement
           | SQL_data_statement
           | SQL_control_statement
           | SQL_transaction_statement
           | SQL_connection_statement
           | SQL_session_statement
           | SQL_diagnostics_statement
           | SQL_dynamic_statement
Referenced by:

SQL_schema_statement

SQL_schema_definition_statement SQL_schema_manipulation_statement
         ::= SQL_schema_definition_statement
           | SQL_schema_manipulation_statement

SQL_schema_definition_statement

schema_definition table_definition view_definition SQL_invoked_routine grant_statement role_definition domain_definition character_set_definition collation_definition transliteration_definition assertion_definition trigger_definition user_defined_type_definition user_defined_cast_definition user_defined_ordering_definition transform_definition sequence_generator_definition
         ::= schema_definition
           | table_definition
           | view_definition
           | SQL_invoked_routine
           | grant_statement
           | role_definition
           | domain_definition
           | character_set_definition
           | collation_definition
           | transliteration_definition
           | assertion_definition
           | trigger_definition
           | user_defined_type_definition
           | user_defined_cast_definition
           | user_defined_ordering_definition
           | transform_definition
           | sequence_generator_definition
Referenced by:

SQL_schema_manipulation_statement

drop_schema_statement alter_table_statement drop_table_statement drop_view_statement alter_routine_statement drop_routine_statement drop_user_defined_cast_statement revoke_statement drop_role_statement alter_domain_statement drop_domain_statement drop_character_set_statement drop_collation_statement drop_transliteration_statement drop_assertion_statement drop_trigger_statement alter_type_statement drop_data_type_statement drop_user_defined_ordering_statement alter_transform_statement drop_transform_statement alter_sequence_generator_statement drop_sequence_generator_statement
         ::= drop_schema_statement
           | alter_table_statement
           | drop_table_statement
           | drop_view_statement
           | alter_routine_statement
           | drop_routine_statement
           | drop_user_defined_cast_statement
           | revoke_statement
           | drop_role_statement
           | alter_domain_statement
           | drop_domain_statement
           | drop_character_set_statement
           | drop_collation_statement
           | drop_transliteration_statement
           | drop_assertion_statement
           | drop_trigger_statement
           | alter_type_statement
           | drop_data_type_statement
           | drop_user_defined_ordering_statement
           | alter_transform_statement
           | drop_transform_statement
           | alter_sequence_generator_statement
           | drop_sequence_generator_statement
Referenced by:

SQL_data_statement

open_statement fetch_statement close_statement select_statement_single_row SQL_data_change_statement
         ::= open_statement
           | fetch_statement
           | close_statement
           | select_statement_single_row
           | SQL_data_change_statement
Referenced by:

SQL_data_change_statement

delete_statement_positioned delete_statement_searched insert_statement update_statement_positioned update_statement_searched truncate_table_statement merge_statement
         ::= delete_statement_positioned
           | delete_statement_searched
           | insert_statement
           | update_statement_positioned
           | update_statement_searched
           | truncate_table_statement
           | merge_statement
Referenced by:

SQL_control_statement

call_statement return_statement
         ::= call_statement
           | return_statement

SQL_transaction_statement

start_transaction_statement set_transaction_statement set_constraints_mode_statement savepoint_statement release_savepoint_statement commit_statement rollback_statement
         ::= start_transaction_statement
           | set_transaction_statement
           | set_constraints_mode_statement
           | savepoint_statement
           | release_savepoint_statement
           | commit_statement
           | rollback_statement

SQL_connection_statement

connect_statement set_connection_statement disconnect_statement
         ::= connect_statement
           | set_connection_statement
           | disconnect_statement

SQL_session_statement

set_session_user_identifier_statement set_role_statement set_local_time_zone_statement set_session_characteristics_statement set_catalog_statement set_schema_statement set_names_statement set_path_statement set_transform_group_statement set_session_collation_statement
           | set_role_statement
           | set_local_time_zone_statement
           | set_catalog_statement
           | set_schema_statement
           | set_names_statement
           | set_path_statement
           | set_transform_group_statement
           | set_session_collation_statement

SQL_diagnostics_statement

get_diagnostics_statement
         ::= get_diagnostics_statement
Referenced by:

SQL_dynamic_statement

SQL_descriptor_statement prepare_statement deallocate_prepared_statement describe_statement execute_statement execute_immediate_statement SQL_dynamic_data_statement
         ::= SQL_descriptor_statement
           | prepare_statement
           | deallocate_prepared_statement
           | describe_statement
           | execute_statement
           | execute_immediate_statement
           | SQL_dynamic_data_statement
Referenced by:

SQL_dynamic_data_statement

allocate_cursor_statement dynamic_open_statement dynamic_fetch_statement dynamic_close_statement dynamic_delete_statement_positioned dynamic_update_statement_positioned
         ::= allocate_cursor_statement
           | dynamic_open_statement
           | dynamic_fetch_statement
           | dynamic_close_statement
           | dynamic_delete_statement_positioned
           | dynamic_update_statement_positioned
Referenced by:

SQL_descriptor_statement

allocate_descriptor_statement deallocate_descriptor_statement set_descriptor_statement get_descriptor_statement
         ::= allocate_descriptor_statement
           | deallocate_descriptor_statement
           | set_descriptor_statement
           | get_descriptor_statement
Referenced by:

declare_cursor

DECLARE cursor_name cursor_properties FOR cursor_specification
         ::= 'DECLARE' cursor_name cursor_properties 'FOR' cursor_specification
Referenced by:

cursor_properties

cursor_sensitivity cursor_scrollability CURSOR cursor_holdability cursor_returnability

cursor_sensitivity

SENSITIVE INSENSITIVE ASENSITIVE
         ::= 'SENSITIVE'
           | 'INSENSITIVE'
           | 'ASENSITIVE'

cursor_scrollability

NO SCROLL
         ::= 'NO'? 'SCROLL'

cursor_holdability

WITH WITHOUT HOLD
         ::= ( 'WITH' | 'WITHOUT' ) 'HOLD'

cursor_returnability

WITH WITHOUT RETURN
         ::= ( 'WITH' | 'WITHOUT' ) 'RETURN'

cursor_specification

query_expression updatability_clause
         ::= query_expression updatability_clause?

updatability_clause

FOR READ ONLY UPDATE OF column_name_list
         ::= 'FOR' ( 'READ' 'ONLY' | 'UPDATE' ( 'OF' column_name_list )? )
Referenced by:

open_statement

OPEN cursor_name
         ::= 'OPEN' cursor_name
Referenced by:

fetch_statement

FETCH fetch_orientation FROM cursor_name INTO fetch_target_list
         ::= 'FETCH' ( fetch_orientation? 'FROM' )? cursor_name 'INTO' fetch_target_list
Referenced by:

fetch_orientation

NEXT PRIOR FIRST LAST ABSOLUTE RELATIVE simple_value_specification
         ::= 'NEXT'
           | 'PRIOR'
           | 'FIRST'
           | 'LAST'
           | ( 'ABSOLUTE' | 'RELATIVE' ) simple_value_specification

fetch_target_list

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

close_statement

CLOSE cursor_name
         ::= 'CLOSE' cursor_name
Referenced by:

select_statement_single_row

SELECT set_quantifier select_list INTO select_target_list table_expression
         ::= 'SELECT' set_quantifier? select_list ( 'INTO' select_target_list )? table_expression?
Referenced by:

select_target_list

target_specification ,
         ::= target_specification ( ',' target_specification )*

delete_statement_positioned

DELETE FROM target_table AS identifier WHERE CURRENT OF cursor_name
         ::= 'DELETE' 'FROM' target_table ( 'AS'? identifier )? 'WHERE' 'CURRENT' 'OF' cursor_name

target_table

table_name ONLY ( table_name )
         ::= table_name
           | 'ONLY' '(' table_name ')'

delete_statement_searched

DELETE FROM target_table AS identifier WHERE search_condition
         ::= 'DELETE' 'FROM' target_table ( 'AS'? identifier )? ( 'WHERE' search_condition )?

truncate_table_statement

TRUNCATE TABLE target_table identity_column_restart_option
         ::= 'TRUNCATE' 'TABLE' target_table identity_column_restart_option?

identity_column_restart_option

CONTINUE RESTART IDENTITY
         ::= ( 'CONTINUE' | 'RESTART' ) 'IDENTITY'
Referenced by:

insert_statement

INSERT INTO insertion_target insert_columns_and_source
         ::= 'INSERT' 'INTO' insertion_target insert_columns_and_source

insertion_target

table_name
         ::= table_name
Referenced by:

insert_columns_and_source

from_subquery from_constructor from_default
         ::= from_subquery
           | from_constructor
           | from_default
Referenced by:

from_subquery

( insert_column_list ) override_clause query_expression
         ::= ( '(' insert_column_list ')' )? override_clause? query_expression

from_constructor

( insert_column_list ) override_clause contextually_typed_table_value_constructor

override_clause

OVERRIDING USER SYSTEM VALUE
         ::= 'OVERRIDING' ( 'USER' | 'SYSTEM' ) 'VALUE'

from_default

DEFAULT VALUES
         ::= 'DEFAULT' 'VALUES'

insert_column_list

column_name_list
         ::= column_name_list

merge_statement

MERGE INTO target_table AS identifier USING table_reference ON search_condition merge_operation_specification
         ::= 'MERGE' 'INTO' target_table ( 'AS'? identifier )? 'USING' table_reference 'ON' search_condition merge_operation_specification

merge_operation_specification

merge_when_clause
         ::= merge_when_clause+
Referenced by:

merge_when_clause

merge_when_matched_clause merge_when_not_matched_clause
         ::= merge_when_matched_clause
           | merge_when_not_matched_clause

merge_when_matched_clause

WHEN MATCHED AND search_condition THEN merge_update_or_delete_specification
         ::= 'WHEN' 'MATCHED' ( 'AND' search_condition )? 'THEN' merge_update_or_delete_specification
Referenced by:

merge_update_or_delete_specification

merge_update_specification DELETE
         ::= merge_update_specification
           | 'DELETE'

merge_when_not_matched_clause

WHEN NOT MATCHED AND search_condition THEN merge_insert_specification
         ::= 'WHEN' 'NOT' 'MATCHED' ( 'AND' search_condition )? 'THEN' merge_insert_specification
Referenced by:

merge_update_specification

UPDATE SET set_clause_list
         ::= 'UPDATE' 'SET' set_clause_list

merge_insert_specification

INSERT ( insert_column_list ) override_clause VALUES merge_insert_value_list
         ::= 'INSERT' ( '(' insert_column_list ')' )? override_clause? 'VALUES' merge_insert_value_list

merge_insert_value_list

( merge_insert_value_element , )
         ::= '(' merge_insert_value_element ( ',' merge_insert_value_element )* ')'

merge_insert_value_element

value_expression contextually_typed_value_specification
         ::= value_expression
Referenced by:

update_statement_positioned

UPDATE target_table AS identifier SET set_clause_list WHERE CURRENT OF cursor_name
         ::= 'UPDATE' target_table ( 'AS'? identifier )? 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' cursor_name

update_statement_searched

UPDATE target_table AS identifier SET set_clause_list WHERE search_condition
         ::= 'UPDATE' target_table ( 'AS'? identifier )? 'SET' set_clause_list ( 'WHERE' search_condition )?

set_clause_list

set_clause ,
         ::= set_clause ( ',' set_clause )*

set_clause

multiple_column_assignment set_target = update_source
         ::= multiple_column_assignment
           | set_target '=' update_source
Referenced by:

set_target

update_target mutated_set_clause
         ::= update_target
           | mutated_set_clause

multiple_column_assignment

set_target_list = assigned_row
         ::= set_target_list '=' assigned_row
Referenced by:

set_target_list

( set_target , )
         ::= '(' set_target ( ',' set_target )* ')'

assigned_row

contextually_typed_row_value_expression

update_target

identifier left_bracket_or_trigraph simple_value_specification right_bracket_or_trigraph
Referenced by:

mutated_set_clause

identifier . identifier
         ::= identifier ( '.' identifier )+
Referenced by:

mutated_target

identifier mutated_set_clause
         ::= identifier
           | mutated_set_clause
Not referenced by any.

update_source

value_expression contextually_typed_value_specification
         ::= value_expression
Referenced by:

temporary_table_declaration

DECLARE LOCAL TEMPORARY TABLE table_name table_element_list ON COMMIT table_commit_action ROWS
         ::= 'DECLARE' 'LOCAL' 'TEMPORARY' 'TABLE' table_name table_element_list ( 'ON' 'COMMIT' table_commit_action 'ROWS' )?

call_statement

CALL routine_invocation
         ::= 'CALL' routine_invocation
Referenced by:

return_statement

RETURN return_value
         ::= 'RETURN' return_value
Referenced by:

return_value

value_expression NULL
         ::= value_expression
           | 'NULL'
Referenced by:

start_transaction_statement

START TRANSACTION transaction_characteristics
         ::= 'START' 'TRANSACTION' transaction_characteristics?

set_transaction_statement

SET LOCAL TRANSACTION transaction_characteristics
         ::= 'SET' 'LOCAL'? 'TRANSACTION' transaction_characteristics?

transaction_characteristics

transaction_mode ,
         ::= transaction_mode ( ',' transaction_mode )*

transaction_mode

isolation_level transaction_access_mode diagnostics_size
         ::= isolation_level
           | transaction_access_mode
           | diagnostics_size

transaction_access_mode

READ ONLY WRITE
         ::= 'READ' ( 'ONLY' | 'WRITE' )
Referenced by:

isolation_level

ISOLATION LEVEL level_of_isolation
         ::= 'ISOLATION' 'LEVEL' level_of_isolation
Referenced by:

level_of_isolation

READ UNCOMMITTED COMMITTED REPEATABLE READ SERIALIZABLE
         ::= 'READ' ( 'UNCOMMITTED' | 'COMMITTED' )
           | 'REPEATABLE' 'READ'
           | 'SERIALIZABLE'
Referenced by:

diagnostics_size

DIAGNOSTICS SIZE simple_value_specification
         ::= 'DIAGNOSTICS' 'SIZE' simple_value_specification
Referenced by:

set_constraints_mode_statement

SET CONSTRAINTS constraint_name_list DEFERRED IMMEDIATE
         ::= 'SET' 'CONSTRAINTS' constraint_name_list ( 'DEFERRED' | 'IMMEDIATE' )

constraint_name_list

ALL schema_qualified_name ,
         ::= 'ALL'
           | schema_qualified_name ( ',' schema_qualified_name )*

savepoint_statement

SAVEPOINT savepoint_specifier
         ::= 'SAVEPOINT' savepoint_specifier

savepoint_specifier

identifier
         ::= identifier

release_savepoint_statement

RELEASE SAVEPOINT savepoint_specifier
         ::= 'RELEASE' 'SAVEPOINT' savepoint_specifier

commit_statement

COMMIT WORK AND NO CHAIN
         ::= 'COMMIT' 'WORK'? ( 'AND' 'NO'? 'CHAIN' )?

rollback_statement

ROLLBACK WORK AND NO CHAIN savepoint_clause
         ::= 'ROLLBACK' 'WORK'? ( 'AND' 'NO'? 'CHAIN' )? savepoint_clause?

savepoint_clause

TO SAVEPOINT savepoint_specifier
         ::= 'TO' 'SAVEPOINT' savepoint_specifier
Referenced by:

connect_statement

CONNECT TO connection_target
         ::= 'CONNECT' 'TO' connection_target
Referenced by:

connection_target

simple_value_specification AS simple_value_specification USER simple_value_specification DEFAULT
           | 'DEFAULT'
Referenced by:

set_connection_statement

SET CONNECTION connection_object
         ::= 'SET' 'CONNECTION' connection_object
Referenced by:

connection_object

DEFAULT simple_value_specification
         ::= 'DEFAULT'
           | simple_value_specification

disconnect_statement

DISCONNECT disconnect_object
         ::= 'DISCONNECT' disconnect_object
Referenced by:

disconnect_object

connection_object ALL CURRENT
         ::= connection_object
           | 'ALL'
           | 'CURRENT'
Referenced by:

set_session_characteristics_statement

SET SESSION CHARACTERISTICS AS session_characteristic_list
         ::= 'SET' 'SESSION' 'CHARACTERISTICS' 'AS' session_characteristic_list
Referenced by:

session_characteristic_list

session_characteristic ,
         ::= session_characteristic ( ',' session_characteristic )*

session_characteristic

session_transaction_characteristics

session_transaction_characteristics

TRANSACTION transaction_mode ,
         ::= 'TRANSACTION' transaction_mode ( ',' transaction_mode )*
Referenced by:

set_session_user_identifier_statement

SET SESSION AUTHORIZATION value_specification
         ::= 'SET' 'SESSION' 'AUTHORIZATION' value_specification
Referenced by:

set_role_statement

SET ROLE role_specification
         ::= 'SET' 'ROLE' role_specification
Referenced by:

role_specification

value_specification NONE
         ::= value_specification
           | 'NONE'
Referenced by:

set_local_time_zone_statement

SET TIME ZONE set_time_zone_value
         ::= 'SET' 'TIME' 'ZONE' set_time_zone_value
Referenced by:

set_time_zone_value

interval_value_expression LOCAL
         ::= interval_value_expression
           | 'LOCAL'

set_catalog_statement

SET catalog_name_characteristic
         ::= 'SET' catalog_name_characteristic
Referenced by:

catalog_name_characteristic

CATALOG value_specification
         ::= 'CATALOG' value_specification
Referenced by:

set_schema_statement

SET schema_name_characteristic
         ::= 'SET' schema_name_characteristic
Referenced by:

schema_name_characteristic

SCHEMA value_specification
         ::= 'SCHEMA' value_specification
Referenced by:

set_names_statement

SET character_set_name_characteristic
         ::= 'SET' character_set_name_characteristic
Referenced by:

character_set_name_characteristic

NAMES value_specification
         ::= 'NAMES' value_specification
Referenced by:

set_path_statement

SET SQL_path_characteristic
         ::= 'SET' SQL_path_characteristic
Referenced by:

SQL_path_characteristic

PATH value_specification
         ::= 'PATH' value_specification
Referenced by:

set_transform_group_statement

SET transform_group_characteristic
         ::= 'SET' transform_group_characteristic
Referenced by:

transform_group_characteristic

DEFAULT TRANSFORM GROUP TRANSFORM GROUP FOR TYPE path_resolved_user_defined_type_name value_specification
         ::= ( 'DEFAULT' 'TRANSFORM' 'GROUP' | 'TRANSFORM' 'GROUP' 'FOR' 'TYPE' path_resolved_user_defined_type_name ) value_specification

set_session_collation_statement

SET COLLATION collation_specification NO COLLATION FOR character_set_specification_list
         ::= 'SET' ( 'COLLATION' collation_specification | 'NO' 'COLLATION' ) ( 'FOR' character_set_specification_list )?
Referenced by:

collation_specification

value_specification
         ::= value_specification

allocate_descriptor_statement

ALLOCATE SQL DESCRIPTOR descriptor_name WITH MAX simple_value_specification
         ::= 'ALLOCATE' 'SQL'? 'DESCRIPTOR' descriptor_name ( 'WITH' 'MAX' simple_value_specification )?
Referenced by:

deallocate_descriptor_statement

DEALLOCATE SQL DESCRIPTOR descriptor_name
         ::= 'DEALLOCATE' 'SQL'? 'DESCRIPTOR' descriptor_name
Referenced by:

get_descriptor_statement

GET SQL DESCRIPTOR descriptor_name get_descriptor_information
         ::= 'GET' 'SQL'? 'DESCRIPTOR' descriptor_name get_descriptor_information
Referenced by:

get_descriptor_information

get_header_information , VALUE simple_value_specification get_item_information ,
         ::= get_header_information ( ',' get_header_information )*
Referenced by:

get_header_information

simple_target_specification_1 = header_item_name

header_item_name

COUNT KEY_TYPE DYNAMIC_FUNCTION DYNAMIC_FUNCTION_CODE TOP_LEVEL_COUNT
         ::= 'COUNT'
           | 'KEY_TYPE'
           | 'DYNAMIC_FUNCTION'
           | 'DYNAMIC_FUNCTION_CODE'
           | 'TOP_LEVEL_COUNT'

get_item_information

simple_target_specification_2 = descriptor_item_name

simple_target_specification_1

simple_target_specification
         ::= simple_target_specification
Referenced by:

simple_target_specification_2

simple_target_specification
         ::= simple_target_specification
Referenced by:

descriptor_item_name

CARDINALITY CHARACTER_SET_CATALOG CHARACTER_SET_NAME CHARACTER_SET_SCHEMA COLLATION_CATALOG COLLATION_NAME COLLATION_SCHEMA DATA DATETIME_INTERVAL_CODE DATETIME_INTERVAL_PRECISION DEGREE INDICATOR KEY_MEMBER LENGTH LEVEL NAME NULLABLE OCTET_LENGTH PARAMETER_MODE PARAMETER_ORDINAL_POSITION PARAMETER_SPECIFIC_CATALOG PARAMETER_SPECIFIC_NAME PARAMETER_SPECIFIC_SCHEMA PRECISION RETURNED_CARDINALITY RETURNED_LENGTH RETURNED_OCTET_LENGTH SCALE SCOPE_CATALOG SCOPE_NAME SCOPE_SCHEMA TYPE UNNAMED USER_DEFINED_TYPE_CATALOG USER_DEFINED_TYPE_NAME USER_DEFINED_TYPE_SCHEMA USER_DEFINED_TYPE_CODE
         ::= 'CARDINALITY'
           | 'CHARACTER_SET_CATALOG'
           | 'CHARACTER_SET_NAME'
           | 'CHARACTER_SET_SCHEMA'
           | 'COLLATION_CATALOG'
           | 'COLLATION_NAME'
           | 'COLLATION_SCHEMA'
           | 'DATA'
           | 'DATETIME_INTERVAL_CODE'
           | 'DATETIME_INTERVAL_PRECISION'
           | 'DEGREE'
           | 'INDICATOR'
           | 'KEY_MEMBER'
           | 'LENGTH'
           | 'LEVEL'
           | 'NAME'
           | 'NULLABLE'
           | 'OCTET_LENGTH'
           | 'PARAMETER_MODE'
           | 'PARAMETER_ORDINAL_POSITION'
           | 'PARAMETER_SPECIFIC_CATALOG'
           | 'PARAMETER_SPECIFIC_NAME'
           | 'PARAMETER_SPECIFIC_SCHEMA'
           | 'PRECISION'
           | 'RETURNED_CARDINALITY'
           | 'RETURNED_LENGTH'
           | 'RETURNED_OCTET_LENGTH'
           | 'SCALE'
           | 'SCOPE_CATALOG'
           | 'SCOPE_NAME'
           | 'SCOPE_SCHEMA'
           | 'TYPE'
           | 'UNNAMED'
           | 'USER_DEFINED_TYPE_CATALOG'
           | 'USER_DEFINED_TYPE_NAME'
           | 'USER_DEFINED_TYPE_SCHEMA'
           | 'USER_DEFINED_TYPE_CODE'

set_descriptor_statement

SET SQL DESCRIPTOR descriptor_name set_descriptor_information
         ::= 'SET' 'SQL'? 'DESCRIPTOR' descriptor_name set_descriptor_information
Referenced by:

set_descriptor_information

set_header_information , VALUE simple_value_specification set_item_information ,
         ::= set_header_information ( ',' set_header_information )*
Referenced by:

set_header_information

header_item_name = simple_value_specification

set_item_information

descriptor_item_name = simple_value_specification

prepare_statement

PREPARE SQL_identifier attributes_specification FROM simple_value_specification
Referenced by:

attributes_specification

ATTRIBUTES simple_value_specification
         ::= 'ATTRIBUTES' simple_value_specification
Referenced by:

preparable_statement

preparable_SQL_data_statement preparable_SQL_schema_statement preparable_SQL_transaction_statement preparable_SQL_control_statement preparable_SQL_session_statement preparable_implementation_defined_statement
         ::= preparable_SQL_data_statement
           | preparable_SQL_schema_statement
           | preparable_SQL_transaction_statement
           | preparable_SQL_control_statement
           | preparable_SQL_session_statement
Not referenced by any.

preparable_SQL_data_statement

delete_statement_searched dynamic_single_row_select_statement insert_statement dynamic_select_statement update_statement_searched truncate_table_statement merge_statement preparable_dynamic_delete_statement_positioned preparable_dynamic_update_statement_positioned
         ::= delete_statement_searched
           | dynamic_single_row_select_statement
           | insert_statement
           | dynamic_select_statement
           | update_statement_searched
           | truncate_table_statement
           | merge_statement
Referenced by:

preparable_SQL_schema_statement

SQL_schema_statement
         ::= SQL_schema_statement
Referenced by:

preparable_SQL_transaction_statement

SQL_transaction_statement
         ::= SQL_transaction_statement
Referenced by:

preparable_SQL_control_statement

SQL_control_statement
         ::= SQL_control_statement
Referenced by:

preparable_SQL_session_statement

SQL_session_statement
         ::= SQL_session_statement
Referenced by:

dynamic_select_statement

cursor_specification
         ::= cursor_specification

preparable_implementation_defined_statement

character_string_literal
         ::= character_string_literal
Referenced by:

cursor_attributes

cursor_attribute
         ::= cursor_attribute+
Not referenced by any.

cursor_attribute

cursor_sensitivity cursor_scrollability cursor_holdability cursor_returnability
         ::= cursor_sensitivity
           | cursor_scrollability
           | cursor_holdability
           | cursor_returnability
Referenced by:

deallocate_prepared_statement

DEALLOCATE PREPARE SQL_identifier
         ::= 'DEALLOCATE' 'PREPARE' SQL_identifier
Referenced by:

describe_statement

describe_input_statement describe_output_statement
         ::= describe_input_statement
           | describe_output_statement
Referenced by:

describe_input_statement

DESCRIBE INPUT SQL_identifier using_descriptor nesting_option
         ::= 'DESCRIBE' 'INPUT' SQL_identifier using_descriptor nesting_option?
Referenced by:

describe_output_statement

DESCRIBE OUTPUT described_object using_descriptor nesting_option
         ::= 'DESCRIBE' 'OUTPUT'? described_object using_descriptor nesting_option?
Referenced by:

nesting_option

WITH WITHOUT NESTING
         ::= ( 'WITH' | 'WITHOUT' ) 'NESTING'

using_descriptor

USING SQL DESCRIPTOR descriptor_name
         ::= 'USING' 'SQL'? 'DESCRIPTOR' descriptor_name

described_object

SQL_identifier CURSOR extended_cursor_name STRUCTURE
         ::= SQL_identifier
           | 'CURSOR' extended_cursor_name 'STRUCTURE'

input_using_clause

using_arguments using_input_descriptor
         ::= using_arguments
           | using_input_descriptor

using_arguments

USING using_argument ,
         ::= 'USING' using_argument ( ',' using_argument )*
Referenced by:

using_argument

general_value_specification
         ::= general_value_specification
Referenced by:

using_input_descriptor

using_descriptor
         ::= using_descriptor
Referenced by:

output_using_clause

into_arguments into_descriptor
         ::= into_arguments
           | into_descriptor

into_arguments

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

into_argument

target_specification
         ::= target_specification
Referenced by:

into_descriptor

INTO SQL DESCRIPTOR descriptor_name
         ::= 'INTO' 'SQL'? 'DESCRIPTOR' descriptor_name
Referenced by:

execute_statement

EXECUTE SQL_identifier result_using_clause parameter_using_clause
Referenced by:

result_using_clause

output_using_clause
         ::= output_using_clause
Referenced by:

parameter_using_clause

input_using_clause
         ::= input_using_clause
Referenced by:

execute_immediate_statement

EXECUTE IMMEDIATE simple_value_specification
         ::= 'EXECUTE' 'IMMEDIATE' simple_value_specification
Referenced by:

dynamic_declare_cursor

DECLARE cursor_name cursor_properties FOR identifier
         ::= 'DECLARE' cursor_name cursor_properties 'FOR' identifier
Referenced by:

allocate_cursor_statement

ALLOCATE extended_cursor_name cursor_intent
         ::= 'ALLOCATE' extended_cursor_name cursor_intent

cursor_intent

statement_cursor result_set_cursor
         ::= statement_cursor
           | result_set_cursor

statement_cursor

cursor_properties FOR extended_identifier
         ::= cursor_properties 'FOR' extended_identifier
Referenced by:

result_set_cursor

CURSOR FOR PROCEDURE specific_routine_designator
         ::= 'CURSOR'? 'FOR' 'PROCEDURE' specific_routine_designator
Referenced by:

dynamic_open_statement

OPEN dynamic_cursor_name input_using_clause
         ::= 'OPEN' dynamic_cursor_name input_using_clause?

dynamic_fetch_statement

FETCH fetch_orientation FROM dynamic_cursor_name output_using_clause
         ::= 'FETCH' ( fetch_orientation? 'FROM' )? dynamic_cursor_name output_using_clause

dynamic_single_row_select_statement

query_specification
         ::= query_specification

dynamic_close_statement

CLOSE dynamic_cursor_name
         ::= 'CLOSE' dynamic_cursor_name

dynamic_delete_statement_positioned

DELETE FROM target_table WHERE CURRENT OF dynamic_cursor_name
         ::= 'DELETE' 'FROM' target_table 'WHERE' 'CURRENT' 'OF' dynamic_cursor_name

dynamic_update_statement_positioned

UPDATE target_table SET set_clause_list WHERE CURRENT OF dynamic_cursor_name
         ::= 'UPDATE' target_table 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' dynamic_cursor_name

preparable_dynamic_delete_statement_positioned

DELETE FROM target_table WHERE CURRENT OF preparable_dynamic_cursor_name
         ::= 'DELETE' ( 'FROM' target_table )? 'WHERE' 'CURRENT' 'OF' preparable_dynamic_cursor_name

preparable_dynamic_cursor_name

scope_option cursor_name
         ::= scope_option? cursor_name

preparable_dynamic_update_statement_positioned

UPDATE target_table SET set_clause_list WHERE CURRENT OF preparable_dynamic_cursor_name
         ::= 'UPDATE' target_table? 'SET' set_clause_list 'WHERE' 'CURRENT' 'OF' preparable_dynamic_cursor_name

direct_SQL_statement

directly_executable_statement ;
         ::= directly_executable_statement ';'
Referenced by:

directly_executable_statement

direct_SQL_data_statement SQL_schema_statement SQL_transaction_statement SQL_connection_statement SQL_session_statement direct_implementation_defined_statement use_statement
         ::= direct_SQL_data_statement
           | SQL_schema_statement
           | SQL_transaction_statement
           | SQL_connection_statement
           | SQL_session_statement
           | use_statement
Referenced by:

direct_SQL_data_statement

delete_statement_searched direct_select_statement_multiple_rows insert_statement update_statement_searched truncate_table_statement merge_statement temporary_table_declaration
         ::= delete_statement_searched
           | insert_statement
           | update_statement_searched
           | truncate_table_statement
           | merge_statement
           | temporary_table_declaration

direct_implementation_defined_statement

character_string_literal
         ::= character_string_literal

direct_select_statement_multiple_rows

cursor_specification
         ::= cursor_specification

get_diagnostics_statement

GET DIAGNOSTICS SQL_diagnostics_information
         ::= 'GET' 'DIAGNOSTICS' SQL_diagnostics_information

SQL_diagnostics_information

statement_information condition_information all_information
         ::= statement_information
           | condition_information
           | all_information

statement_information

statement_information_item ,

statement_information_item

simple_target_specification = statement_information_item_name
Referenced by:

statement_information_item_name

NUMBER MORE COMMAND_FUNCTION COMMAND_FUNCTION_CODE DYNAMIC_FUNCTION DYNAMIC_FUNCTION_CODE ROW_COUNT TRANSACTIONS_COMMITTED TRANSACTIONS_ROLLED_BACK TRANSACTION_ACTIVE
         ::= 'NUMBER'
           | 'MORE'
           | 'COMMAND_FUNCTION'
           | 'COMMAND_FUNCTION_CODE'
           | 'DYNAMIC_FUNCTION'
           | 'DYNAMIC_FUNCTION_CODE'
           | 'ROW_COUNT'
           | 'TRANSACTIONS_COMMITTED'
           | 'TRANSACTIONS_ROLLED_BACK'
           | 'TRANSACTION_ACTIVE'

condition_information

CONDITION simple_value_specification condition_information_item ,

condition_information_item

simple_target_specification = condition_information_item_name
Referenced by:

condition_information_item_name

CATALOG_NAME CLASS_ORIGIN COLUMN_NAME CONDITION_NUMBER CONNECTION_NAME CONSTRAINT_CATALOG CONSTRAINT_NAME CONSTRAINT_SCHEMA CURSOR_NAME MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MESSAGE_TEXT PARAMETER_MODE PARAMETER_NAME PARAMETER_ORDINAL_POSITION RETURNED_SQLSTATE ROUTINE_CATALOG ROUTINE_NAME ROUTINE_SCHEMA SCHEMA_NAME SERVER_NAME SPECIFIC_NAME SUBCLASS_ORIGIN TABLE_NAME TRIGGER_CATALOG TRIGGER_NAME TRIGGER_SCHEMA
         ::= 'CATALOG_NAME'
           | 'CLASS_ORIGIN'
           | 'COLUMN_NAME'
           | 'CONDITION_NUMBER'
           | 'CONNECTION_NAME'
           | 'CONSTRAINT_CATALOG'
           | 'CONSTRAINT_NAME'
           | 'CONSTRAINT_SCHEMA'
           | 'CURSOR_NAME'
           | 'MESSAGE_LENGTH'
           | 'MESSAGE_OCTET_LENGTH'
           | 'MESSAGE_TEXT'
           | 'PARAMETER_MODE'
           | 'PARAMETER_NAME'
           | 'PARAMETER_ORDINAL_POSITION'
           | 'RETURNED_SQLSTATE'
           | 'ROUTINE_CATALOG'
           | 'ROUTINE_NAME'
           | 'ROUTINE_SCHEMA'
           | 'SCHEMA_NAME'
           | 'SERVER_NAME'
           | 'SPECIFIC_NAME'
           | 'SUBCLASS_ORIGIN'
           | 'TABLE_NAME'
           | 'TRIGGER_CATALOG'
           | 'TRIGGER_NAME'
           | 'TRIGGER_SCHEMA'

all_information

all_info_target = ALL all_qualifier
         ::= all_info_target '=' 'ALL' all_qualifier?

all_info_target

simple_target_specification
         ::= simple_target_specification
Referenced by:

all_qualifier

STATEMENT CONDITION simple_value_specification
         ::= 'STATEMENT'
           | 'CONDITION' simple_value_specification?
Referenced by:

use_statement

USE identifier_chain
         ::= 'USE' identifier_chain

lambda

lambda_params lambda_body
Referenced by:

lambda_body

-> value_expression
         ::= '->' value_expression

lambda_params

actual_identifier ( actual_identifier , )
         ::= actual_identifier
           | '(' ( actual_identifier ( ',' actual_identifier )* )? ')'
Referenced by:

if_not_exists

IF NOT EXISTS
         ::= 'IF' 'NOT' 'EXISTS'

identifier_suffix_chain

@ : actual_identifier
         ::= ( ( '@' | ':' ) actual_identifier? )+
Referenced by:

limit_clause

LIMIT unsigned_integer ALL
         ::= 'LIMIT' ( unsigned_integer | 'ALL' )

presto_generic_type

presto_array_type presto_map_type regular_identifier ( data_type , )
         ::= presto_array_type
           | presto_map_type
           | regular_identifier '(' data_type ( ',' data_type )* ')'
Referenced by:

presto_array_type

ARRAY < data_type > ( data_type )
         ::= 'ARRAY' ( '<' data_type '>' | '(' data_type ')' )
Referenced by:

presto_map_type

MAP < data_type , data_type > ( data_type , data_type )
         ::= 'MAP' ( '<' data_type ',' data_type '>' | '(' data_type ',' data_type ')' )
Referenced by:

grouping_expression

value_expression
         ::= value_expression

count

COUNT ( "COUNT" ( set_quantifier value_expression * )
count    ::= ( 'COUNT' '(' | '"COUNT"' '(' set_quantifier? ( value_expression | '*' )? ) ')'
Referenced by:

table_description

COMMENT character_string_literal
         ::= 'COMMENT' character_string_literal
Referenced by:

routine_description

COMMENT character_string_literal
         ::= 'COMMENT' character_string_literal
Referenced by:

column_description

COMMENT character_string_literal
         ::= 'COMMENT' character_string_literal
Referenced by:

presto_aggregation_function

NUMERIC_HISTOGRAM HISTOGRAM APPROEX_PERCENTILE MAP_AGG SET_AGG MAP_UNION
         ::= 'NUMERIC_HISTOGRAM'
           | 'HISTOGRAM'
           | 'APPROEX_PERCENTILE'
           | 'MAP_AGG'
           | 'SET_AGG'
           | 'MAP_UNION'
Referenced by:

presto_aggregations

presto_aggregation_function ( set_quantifier value_expression , )
Referenced by:

try_cast

TRY_CAST ( cast_operand AS cast_target )
try_cast ::= 'TRY_CAST' '(' cast_operand 'AS' cast_target ')'
Referenced by:

table_attributes

( actual_identifier = value_expression , )
         ::= '(' actual_identifier '=' value_expression ( ',' actual_identifier '=' value_expression )* ')'

or_replace

OR REPLACE
         ::= 'OR' 'REPLACE'

udaf_filter

filter_clause
         ::= filter_clause
Referenced by:

extra_args_to_agg

, value_expression
         ::= ( ',' value_expression )+
Referenced by:

identifier_starting_with_underscore

_ regular_identifier
         ::= '_'+ regular_identifier?
Not referenced by any.

generic_unicode

U&' [^'] '' '
         ::= "U&'" ( [^'] | "''" )* "'"
Not referenced by any.

regular_identifier

identifier_body
         ::= identifier_body

identifier_body

identifier_start identifier_part
         ::= identifier_start identifier_part*
Referenced by:

identifier_part

identifier_start identifier_extend
         ::= identifier_start
           | identifier_extend
Referenced by:

identifier_start

[a-z]
         ::= [a-z]

identifier_extend

[0-9] _ [#xB7]
         ::= [0-9_#xB7]
Referenced by:

large_object_length_token

digit multiplier
         ::= digit+ multiplier
Referenced by:

multiplier

K M G T P
         ::= [KMGTP]

delimited_identifier

" delimited_identifier_body "
         ::= '"' delimited_identifier_body? '"'
Referenced by:

delimited_identifier_body

delimited_identifier_part
         ::= delimited_identifier_part+
Referenced by:

delimited_identifier_part

nondoublequote_character ""
         ::= nondoublequote_character
           | '""'

Unicode_delimited_identifier

U & " Unicode_delimiter_body " Unicode_escape_specifier
         ::= 'U' '&' '"' Unicode_delimiter_body '"' Unicode_escape_specifier?
Referenced by:

Unicode_escape_specifier

UESCAPE ' Unicode_escape_character '
         ::= 'UESCAPE' "'" Unicode_escape_character "'"

Unicode_delimiter_body

Unicode_identifier_part
         ::= Unicode_identifier_part+

Unicode_identifier_part

delimited_identifier_part Unicode_escape_value
         ::= delimited_identifier_part
           | Unicode_escape_value
Referenced by:

Unicode_escape_value

Unicode_4_digit_escape_value Unicode_6_digit_escape_value Unicode_character_escape_value
         ::= Unicode_4_digit_escape_value
           | Unicode_6_digit_escape_value
           | Unicode_character_escape_value

Unicode_4_digit_escape_value

Unicode_escape_character hexit hexit hexit hexit
Referenced by:

Unicode_6_digit_escape_value

Unicode_escape_character + hexit hexit hexit hexit hexit hexit
Referenced by:

Unicode_character_escape_value

Unicode_escape_character Unicode_escape_character
Referenced by:

Unicode_escape_character

[^a-z0-9+'" #xA#x9]
         ::= [^a-z0-9+'" #xA#x9]

nondoublequote_character

[^"]
         ::= [^"]

white_space

newline [#x9]
         ::= newline
           | [ #x9]
Referenced by:

newline

[#xA] [#xD]
newline  ::= [#xA#xD]+

comment

simple_comment
Not referenced by any.

simple_comment

-- comment_character newline
         ::= '--' comment_character* newline?
Referenced by:

comment_character

[^#xA#xD] '
         ::= [^#xA#xD]
           | "'"
Referenced by:

skip_separator

white_space
         ::= white_space+
Not referenced by any.

separator

white_space
         ::= white_space+

digit

[0-9]
digit    ::= [0-9]

character_representation

nonquote_character ''
         ::= nonquote_character
           | "''"

nonquote_character

[^']
         ::= [^']
Referenced by:

quoted_string

' character_representation '
         ::= "'" character_representation* "'"
Referenced by:

national_character_string_literal

N ' character_representation ' separator
         ::= 'N' "'" character_representation* "'" ( separator "'" character_representation* "'" )*
Referenced by:

unicode_literal

U & ' Unicode_representation ' separator Unicode_escape_specifier
         ::= 'U' '&' "'" Unicode_representation* "'" ( separator "'" Unicode_representation* "'" )* Unicode_escape_specifier

Unicode_representation

character_representation Unicode_escape_value
         ::= character_representation
           | Unicode_escape_value
Referenced by:

binary_string_literal

X ' hexit hexit ' separator
         ::= 'X' "'" ' '* ( hexit ' '* hexit ' '* )* "'" ( separator "'" ' '* ( hexit ' '* hexit ' '* )* "'" )*
Referenced by:

hexit

[a-f] [0-9]
hexit    ::= [a-f0-9]

unsigned_integer

digit
         ::= digit+

float_literal

unsigned_integer . unsigned_integer . unsigned_integer
         ::= unsigned_integer '.' unsigned_integer?
           | '.' unsigned_integer

approximate_numeric_literal

mantissa E exponent
         ::= mantissa 'E' exponent
Referenced by:

mantissa

unsigned_integer float_literal
           | float_literal

exponent

signed_integer

signed_integer

+ [#x2D] unsigned_integer
         ::= [+#x2D]? unsigned_integer
Referenced by:

SQL_language_identifier

SQL_language_identifier_start SQL_language_identifier_part
Referenced by:

simple_Latin_letter

[a-z]
         ::= [a-z]

SQL_language_identifier_start

simple_Latin_letter
         ::= simple_Latin_letter
Referenced by:

SQL_language_identifier_part

simple_Latin_letter digit _
         ::= simple_Latin_letter
           | digit
           | '_'
Referenced by:

illegal_input_char

.
         ::= .
Not referenced by any.

EOF

$
EOF      ::= $
Referenced by: