program:

`
program ::= opt_stmt_list
`

no references

opt_stmt_list:

`
opt_stmt_list
::= stmt_list?
`

referenced by:

- create_proc_stmt
- elseif_item
- if_stmt
- loop_stmt
- opt_else
- proc_savepoint_stmt
- program
- trycatch_stmt
- while_stmt

stmt_list:

`
stmt_list
::= ( stmt ';' )+
`

referenced by:

- opt_stmt_list
- switch_case
- switch_stmt

stmt:

`
stmt ::= misc_attrs any_stmt
`

referenced by:

- stmt_list

any_stmt:

`
any_stmt ::= alter_table_add_column_stmt
| begin_schema_region_stmt
| begin_trans_stmt
| blob_get_key_type_stmt
| blob_get_val_type_stmt
| blob_get_key_stmt
| blob_get_val_stmt
| blob_create_key_stmt
| blob_create_val_stmt
| blob_update_key_stmt
| blob_update_val_stmt
| call_stmt
| close_stmt
| commit_return_stmt
| commit_trans_stmt
| 'CONTINUE'
| create_index_stmt
| create_proc_stmt
| create_table_stmt
| create_trigger_stmt
| create_view_stmt
| create_virtual_table_stmt
| declare_deployable_region_stmt
| declare_enum_stmt
| declare_const_stmt
| declare_group_stmt
| declare_select_func_no_check_stmt
| declare_func_stmt
| declare_out_call_stmt
| declare_proc_no_check_stmt
| declare_proc_stmt
| declare_interface_stmt
| declare_schema_region_stmt
| declare_vars_stmt
| declare_forward_read_cursor_stmt
| declare_fetched_value_cursor_stmt
| declare_type_stmt
| delete_stmt
| drop_index_stmt
| drop_table_stmt
| drop_trigger_stmt
| drop_view_stmt
| echo_stmt
| emit_enums_stmt
| emit_group_stmt
| emit_constants_stmt
| '@END_SCHEMA_REGION'
| enforce_normal_stmt
| '@ENFORCE_POP'
| '@ENFORCE_PUSH'
| '@ENFORCE_RESET'
| enforce_strict_stmt
| explain_stmt
| select_nothing_stmt
| fetch_call_stmt
| fetch_stmt
| fetch_values_stmt
| fetch_cursor_from_blob_stmt
| guard_stmt
| if_stmt
| insert_stmt
| 'LEAVE'
| let_stmt
| loop_stmt
| out_stmt
| out_union_stmt
| out_union_parent_child_stmt
| '@PREVIOUS_SCHEMA'
| proc_savepoint_stmt
| release_savepoint_stmt
| 'RETURN'
| rollback_return_stmt
| rollback_trans_stmt
| savepoint_stmt
| select_stmt
| schema_ad_hoc_migration_stmt
| schema_unsub_stmt
| '@SCHEMA_UPGRADE_SCRIPT'
| schema_upgrade_version_stmt
| set_stmt
| switch_stmt
| 'THROW'
| trycatch_stmt
| update_cursor_stmt
| update_stmt
| upsert_stmt
| while_stmt
| with_delete_stmt
| with_insert_stmt
| with_update_stmt
| with_upsert_stmt
`

referenced by:

- stmt

explain_stmt:

`
explain_stmt
::= 'EXPLAIN' opt_query_plan explain_target
`

referenced by:

- any_stmt
- declare_forward_read_cursor_stmt

opt_query_plan:

`
opt_query_plan
::= 'QUERY PLAN'?
`

referenced by:

- explain_stmt

explain_target:

`
explain_target
::= select_stmt
| update_stmt
| delete_stmt
| with_delete_stmt
| with_insert_stmt
| insert_stmt
| upsert_stmt
| drop_table_stmt
| drop_view_stmt
| drop_index_stmt
| drop_trigger_stmt
| begin_trans_stmt
| commit_trans_stmt
`

referenced by:

- explain_stmt

schema_upgrade_version_stmt:

`
schema_upgrade_version_stmt
::= '@SCHEMA_UPGRADE_VERSION' '(' 'integer-literal' ')'
`

referenced by:

- any_stmt

set_stmt:

`
set_stmt ::= 'SET' name ( ':=' expr | 'FROM' 'CURSOR' name )
`

referenced by:

- any_stmt

let_stmt:

`
let_stmt ::= 'LET' name ':=' expr
`

referenced by:

- any_stmt

version_attrs_opt_recreate:

`
version_attrs_opt_recreate
::= ( '@RECREATE' ( '(' name ')' )? opt_delete_plain_attr | version_attrs )?
`

referenced by:

- create_table_stmt

opt_delete_plain_attr:

`
opt_delete_plain_attr
::= '@DELETE'?
`

referenced by:

- version_attrs_opt_recreate

opt_version_attrs:

`
opt_version_attrs
::= version_attrs?
`

referenced by:

- version_attrs

version_attrs:

`
version_attrs
::= ( '@CREATE' | '@DELETE' ) version_annotation opt_version_attrs
`

referenced by:

- opt_version_attrs
- version_attrs_opt_recreate

opt_delete_version_attr:

`
opt_delete_version_attr
::= ( '@DELETE' version_annotation )?
`

referenced by:

- create_index_stmt
- create_trigger_stmt
- create_view_stmt
- create_virtual_table_stmt

drop_table_stmt:

`
drop_table_stmt
::= 'DROP' 'TABLE' ( 'IF' 'EXISTS' )? name
`

referenced by:

- any_stmt
- explain_target

drop_view_stmt:

`
drop_view_stmt
::= 'DROP' 'VIEW' ( 'IF' 'EXISTS' )? name
`

referenced by:

- any_stmt
- explain_target

drop_index_stmt:

`
drop_index_stmt
::= 'DROP' 'INDEX' ( 'IF' 'EXISTS' )? name
`

referenced by:

- any_stmt
- explain_target

drop_trigger_stmt:

`
drop_trigger_stmt
::= 'DROP' 'TRIGGER' ( 'IF' 'EXISTS' )? name
`

referenced by:

- any_stmt
- explain_target

create_virtual_table_stmt:

`
create_virtual_table_stmt
::= 'CREATE' 'VIRTUAL' 'TABLE' opt_vtab_flags name 'USING' name opt_module_args 'AS' '(' col_key_list ')' opt_delete_version_attr
`

referenced by:

- any_stmt

opt_module_args:

`
opt_module_args
::= ( '(' ( misc_attr_value_list | 'ARGUMENTS' 'FOLLOWING' ) ')' )?
`

referenced by:

- create_virtual_table_stmt

create_table_prefix_opt_temp:

`
create_table_prefix_opt_temp
::= 'CREATE' opt_temp 'TABLE'
`

referenced by:

- create_table_stmt

create_table_stmt:

`
create_table_stmt
::= create_table_prefix_opt_temp opt_if_not_exists name '(' col_key_list ')' opt_no_rowid version_attrs_opt_recreate
`

referenced by:

- any_stmt

opt_temp:

`
opt_temp ::= 'TEMP'?
`

referenced by:

- create_table_prefix_opt_temp
- create_trigger_stmt
- create_view_stmt

opt_if_not_exists:

`
opt_if_not_exists
::= ( 'IF' 'NOT' 'EXISTS' )?
`

referenced by:

- create_index_stmt
- create_table_stmt
- create_trigger_stmt
- create_view_stmt

opt_no_rowid:

`
opt_no_rowid
::= ( 'WITHOUT' 'ROWID' )?
`

referenced by:

- create_table_stmt

opt_vtab_flags:

`
opt_vtab_flags
::= ( 'IF' 'NOT' 'EXISTS' '@EPONYMOUS'? | '@EPONYMOUS' ( 'IF' 'NOT' 'EXISTS' )? )?
`

referenced by:

- create_virtual_table_stmt

col_key_list:

`
col_key_list
::= col_key_def ( ',' col_key_def )*
`

referenced by:

- create_table_stmt
- create_virtual_table_stmt

col_key_def:

`
col_key_def
::= col_def
| pk_def
| fk_def
| unq_def
| check_def
| shape_def
`

referenced by:

- col_key_list

check_def:

`
check_def
::= ( 'CONSTRAINT' name )? 'CHECK' '(' expr ')'
`

referenced by:

- col_key_def

shape_expr:

`
shape_expr
::= '-'? name
`

referenced by:

- shape_def

shape_def:

`
shape_def
::= shape_def_base ( '(' shape_expr ( ',' shape_expr )* ')' )?
`

referenced by:

- col_calc
- col_key_def
- declare_value_cursor
- opt_column_spec
- param
- shape_arguments
- typed_name

shape_def_base:

`
shape_def_base
::= 'LIKE' name 'ARGUMENTS'?
`

referenced by:

- shape_def

col_name:

`
col_name ::= name
`

referenced by:

- col_def

misc_attr_key:

`
misc_attr_key
::= name ( ':' name )?
`

referenced by:

- misc_attr

misc_attr_value_list:

`
misc_attr_value_list
::= misc_attr_value ( ',' misc_attr_value )*
`

referenced by:

- misc_attr_value
- opt_module_args

misc_attr_value:

`
misc_attr_value
::= name
| any_literal
| const_expr
| '(' misc_attr_value_list ')'
| ( '-' | '+' ) num_literal
`

referenced by:

- misc_attr
- misc_attr_value_list

misc_attr:

`
misc_attr
::= '@ATTRIBUTE' '(' misc_attr_key ( '=' misc_attr_value )? ')'
`

referenced by:

- misc_attrs

misc_attrs:

`
misc_attrs
::= misc_attr*
`

referenced by:

- col_def
- stmt

col_def:

`
col_def ::= misc_attrs col_name data_type_any ( ( 'NOT' 'NULL' | 'UNIQUE' ) opt_conflict_clause | 'PRIMARY' 'KEY' opt_conflict_clause 'AUTOINCREMENT'? | 'DEFAULT' ( ( '-' | '+' )? num_literal | const_expr | str_literal ) | 'COLLATE' name | 'CHECK' '(' expr ')' | 'HIDDEN' | '@SENSITIVE' | ( '@CREATE' | '@DELETE' ) version_annotation | fk_target_options )*
`

referenced by:

- alter_table_add_column_stmt
- col_key_def

pk_def:

`
pk_def ::= ( 'CONSTRAINT' name )? 'PRIMARY' 'KEY' '(' indexed_columns ')' opt_conflict_clause
`

referenced by:

- col_key_def

opt_conflict_clause:

`
opt_conflict_clause
::= conflict_clause?
`

referenced by:

- col_def
- pk_def
- unq_def

conflict_clause:

`
conflict_clause
::= 'ON CONFLICT' ( 'ROLLBACK' | 'ABORT' | 'FAIL' | 'IGNORE' | 'REPLACE' )
`

referenced by:

- opt_conflict_clause

opt_fk_options:

`
opt_fk_options
::= fk_options?
`

referenced by:

- fk_target_options

fk_options:

`
fk_options
::= fk_on_options fk_deferred_options?
| fk_deferred_options
`

referenced by:

- opt_fk_options

fk_on_options:

`
fk_on_options
::= 'ON' ( 'DELETE' ( fk_action 'ON' 'UPDATE' )? | 'UPDATE' ( fk_action 'ON' 'DELETE' )? ) fk_action
`

referenced by:

- fk_options

fk_action:

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

referenced by:

- fk_on_options

fk_deferred_options:

`
fk_deferred_options
::= ( 'DEFERRABLE' | 'NOT DEFERRABLE' ) fk_initial_state
`

referenced by:

- fk_options

fk_initial_state:

`
fk_initial_state
::= ( 'INITIALLY' ( 'DEFERRED' | 'IMMEDIATE' ) )?
`

referenced by:

- fk_deferred_options

fk_def:

`
fk_def ::= ( 'CONSTRAINT' name )? 'FOREIGN' 'KEY' '(' name_list ')' fk_target_options
`

referenced by:

- col_key_def

fk_target_options:

`
fk_target_options
::= 'REFERENCES' name '(' name_list ')' opt_fk_options
`

referenced by:

- col_def
- fk_def

unq_def:

`
unq_def ::= ( 'CONSTRAINT' name )? 'UNIQUE' '(' indexed_columns ')' opt_conflict_clause
`

referenced by:

- col_key_def

opt_unique:

`
opt_unique
::= 'UNIQUE'?
`

referenced by:

- create_index_stmt

indexed_column:

`
indexed_column
::= expr opt_asc_desc
`

referenced by:

- indexed_columns

indexed_columns:

`
indexed_columns
::= indexed_column ( ',' indexed_column )*
`

referenced by:

- conflict_target
- create_index_stmt
- pk_def
- unq_def

create_index_stmt:

`
create_index_stmt
::= 'CREATE' opt_unique 'INDEX' opt_if_not_exists name 'ON' name '(' indexed_columns ')' opt_where opt_delete_version_attr
`

referenced by:

- any_stmt

name:

`
name ::= 'ID'
| 'TEXT'
| 'TRIGGER'
| 'ROWID'
| 'REPLACE'
| 'KEY'
| 'VIRTUAL'
| 'TYPE'
| 'HIDDEN'
| 'PRIVATE'
| 'FIRST'
| 'LAST'
`

referenced by:

- alter_table_add_column_stmt
- as_alias
- basic_expr
- begin_schema_region_stmt
- blob_create_key_stmt
- blob_create_val_stmt
- blob_get_key_stmt
- blob_get_key_type_stmt
- blob_get_val_stmt
- blob_get_val_type_stmt
- blob_update_key_stmt
- blob_update_val_stmt
- call
- call_stmt
- check_def
- child_result
- close_stmt
- col_calc
- col_def
- col_name
- const_value
- create_index_stmt
- create_proc_stmt
- create_table_stmt
- create_view_stmt
- create_virtual_table_stmt
- cte_binding
- cte_decl
- cte_table
- data_type_any
- declare_const_stmt
- declare_deployable_region_stmt
- declare_enum_stmt
- declare_fetched_value_cursor_stmt
- declare_forward_read_cursor_stmt
- declare_func_stmt
- declare_group_stmt
- declare_interface_stmt
- declare_proc_no_check_stmt
- declare_proc_stmt
- declare_schema_region_stmt
- declare_select_func_no_check_stmt
- declare_type_stmt
- declare_value_cursor
- delete_stmt
- drop_index_stmt
- drop_table_stmt
- drop_trigger_stmt
- drop_view_stmt
- echo_stmt
- enum_value
- fetch_call_stmt
- fetch_cursor_from_blob_stmt
- fetch_stmt
- fetch_values_stmt
- fk_def
- fk_target_options
- from_shape
- func_param
- insert_stmt
- let_stmt
- math_expr
- misc_attr_key
- misc_attr_value
- name_list
- opt_kind
- opt_name
- out_stmt
- out_union_stmt
- param
- pk_def
- region_spec
- savepoint_name
- schema_ad_hoc_migration_stmt
- schema_unsub_stmt
- select_expr
- set_stmt
- shape_arguments
- shape_def_base
- shape_expr
- table_function
- table_or_subquery
- trigger_def
- typed_name
- unq_def
- update_cursor_stmt
- update_entry
- update_stmt
- version_annotation
- version_attrs_opt_recreate
- window_func_inv
- window_name_defn
- window_name_or_defn

opt_name:

`
opt_name ::= name?
`

referenced by:

- basic_update_stmt

name_list:

`
name_list
::= name ( ',' name )*
`

referenced by:

- child_result
- cte_decl
- declare_vars_stmt
- emit_constants_stmt
- fetch_stmt
- fk_def
- fk_target_options
- join_cond
- opt_name_list
- opt_of

opt_name_list:

`
opt_name_list
::= name_list?
`

referenced by:

- emit_enums_stmt
- emit_group_stmt
- opt_column_spec

cte_binding_list:

`
cte_binding_list
::= cte_binding ( ',' cte_binding )*
`

referenced by:

- cte_table
- shared_cte

cte_binding:

`
cte_binding
::= name 'AS'? name
`

referenced by:

- cte_binding_list

version_annotation:

`
version_annotation
::= '(' 'integer-literal' ( ',' name ( ':' name )? )? ')'
`

referenced by:

- col_def
- opt_delete_version_attr
- schema_ad_hoc_migration_stmt
- version_attrs

opt_kind:

`
opt_kind ::= ( '<' name '>' )?
`

referenced by:

- data_type_any
- data_type_numeric

data_type_numeric:

`
data_type_numeric
::= ( 'INT' | 'INTEGER' | 'REAL' | 'BOOL' | 'LONG_INT' | 'LONG_INTEGER' | 'LONG' ( 'INTEGER' | 'INT' )? ) opt_kind
`

referenced by:

- data_type_any
- declare_enum_stmt

data_type_any:

`
data_type_any
::= data_type_numeric
| ( 'TEXT' | 'BLOB' ) opt_kind
| 'OBJECT' ( opt_kind | '<' name ( 'CURSOR' | 'SET' ) '>' )
| 'ID'
`

referenced by:

- basic_expr
- col_def
- data_type_with_options

data_type_with_options:

`
data_type_with_options
::= data_type_any ( 'NOT' 'NULL' '@SENSITIVE'? | '@SENSITIVE' ( 'NOT' 'NULL' )? )?
`

referenced by:

- basic_expr
- declare_func_stmt
- declare_select_func_no_check_stmt
- declare_type_stmt
- declare_vars_stmt
- param
- typed_name

str_literal:

`
str_literal
::= str_leaf+
`

referenced by:

- any_literal
- col_def
- echo_stmt

str_leaf:

`
str_leaf ::= 'sql-string-literal'
| 'c-string-literal'
`

referenced by:

- str_literal

num_literal:

`
num_literal
::= 'integer-literal'
| 'long-literal'
| 'real-literal'
| 'TRUE'
| 'FALSE'
`

referenced by:

- any_literal
- col_def
- misc_attr_value

const_expr:

`
const_expr
::= 'CONST' '(' expr ')'
`

referenced by:

- basic_expr
- col_def
- misc_attr_value

any_literal:

`
any_literal
::= str_literal
| num_literal
| 'NULL'
| '@FILE' '(' str_literal ')'
| '@PROC'
| 'sql-blob-literal'
`

referenced by:

- basic_expr
- misc_attr_value

raise_expr:

`
raise_expr
::= 'RAISE' '(' ( 'IGNORE' | ( 'ROLLBACK' | 'ABORT' | 'FAIL' ) ',' expr ) ')'
`

referenced by:

- basic_expr

call:

`
call ::= name '(' 'DISTINCT'? arg_list ')' opt_filter_clause
| basic_expr ':' name '(' arg_list ')'
`

referenced by:

- basic_expr

basic_expr:

`
basic_expr
::= name ( '.' name )?
| '@RC'
| any_literal
| const_expr
| ( '(' ( expr | select_stmt ( 'IF' 'NOTHING' ( ( 'OR' 'NULL' )? expr | 'THROW' ) )? ) | 'EXISTS' '(' select_stmt | 'CAST' '(' expr 'AS' data_type_any | 'TYPE_CHECK' '(' expr 'AS' data_type_with_options ) ')'
| call
| window_func_inv
| raise_expr
| 'CASE' expr? ( 'WHEN' expr 'THEN' expr )+ ( 'ELSE' expr )? 'END'
`

referenced by:

- call
- math_expr

math_expr:

`
math_expr
::= basic_expr
| math_expr ( ( '&' | '|' | '<<' | '>>' | '+' | '-' | '*' | '/' | '%' | '=' | '==' | '<' | '>' | '<>' | '!=' | '>=' | '<=' | 'LIKE' | 'MATCH' | 'REGEXP' | 'GLOB' | 'BETWEEN' math_expr 'AND' | '||' ) math_expr | 'IS' ( 'NOT'? ( 'TRUE' | 'FALSE' | math_expr ) | math_expr ) | 'ISNULL' | 'NOTNULL' | 'IS TRUE' | 'IS FALSE' | 'NOT'? ( 'IN' '(' ( expr_list | select_stmt ) ')' | ( 'LIKE' | 'MATCH' | 'REGEXP' | 'GLOB' | 'BETWEEN' math_expr 'AND' ) math_expr ) | 'IN' '(' ( expr_list | select_stmt ) ')' | 'COLLATE' name )
| ( '-' | '+' | '~' | 'NOT' ) math_expr
`

referenced by:

- expr
- math_expr

expr:

`
expr ::= math_expr
| expr ( 'AND' | 'OR' ) expr
`

referenced by:

- arg_expr
- basic_expr
- call_expr
- check_def
- col_def
- const_expr
- const_value
- declare_forward_read_cursor_stmt
- elseif_item
- enum_value
- expr
- expr_list
- expr_name
- fetch_cursor_from_blob_stmt
- frame_boundary
- frame_boundary_end
- frame_boundary_start
- groupby_item
- guard_stmt
- if_stmt
- indexed_column
- insert_list_item
- join_cond
- let_stmt
- opt_having
- opt_insert_dummy_spec
- opt_limit
- opt_offset
- opt_when_expr
- opt_where
- orderby_item
- raise_expr
- select_expr
- set_stmt
- switch_stmt
- update_entry
- while_stmt

arg_expr:

`
arg_expr ::= '*'
| expr
| shape_arguments
`

referenced by:

- arg_list

arg_list:

`
arg_list ::= ( arg_expr ',' )* arg_expr?
`

referenced by:

- call
- table_function
- window_func_inv

expr_list:

`
expr_list
::= expr ( ',' expr )*
`

referenced by:

- math_expr
- opt_partition_by
- switch_case

shape_arguments:

`
shape_arguments
::= 'FROM' ( name | 'ARGUMENTS' ) shape_def?
`

referenced by:

- arg_expr
- call_expr
- insert_list_item

column_calculation:

`
column_calculation
::= 'COLUMNS' '(' 'DISTINCT'? col_calc ( ',' col_calc )* ')'
`

referenced by:

- select_expr

col_calc:

`
col_calc ::= name ( shape_def | '.' name )?
| shape_def
`

referenced by:

- column_calculation

call_expr:

`
call_expr
::= expr
| shape_arguments
`

referenced by:

- call_stmt

cte_decl:

`
cte_decl ::= name '(' ( name_list | '*' ) ')'
`

referenced by:

- cte_table

shared_cte:

`
shared_cte
::= call_stmt ( 'USING' cte_binding_list )?
`

referenced by:

- cte_table
- table_or_subquery

cte_table:

`
cte_table
::= cte_decl ( 'AS' '(' ( select_stmt | shared_cte ) ')' | 'LIKE' ( '(' select_stmt ')' | name ) )
| '(' call_stmt ( 'USING' cte_binding_list )? ')'
`

referenced by:

- with_prefix

with_prefix:

`
with_prefix
::= 'WITH' 'RECURSIVE'? cte_table ( ',' cte_table )*
`

referenced by:

- with_delete_stmt
- with_insert_stmt
- with_select_stmt
- with_update_stmt
- with_upsert_stmt

with_select_stmt:

`
with_select_stmt
::= with_prefix select_stmt_no_with
`

referenced by:

- select_stmt

select_nothing_stmt:

`
select_nothing_stmt
::= 'SELECT' 'NOTHING'
`

referenced by:

- any_stmt

select_stmt:

`
select_stmt
::= with_select_stmt
| select_stmt_no_with
`

referenced by:

- any_stmt
- basic_expr
- create_view_stmt
- cte_table
- declare_forward_read_cursor_stmt
- declare_value_cursor
- explain_target
- insert_stmt
- math_expr
- table_or_subquery

select_stmt_no_with:

`
select_stmt_no_with
::= select_core ( compound_operator select_core )* opt_orderby opt_limit opt_offset
`

referenced by:

- select_stmt
- trigger_select_stmt
- with_select_stmt

select_core:

`
select_core
::= 'SELECT' select_opts ( select_expr ',' )* ( select_expr | '*' ) opt_from_query_parts opt_where opt_groupby opt_having opt_select_window
| 'VALUES' '(' insert_list ')' ( ',' '(' insert_list ')' )*
`

referenced by:

- select_stmt_no_with

compound_operator:

`
compound_operator
::= 'UNION'
| 'UNION ALL'
| 'INTERSECT'
| 'EXCEPT'
`

referenced by:

- select_stmt_no_with

window_func_inv:

`
window_func_inv
::= name '(' arg_list ')' opt_filter_clause 'OVER' window_name_or_defn
`

referenced by:

- basic_expr

opt_filter_clause:

`
opt_filter_clause
::= ( 'FILTER' '(' opt_where ')' )?
`

referenced by:

- call
- window_func_inv

window_name_or_defn:

`
window_name_or_defn
::= window_defn
| name
`

referenced by:

- window_func_inv

window_defn:

`
window_defn
::= '(' opt_partition_by opt_orderby opt_frame_spec ')'
`

referenced by:

- window_name_defn
- window_name_or_defn

opt_frame_spec:

`
opt_frame_spec
::= ( frame_type frame_boundary_opts frame_exclude )?
`

referenced by:

- window_defn

frame_type:

`
frame_type
::= 'RANGE'
| 'ROWS'
| 'GROUPS'
`

referenced by:

- opt_frame_spec

frame_exclude:

`
frame_exclude
::= ( 'EXCLUDE NO OTHERS' | 'EXCLUDE CURRENT ROW' | 'EXCLUDE GROUP' | 'EXCLUDE TIES' )?
`

referenced by:

- opt_frame_spec

frame_boundary_opts:

`
frame_boundary_opts
::= frame_boundary
| 'BETWEEN' frame_boundary_start 'AND' frame_boundary_end
`

referenced by:

- opt_frame_spec

frame_boundary_start:

`
frame_boundary_start
::= 'UNBOUNDED' 'PRECEDING'
| expr ( 'PRECEDING' | 'FOLLOWING' )
| 'CURRENT ROW'
`

referenced by:

- frame_boundary_opts

frame_boundary_end:

`
frame_boundary_end
::= expr ( 'PRECEDING' | 'FOLLOWING' )
| 'CURRENT ROW'
| 'UNBOUNDED' 'FOLLOWING'
`

referenced by:

- frame_boundary_opts

frame_boundary:

`
frame_boundary
::= ( 'UNBOUNDED' | expr ) 'PRECEDING'
| 'CURRENT ROW'
`

referenced by:

- frame_boundary_opts

opt_partition_by:

`
opt_partition_by
::= ( 'PARTITION' 'BY' expr_list )?
`

referenced by:

- window_defn

opt_select_window:

`
opt_select_window
::= window_clause?
`

referenced by:

- select_core

window_clause:

`
window_clause
::= 'WINDOW' window_name_defn ( ',' window_name_defn )*
`

referenced by:

- opt_select_window

window_name_defn:

`
window_name_defn
::= name 'AS' window_defn
`

referenced by:

- window_clause

region_spec:

`
region_spec
::= name 'PRIVATE'?
`

referenced by:

- region_list

region_list:

`
region_list
::= region_spec ( ',' region_spec )*
`

referenced by:

- declare_deployable_region_stmt
- declare_schema_region_stmt

declare_schema_region_stmt:

`
declare_schema_region_stmt
::= '@DECLARE_SCHEMA_REGION' name ( 'USING' region_list )?
`

referenced by:

- any_stmt

declare_deployable_region_stmt:

`
declare_deployable_region_stmt
::= '@DECLARE_DEPLOYABLE_REGION' name ( 'USING' region_list )?
`

referenced by:

- any_stmt

begin_schema_region_stmt:

`
begin_schema_region_stmt
::= '@BEGIN_SCHEMA_REGION' name
`

referenced by:

- any_stmt

schema_unsub_stmt:

`
schema_unsub_stmt
::= '@UNSUB' '(' name ')'
`

referenced by:

- any_stmt

schema_ad_hoc_migration_stmt:

`
schema_ad_hoc_migration_stmt
::= '@SCHEMA_AD_HOC_MIGRATION' ( version_annotation | 'FOR' '@RECREATE' '(' name ',' name ')' )
`

referenced by:

- any_stmt

emit_enums_stmt:

`
emit_enums_stmt
::= '@EMIT_ENUMS' opt_name_list
`

referenced by:

- any_stmt

emit_group_stmt:

`
emit_group_stmt
::= '@EMIT_GROUP' opt_name_list
`

referenced by:

- any_stmt

emit_constants_stmt:

`
emit_constants_stmt
::= '@EMIT_CONSTANTS' name_list
`

referenced by:

- any_stmt

opt_from_query_parts:

`
opt_from_query_parts
::= ( 'FROM' query_parts )?
`

referenced by:

- basic_update_stmt
- select_core
- update_stmt

opt_where:

`
opt_where
::= ( 'WHERE' expr )?
`

referenced by:

- basic_update_stmt
- conflict_target
- create_index_stmt
- delete_stmt
- opt_filter_clause
- select_core
- update_stmt

opt_groupby:

`
opt_groupby
::= ( 'GROUP' 'BY' groupby_item ( ',' groupby_item )* )?
`

referenced by:

- select_core

groupby_item:

`
groupby_item
::= expr
`

referenced by:

- opt_groupby

opt_asc_desc:

`
opt_asc_desc
::= ( ( 'ASC' | 'DESC' ) opt_nullsfirst_nullslast )?
`

referenced by:

- indexed_column
- orderby_item

opt_nullsfirst_nullslast:

`
opt_nullsfirst_nullslast
::= ( 'NULLS' ( 'FIRST' | 'LAST' ) )?
`

referenced by:

- opt_asc_desc

opt_having:

`
opt_having
::= ( 'HAVING' expr )?
`

referenced by:

- select_core

opt_orderby:

`
opt_orderby
::= ( 'ORDER' 'BY' orderby_item ( ',' orderby_item )* )?
`

referenced by:

- select_stmt_no_with
- update_stmt
- window_defn

orderby_item:

`
orderby_item
::= expr opt_asc_desc
`

referenced by:

- opt_orderby

opt_limit:

`
opt_limit
::= ( 'LIMIT' expr )?
`

referenced by:

- select_stmt_no_with
- update_stmt

opt_offset:

`
opt_offset
::= ( 'OFFSET' expr )?
`

referenced by:

- select_stmt_no_with

select_opts:

`
select_opts
::= ( 'ALL' | 'DISTINCT' | 'DISTINCTROW' )?
`

referenced by:

- select_core

select_expr:

`
select_expr
::= expr opt_as_alias
| name '.' '*'
| column_calculation
`

referenced by:

- select_core

opt_as_alias:

`
opt_as_alias
::= as_alias?
`

referenced by:

- select_expr
- table_or_subquery

as_alias:

`
as_alias ::= 'AS'? name
`

referenced by:

- expr_name
- opt_as_alias

query_parts:

`
query_parts
::= table_or_subquery ( ',' table_or_subquery )*
| join_clause
`

referenced by:

- opt_from_query_parts
- table_or_subquery

join_clause:

`
join_clause
::= table_or_subquery join_target+
`

referenced by:

- query_parts

table_or_subquery:

`
table_or_subquery
::= ( name | table_function ) opt_as_alias
| '(' ( ( select_stmt | shared_cte ) ')' opt_as_alias | query_parts ')' )
`

referenced by:

- join_clause
- join_target
- query_parts

join_type:

`
join_type
::= ( ( 'LEFT' | 'RIGHT' ) 'OUTER'? | 'INNER' | 'CROSS' )?
`

referenced by:

- join_target

join_target:

`
join_target
::= join_type 'JOIN' table_or_subquery opt_join_cond
`

referenced by:

- join_clause

opt_join_cond:

`
opt_join_cond
::= join_cond?
`

referenced by:

- join_target

join_cond:

`
join_cond
::= 'ON' expr
| 'USING' '(' name_list ')'
`

referenced by:

- opt_join_cond

table_function:

`
table_function
::= name '(' arg_list ')'
`

referenced by:

- table_or_subquery

create_view_stmt:

`
create_view_stmt
::= 'CREATE' opt_temp 'VIEW' opt_if_not_exists name 'AS' select_stmt opt_delete_version_attr
`

referenced by:

- any_stmt

with_delete_stmt:

`
with_delete_stmt
::= with_prefix delete_stmt
`

referenced by:

- any_stmt
- explain_target

delete_stmt:

`
delete_stmt
::= 'DELETE' 'FROM' name opt_where
`

referenced by:

- any_stmt
- explain_target
- trigger_delete_stmt
- with_delete_stmt

opt_insert_dummy_spec:

`
opt_insert_dummy_spec
::= ( '@DUMMY_SEED' '(' expr ')' dummy_modifier )?
`

referenced by:

- fetch_values_stmt
- insert_stmt

dummy_modifier:

`
dummy_modifier
::= ( '@DUMMY_NULLABLES' '@DUMMY_DEFAULTS'? | '@DUMMY_DEFAULTS' '@DUMMY_NULLABLES'? )?
`

referenced by:

- opt_insert_dummy_spec

insert_stmt_type:

`
insert_stmt_type
::= ( 'INSERT' ( 'OR' ( 'REPLACE' | 'IGNORE' | 'ROLLBACK' | 'ABORT' | 'FAIL' ) )? | 'REPLACE' ) 'INTO'
`

referenced by:

- insert_stmt

with_insert_stmt:

`
with_insert_stmt
::= with_prefix insert_stmt
`

referenced by:

- any_stmt
- explain_target

opt_column_spec:

`
opt_column_spec
::= ( '(' ( opt_name_list | shape_def ) ')' )?
`

referenced by:

- fetch_call_stmt
- fetch_values_stmt
- from_shape
- insert_stmt
- update_cursor_stmt

from_shape:

`
from_shape
::= 'FROM' ( 'CURSOR'? name | 'ARGUMENTS' ) opt_column_spec
`

referenced by:

- fetch_values_stmt
- insert_stmt
- update_cursor_stmt

insert_stmt:

`
insert_stmt
::= insert_stmt_type name ( opt_column_spec ( select_stmt | from_shape ) opt_insert_dummy_spec | 'DEFAULT' 'VALUES' | 'USING' ( select_stmt | expr_names opt_insert_dummy_spec ) )
`

referenced by:

- any_stmt
- explain_target
- trigger_insert_stmt
- upsert_stmt
- with_insert_stmt

insert_list_item:

`
insert_list_item
::= expr
| shape_arguments
`

referenced by:

- insert_list

insert_list:

`
insert_list
::= ( insert_list_item ',' )* insert_list_item?
`

referenced by:

- fetch_values_stmt
- select_core
- update_cursor_stmt

basic_update_stmt:

`
basic_update_stmt
::= 'UPDATE' opt_name 'SET' update_list opt_from_query_parts opt_where
`

referenced by:

- trigger_update_stmt
- upsert_stmt

with_update_stmt:

`
with_update_stmt
::= with_prefix update_stmt
`

referenced by:

- any_stmt

update_stmt:

`
update_stmt
::= 'UPDATE' name 'SET' update_list opt_from_query_parts opt_where opt_orderby opt_limit
`

referenced by:

- any_stmt
- explain_target
- with_update_stmt

update_entry:

`
update_entry
::= name '=' expr
`

referenced by:

- update_list

update_list:

`
update_list
::= update_entry ( ',' update_entry )*
`

referenced by:

- basic_update_stmt
- update_stmt

with_upsert_stmt:

`
with_upsert_stmt
::= with_prefix upsert_stmt
`

referenced by:

- any_stmt

upsert_stmt:

`
upsert_stmt
::= insert_stmt 'ON CONFLICT' conflict_target 'DO' ( 'NOTHING' | basic_update_stmt )
`

referenced by:

- any_stmt
- explain_target
- with_upsert_stmt

update_cursor_stmt:

`
update_cursor_stmt
::= 'UPDATE' 'CURSOR' name ( opt_column_spec ( 'FROM' 'VALUES' '(' insert_list ')' | from_shape ) | 'USING' expr_names )
`

referenced by:

- any_stmt

conflict_target:

`
conflict_target
::= ( '(' indexed_columns ')' opt_where )?
`

referenced by:

- upsert_stmt

function:

`
function ::= 'FUNC'
| 'FUNCTION'
`

referenced by:

- declare_func_stmt
- declare_select_func_no_check_stmt
- enforcement_options

declare_out_call_stmt:

`
declare_out_call_stmt
::= 'DECLARE' 'OUT' call_stmt
`

referenced by:

- any_stmt

declare_enum_stmt:

`
declare_enum_stmt
::= 'DECLARE' 'ENUM' name data_type_numeric '(' enum_value ( ',' enum_value )* ')'
`

referenced by:

- any_stmt

enum_value:

`
enum_value
::= name ( '=' expr )?
`

referenced by:

- declare_enum_stmt

declare_const_stmt:

`
declare_const_stmt
::= 'DECLARE' 'CONST' 'GROUP' name '(' const_value ( ',' const_value )* ')'
`

referenced by:

- any_stmt

declare_group_stmt:

`
declare_group_stmt
::= 'DECLARE' 'GROUP' name 'BEGIN' ( declare_vars_stmt ';' )+ 'END'
`

referenced by:

- any_stmt

const_value:

`
const_value
::= name '=' expr
`

referenced by:

- declare_const_stmt

declare_select_func_no_check_stmt:

`
declare_select_func_no_check_stmt
::= 'DECLARE' 'SELECT' function name 'NO' 'CHECK' ( data_type_with_options | '(' typed_names ')' )
`

referenced by:

- any_stmt

declare_func_stmt:

`
declare_func_stmt
::= 'DECLARE' ( function name '(' ( func_param ',' )* func_param? ')' 'CREATE'? data_type_with_options | 'SELECT' function name '(' params ')' ( data_type_with_options | '(' typed_names ')' ) )
`

referenced by:

- any_stmt

procedure:

`
procedure
::= 'PROC'
| 'PROCEDURE'
`

referenced by:

- create_proc_stmt
- declare_proc_no_check_stmt
- declare_proc_stmt
- proc_savepoint_stmt

declare_proc_no_check_stmt:

`
declare_proc_no_check_stmt
::= 'DECLARE' procedure name 'NO' 'CHECK'
`

referenced by:

- any_stmt

declare_proc_stmt:

`
declare_proc_stmt
::= 'DECLARE' procedure name '(' params ')' ( ( 'OUT' 'UNION'? '(' typed_names ')' )? ( 'USING' 'TRANSACTION' )? | '(' typed_names ')' )
`

referenced by:

- any_stmt

declare_interface_stmt:

`
declare_interface_stmt
::= 'DECLARE'? 'INTERFACE' name '(' typed_names ')'
`

referenced by:

- any_stmt

create_proc_stmt:

`
create_proc_stmt
::= 'CREATE' procedure name '(' params ')' 'BEGIN' opt_stmt_list 'END'
`

referenced by:

- any_stmt

inout:

`
inout ::= 'IN'
| 'OUT'
| 'INOUT'
`

referenced by:

- param

typed_name:

`
typed_name
::= name ( data_type_with_options | shape_def )
| shape_def
`

referenced by:

- typed_names

typed_names:

`
typed_names
::= typed_name ( ',' typed_name )*
`

referenced by:

- declare_func_stmt
- declare_interface_stmt
- declare_proc_stmt
- declare_select_func_no_check_stmt
- declare_value_cursor

func_param:

`
func_param
::= param
| name 'CURSOR'
`

referenced by:

- declare_func_stmt

param:

`
param ::= name ( data_type_with_options | shape_def )
| inout name data_type_with_options
| shape_def
`

referenced by:

- func_param
- params

params:

`
params ::= ( param ',' )* param?
`

referenced by:

- create_proc_stmt
- declare_func_stmt
- declare_proc_stmt

declare_value_cursor:

`
declare_value_cursor
::= ( 'DECLARE' name 'CURSOR' | 'CURSOR' name ) ( shape_def | 'LIKE' ( select_stmt | '(' typed_names ')' ) )
`

referenced by:

- declare_vars_stmt

declare_forward_read_cursor_stmt:

`
declare_forward_read_cursor_stmt
::= ( 'DECLARE' name 'CURSOR' | 'CURSOR' name ) 'FOR' ( select_stmt | explain_stmt | call_stmt | expr )
`

referenced by:

- any_stmt

declare_fetched_value_cursor_stmt:

`
declare_fetched_value_cursor_stmt
::= ( 'DECLARE' name 'CURSOR' | 'CURSOR' name ) 'FETCH' 'FROM' call_stmt
`

referenced by:

- any_stmt

declare_type_stmt:

`
declare_type_stmt
::= ( 'DECLARE' name 'TYPE' | 'TYPE' name ) data_type_with_options
`

referenced by:

- any_stmt

declare_vars_stmt:

`
declare_vars_stmt
::= ( 'DECLARE' | 'VAR' ) name_list data_type_with_options
| declare_value_cursor
`

referenced by:

- any_stmt
- declare_group_stmt

call_stmt:

`
call_stmt
::= 'CALL' name '(' ( call_expr ( ',' call_expr )* | '*' )? ')'
`

referenced by:

- any_stmt
- child_result
- cte_table
- declare_fetched_value_cursor_stmt
- declare_forward_read_cursor_stmt
- declare_out_call_stmt
- fetch_call_stmt
- out_union_parent_child_stmt
- shared_cte

while_stmt:

`
while_stmt
::= 'WHILE' expr 'BEGIN' opt_stmt_list 'END'
`

referenced by:

- any_stmt

switch_stmt:

`
switch_stmt
::= 'SWITCH' expr ( 'ALL' 'VALUES' )? switch_case+ ( 'ELSE' stmt_list )? 'END'
`

referenced by:

- any_stmt

switch_case:

`
switch_case
::= 'WHEN' expr_list 'THEN' ( stmt_list | 'NOTHING' )
`

referenced by:

- switch_stmt

loop_stmt:

`
loop_stmt
::= 'LOOP' fetch_stmt 'BEGIN' opt_stmt_list 'END'
`

referenced by:

- any_stmt

rollback_return_stmt:

`
rollback_return_stmt
::= 'ROLLBACK' 'RETURN'
`

referenced by:

- any_stmt
- control_stmt

commit_return_stmt:

`
commit_return_stmt
::= 'COMMIT' 'RETURN'
`

referenced by:

- any_stmt
- control_stmt

trycatch_stmt:

`
trycatch_stmt
::= 'BEGIN' 'TRY' opt_stmt_list 'END' 'TRY' ';' 'BEGIN' 'CATCH' opt_stmt_list 'END' 'CATCH'
`

referenced by:

- any_stmt

fetch_stmt:

`
fetch_stmt
::= 'FETCH' name ( 'INTO' name_list )?
`

referenced by:

- any_stmt
- loop_stmt

fetch_cursor_from_blob_stmt:

`
fetch_cursor_from_blob_stmt
::= 'FETCH' name 'FROM BLOB' expr
`

referenced by:

- any_stmt

fetch_values_stmt:

`
fetch_values_stmt
::= 'FETCH' name ( opt_column_spec ( 'FROM' 'VALUES' '(' insert_list ')' | from_shape ) | 'USING' expr_names ) opt_insert_dummy_spec
`

referenced by:

- any_stmt

expr_names:

`
expr_names
::= expr_name ( ',' expr_name )*
`

referenced by:

- fetch_values_stmt
- insert_stmt
- update_cursor_stmt

expr_name:

`
expr_name
::= expr as_alias
`

referenced by:

- expr_names

fetch_call_stmt:

`
fetch_call_stmt
::= 'FETCH' name opt_column_spec 'FROM' call_stmt
`

referenced by:

- any_stmt

close_stmt:

`
close_stmt
::= 'CLOSE' name
`

referenced by:

- any_stmt

out_stmt:

`
out_stmt ::= 'OUT' name
`

referenced by:

- any_stmt

out_union_stmt:

`
out_union_stmt
::= 'OUT' 'UNION' name
`

referenced by:

- any_stmt

out_union_parent_child_stmt:

`
out_union_parent_child_stmt
::= 'OUT' 'UNION' call_stmt 'JOIN' child_result ( 'AND' child_result )*
`

referenced by:

- any_stmt

child_result:

`
child_result
::= call_stmt 'USING' '(' name_list ')' ( 'AS' name )?
`

referenced by:

- out_union_parent_child_stmt

if_stmt:

`
if_stmt ::= 'IF' expr 'THEN' opt_stmt_list opt_elseif_list opt_else 'END' 'IF'
`

referenced by:

- any_stmt

opt_else:

`
opt_else ::= ( 'ELSE' opt_stmt_list )?
`

referenced by:

- if_stmt

elseif_item:

`
elseif_item
::= 'ELSE IF' expr 'THEN' opt_stmt_list
`

referenced by:

- opt_elseif_list

opt_elseif_list:

`
opt_elseif_list
::= elseif_item*
`

referenced by:

- if_stmt

control_stmt:

`
control_stmt
::= commit_return_stmt
| 'CONTINUE'
| 'LEAVE'
| 'RETURN'
| rollback_return_stmt
| 'THROW'
`

referenced by:

- guard_stmt

guard_stmt:

`
guard_stmt
::= 'IF' expr control_stmt
`

referenced by:

- any_stmt

transaction_mode:

`
transaction_mode
::= ( 'DEFERRED' | 'IMMEDIATE' | 'EXCLUSIVE' )?
`

referenced by:

- begin_trans_stmt

begin_trans_stmt:

`
begin_trans_stmt
::= 'BEGIN' transaction_mode 'TRANSACTION'?
`

referenced by:

- any_stmt
- explain_target

rollback_trans_stmt:

`
rollback_trans_stmt
::= 'ROLLBACK' 'TRANSACTION'? ( 'TO' 'SAVEPOINT'? savepoint_name )?
`

referenced by:

- any_stmt

commit_trans_stmt:

`
commit_trans_stmt
::= 'COMMIT' 'TRANSACTION'?
`

referenced by:

- any_stmt
- explain_target

proc_savepoint_stmt:

`
proc_savepoint_stmt
::= procedure 'SAVEPOINT' 'BEGIN' opt_stmt_list 'END'
`

referenced by:

- any_stmt

savepoint_name:

`
savepoint_name
::= '@PROC'
| name
`

referenced by:

- release_savepoint_stmt
- rollback_trans_stmt
- savepoint_stmt

savepoint_stmt:

`
savepoint_stmt
::= 'SAVEPOINT' savepoint_name
`

referenced by:

- any_stmt

release_savepoint_stmt:

`
release_savepoint_stmt
::= 'RELEASE' 'SAVEPOINT'? savepoint_name
`

referenced by:

- any_stmt

echo_stmt:

`
echo_stmt
::= '@ECHO' name ',' str_literal
`

referenced by:

- any_stmt

alter_table_add_column_stmt:

`
alter_table_add_column_stmt
::= 'ALTER' 'TABLE' name 'ADD' 'COLUMN' col_def
`

referenced by:

- any_stmt

create_trigger_stmt:

`
create_trigger_stmt
::= 'CREATE' opt_temp 'TRIGGER' opt_if_not_exists trigger_def opt_delete_version_attr
`

referenced by:

- any_stmt

trigger_def:

`
trigger_def
::= name trigger_condition trigger_operation 'ON' name trigger_action
`

referenced by:

- create_trigger_stmt

trigger_condition:

`
trigger_condition
::= ( 'BEFORE' | 'AFTER' | 'INSTEAD' 'OF' )?
`

referenced by:

- trigger_def

trigger_operation:

`
trigger_operation
::= 'DELETE'
| 'INSERT'
| 'UPDATE' opt_of
`

referenced by:

- trigger_def

opt_of:

`
opt_of ::= ( 'OF' name_list )?
`

referenced by:

- trigger_operation

trigger_action:

`
trigger_action
::= opt_foreachrow opt_when_expr 'BEGIN' trigger_stmt+ 'END'
`

referenced by:

- trigger_def

opt_foreachrow:

`
opt_foreachrow
::= 'FOR EACH ROW'?
`

referenced by:

- trigger_action

opt_when_expr:

`
opt_when_expr
::= ( 'WHEN' expr )?
`

referenced by:

- trigger_action

trigger_stmt:

`
trigger_stmt
::= ( trigger_update_stmt | trigger_insert_stmt | trigger_delete_stmt | trigger_select_stmt ) ';'
`

referenced by:

- trigger_action

trigger_select_stmt:

`
trigger_select_stmt
::= select_stmt_no_with
`

referenced by:

- trigger_stmt

trigger_insert_stmt:

`
trigger_insert_stmt
::= insert_stmt
`

referenced by:

- trigger_stmt

trigger_delete_stmt:

`
trigger_delete_stmt
::= delete_stmt
`

referenced by:

- trigger_stmt

trigger_update_stmt:

`
trigger_update_stmt
::= basic_update_stmt
`

referenced by:

- trigger_stmt

enforcement_options:

`
enforcement_options
::= 'FOREIGN' 'KEY' 'ON' ( 'UPDATE' | 'DELETE' )
| 'JOIN'
| 'UPSERT' 'STATEMENT'
| 'WINDOW' function
| 'WITHOUT' 'ROWID'
| 'TRANSACTION'
| 'SELECT' 'IF' 'NOTHING'
| 'INSERT' 'SELECT'
| 'TABLE' 'FUNCTION'
| 'ENCODE' ( 'CONTEXT COLUMN' | 'CONTEXT TYPE' ( 'INTEGER' | 'LONG_INTEGER' | 'REAL' | 'BOOL' | 'TEXT' | 'BLOB' ) )
| 'IS TRUE'
| 'CAST'
| 'SIGN FUNCTION'
| 'CURSOR HAS ROW'
| 'UPDATE' 'FROM'
`

referenced by:

- enforce_normal_stmt
- enforce_strict_stmt

enforce_strict_stmt:

`
enforce_strict_stmt
::= '@ENFORCE_STRICT' enforcement_options
`

referenced by:

- any_stmt

enforce_normal_stmt:

`
enforce_normal_stmt
::= '@ENFORCE_NORMAL' enforcement_options
`

referenced by:

- any_stmt

opt_use_offset:

`
opt_use_offset
::= 'OFFSET'?
`

referenced by:

- blob_create_key_stmt
- blob_create_val_stmt
- blob_get_key_stmt
- blob_get_val_stmt
- blob_update_key_stmt
- blob_update_val_stmt

blob_get_key_type_stmt:

`
blob_get_key_type_stmt
::= '@BLOB_GET_KEY_TYPE' name
`

referenced by:

- any_stmt

blob_get_val_type_stmt:

`
blob_get_val_type_stmt
::= '@BLOB_GET_VAL_TYPE' name
`

referenced by:

- any_stmt

blob_get_key_stmt:

`
blob_get_key_stmt
::= '@BLOB_GET_KEY' name opt_use_offset
`

referenced by:

- any_stmt

blob_get_val_stmt:

`
blob_get_val_stmt
::= '@BLOB_GET_VAL' name opt_use_offset
`

referenced by:

- any_stmt

blob_create_key_stmt:

`
blob_create_key_stmt
::= '@BLOB_CREATE_KEY' name opt_use_offset
`

referenced by:

- any_stmt

blob_create_val_stmt:

`
blob_create_val_stmt
::= '@BLOB_CREATE_VAL' name opt_use_offset
`

referenced by:

- any_stmt

blob_update_key_stmt:

`
blob_update_key_stmt
::= '@BLOB_UPDATE_KEY' name opt_use_offset
`

referenced by:

- any_stmt

blob_update_val_stmt:

`
blob_update_val_stmt
::= '@BLOB_UPDATE_VAL' name opt_use_offset
`

referenced by:

- any_stmt

| ... generated by RR - Railroad Diagram Generator |