List Of Possible
Statements
|
| top |
: statement
| statement ';'
; |
| statement |
: alter
| blob
| commit
| create
| declare
| delete
| drop
| grant
| insert
| invoke_procedure
| revoke
| rollback
| select
| set
| update
; |
GRANT Statement
|
| grant |
: GRANT privileges ON
prot_table_name TO user_grantee_list grant_option
| GRANT proc_privileges ON PROCEDURE
simple_proc_name TO
user_grantee_list grant_option
| GRANT privileges ON prot_table_name TO grantee_list
| GRANT proc_privileges ON PROCEDURE
simple_proc_name TO grantee_list
| GRANT role_name_list TO
role_grantee_list role_admin_option
; |
| prot_table_name |
: simple_table_name
| TABLE simple_table_name
; |
| privileges |
: ALL
| ALL PRIVILEGES
| privilege_list
; |
| privilege_list |
: privilege
| privilege_list ',' privilege
; |
| proc_privileges |
: EXECUTE
; |
| privilege |
: SELECT
| INSERT
| DELETE
| UPDATE column_parens_opt
| REFERENCES column_parens_opt
; |
| grant_option |
: WITH GRANT OPTION
| /* empty */
; |
| role_admin_option |
: WITH ADMIN OPTION
| /* empty */
; |
| simple_proc_name |
: symbol_procedure_name
; |
REVOKE Statement
|
| revoke |
: REVOKE rev_grant_option
privileges ON prot_table_name FROM user_grantee_list
| REVOKE rev_grant_option
proc_privileges ON PROCEDURE
simple_proc_name FROM
user_grantee_list
| REVOKE privileges ON prot_table_name FROM user_grantee_list
| REVOKE proc_privileges ON PROCEDURE
simple_proc_name FROM
user_grantee_list
| REVOKE privileges ON prot_table_name FROM grantee_list
| REVOKE proc_privileges ON PROCEDURE
simple_proc_name FROM grantee_list
| REVOKE role_name_list FROM
role_grantee_list
; |
| rev_grant_option |
: GRANT OPTION FOR
; |
| grantee_list |
: grantee
| grantee_list ',' grantee
| grantee_list ',' user_grantee
| user_grantee_list ',' grantee
; |
| grantee |
: PROCEDURE symbol_procedure_name
| TRIGGER symbol_trigger_name
| VIEW symbol_view_name
; |
| user_grantee_list |
: user_grantee
| user_grantee_list ','
user_grantee
; |
| user_grantee |
: symbol_user_name
| USER symbol_user_name
| GROUP symbol_user_name
; |
| role_name_list |
: role_name
| role_name_list ',' role_name
; |
| role_name |
: symbol_role_name
; |
| role_grantee_list |
: role_grantee
| role_grantee_list ','
role_grantee
; |
| role_grantee |
: symbol_user_name
| USER symbol_user_name
; |
DECLARE Operations
|
| declare |
: DECLARE declare_clause
; |
| declare_clause |
: FILTER filter_decl_clause
| EXTERNAL FUNCTION udf_decl_clause
; |
| udf_decl_clause |
: symbol_UDF_name
arg_desc_list1 RETURNS return_value1 ENTRY_POINT sql_string MODULE_NAME sql_string
; |
| udf_data_type |
: simple_type
| BLOB
| CSTRING '(' pos_short_integer ')'
charset_clause
; |
| arg_desc_list1 |
: /* empty */
| arg_desc_list
| '(' arg_desc_list ')'
; |
| arg_desc_list |
: arg_desc
| arg_desc_list ',' arg_desc
; |
| arg_desc |
: init_data_type
udf_data_type
; |
| return_value1 |
: return_value
| '(' return_value ')'
; |
| return_value |
: init_data_type
udf_data_type
| init_data_type udf_data_type FREE_IT
| init_data_type udf_data_type BY VALUE
| PARAMETER pos_short_integer
; |
| filter_decl_clause |
: symbol_filter_name
INPUT_TYPE blob_subtype OUTPUT_TYPE
blob_subtype ENTRY_POINT sql_string MODULE_NAME sql_string
; |
CREATE Metadata Operations
|
| create |
: CREATE create_clause
; |
| create_clause |
: EXCEPTION symbol_exception_name sql_string
| unique_opt order_direction INDEX symbol_index_name ON simple_table_name index_definition
| PROCEDURE procedure_clause
| TABLE table_clause
| TRIGGER def_trigger_clause
| VIEW view_clause
| GENERATOR generator_clause
| DATABASE db_clause
| DOMAIN domain_clause
| SHADOW shadow_clause
| ROLE role_clause
; |
CREATE INDEX
|
| unique_opt |
: UNIQUE
| /* empty */
; |
| index_definition |
: column_list
| column_parens
; |
CREATE SHADOW
|
| shadow_clause |
: pos_short_integer
manual_auto conditional
sql_string first_file_length sec_shadow_files
; |
| manual_auto |
: MANUAL
| AUTO
| /* empty */
; |
| conditional |
: /* empty */
| CONDITIONAL
; |
| first_file_length |
: /* empty */
| LENGTH equals long_integer
page_noise
; |
| sec_shadow_files |
: /* empty */
| db_file_list
; |
| db_file_list |
: db_file
| db_file_list db_file
; |
CREATE DOMAIN
|
| domain_clause |
: column_def_name
as_opt data_type
begin_trigger domain_default_opt end_trigger domain_constraint_clause
collate_clause
; |
| as_opt |
: AS
| /* empty */
; |
| domain_default_opt |
: DEFAULT begin_trigger
default_value
| /* empty */
; |
| domain_constraint_clause |
: /* empty */
| domain_constraint_list
; |
| domain_constraint_list
|
: domain_constraint_def
| domain_constraint_list
domain_constraint_def
; |
| domain_constraint_def
|
: domain_constraint
; |
| domain_constraint |
: null_constraint
| domain_check_constraint
; |
| null_constraint |
: NOT NULL
; |
| domain_check_constraint
|
: begin_trigger CHECK '('
search_condition ')' end_trigger
; |
CREATE GENERATOR
|
| generator_clause |
: symbol_generator_name
; |
CREATE ROLE
|
| role_clause |
: symbol_role_name |
CREATE DATABASE
|
| db_clause |
: db_name db_initial_desc1 db_rem_desc1
; |
| equals |
: /* empty */
| '='
; |
| db_name |
: sql_string
; |
| db_initial_desc1 |
: /* empty */
| db_initial_desc
; |
| db_initial_desc |
: db_initial_option
| db_initial_desc db_initial_option
; |
| db_initial_option |
: PAGE_SIZE equals
pos_short_integer
| LENGTH equals long_integer
page_noise
| USER sql_string
| PASSWORD sql_string
| SET NAMES sql_string
; |
| db_rem_desc1 |
: /* empty */
| db_rem_desc
; |
| db_rem_desc |
: db_rem_option
| db_rem_desc db_rem_option
; |
| db_rem_option |
: db_file
| db_log
| db_log_option
| DEFAULT CHARACTER SET symbol_character_set_name
; |
| db_log_option |
: GROUP_COMMIT_WAIT equals
long_integer
| CHECK_POINT_LEN equals long_integer
| NUM_LOG_BUFS equals pos_short_integer
| LOG_BUF_SIZE equals unsigned_short_integer
; |
| db_log |
: db_default_log_spec
| db_rem_log_spec
; |
| db_rem_log_spec |
: LOGFILE '(' logfiles ')' OVERFLOW
logfile_desc
| LOGFILE BASENAME logfile_desc
; |
| db_default_log_spec |
: LOGFILE
; |
| db_file |
: file1 sql_string file_desc1
; |
| logfiles |
: logfile_desc
| logfiles ',' logfile_desc
; |
| logfile_desc |
: logfile_name
logfile_attrs
; |
| logfile_name |
: sql_string
; |
| logfile_attrs |
: /* empty */
| logfile_attrs logfile_attr
; |
| logfile_attr |
: SIZE equals long_integer
; |
| file1 |
: FILE
; |
| file_desc1 |
: /* empty */
| file_desc
; |
| file_desc |
: file_clause
| file_desc file_clause
; |
| file_clause |
: STARTING file_clause_noise
long_integer
| LENGTH equals long_integer
page_noise
; |
| file_clause_noise |
: /* empty */
| AT
| AT PAGE
; |
| page_noise |
: /* empty */
| PAGE
| PAGES
; |
CREATE TABLE
|
| table_clause |
: simple_table_name
external_file '(' table_elements ')'
; |
| external_file |
: EXTERNAL FILE sql_string
| EXTERNAL sql_string
| /* empty */
; |
| table_elements |
: table_element
| table_elements ',' table_element
; |
| table_element |
: column_def
| table_constraint_definition
; |
Column Definition
|
| column_def |
: column_def_name
data_type_or_domain default_opt end_trigger
column_constraint_clause
collate_clause
| column_def_name non_array_type def_computed
| column_def_name def_computed
; |
| def_computed |
: computed_by '('
begin_trigger value
end_trigger ')'
; |
| computed_by |
: COMPUTED BY
| COMPUTED
; |
| data_type_or_domain |
: data_type begin_trigger
| simple_column_name begin_string
; |
| collate_clause |
: COLLATE symbol_collation_name
| /* empty */
; |
| column_def_name |
: column_name
; |
| simple_column_def_name
|
: simple_column_name
; |
| data_type_descriptor |
: init_data_type
data_type |
| init_data_type |
: /* empty */ |
| default_opt |
: DEFAULT default_value
| /* empty */
; |
| default_value |
: constant
| USER
| null_value
| datetime_value_expression
; |
| column_constraint_clause |
: /* empty */
| column_constraint_list
; |
| column_constraint_list
|
: column_constraint_def
| column_constraint_list
column_constraint_def
; |
| column_constraint_def
|
: constraint_name_opt
column_constraint |
| column_constraint |
: NOT NULL
| REFERENCES simple_table_name
column_parens_opt
referential_trigger_action
| check_constraint
| UNIQUE
| PRIMARY KEY
; |
Table Constraints
|
| table_constraint_definition |
: constraint_name_opt
table_constraint
; |
| constraint_name_opt |
: CONSTRAINT symbol_constraint_name
; |
| table_constraint |
: unique_constraint
| primary_constraint
| referential_constraint
| check_constraint
; |
| unique_constraint |
: UNIQUE column_parens
; |
| primary_constraint |
: PRIMARY KEY column_parens
; |
| referential_constraint
|
: FOREIGN KEY column_parens
REFERENCES simple_table_name
column_parens_opt
referential_trigger_action
; |
| check_constraint |
: begin_trigger CHECK '('
search_condition ')' end_trigger
; |
| referential_trigger_action |
: /* empty */ update_rule
| delete_rule
| delete_rule update_rule
| update_rule delete_rule
| /* empty */
; |
| update_rule |
: ON UPDATE referential_action
; |
| delete_rule |
: ON DELETE referential_action
; |
| referential_action |
: CASCADE
| SET DEFAULT
| SET NULL
| NO ACTION
; |
PROCEDURE
|
| procedure_clause |
: symbol_procedure_name
input_parameters output_parameters AS begin_string var_declaration_list
full_proc_block end_trigger
; |
| alter_procedure_clause
|
: symbol_procedure_name
input_parameters output_parameters AS begin_string var_declaration_list
full_proc_block end_trigger
; |
| input_parameters |
: '(' proc_parameters ')'
| /* empty */
; |
| output_parameters |
: RETURNS input_parameters
| /* empty */
; |
| proc_parameters |
: proc_parameter
| proc_parameters ',' proc_parameter
; |
| proc_parameter |
: simple_column_def_name
non_array_type
; |
| var_declaration_list |
: var_declarations
| /* empty */
; |
| var_declarations |
: var_declaration
| var_declarations var_declaration
; |
| var_declaration |
: DECLARE VARIABLE column_def_name non_array_type ';'
; |
| proc_block |
: proc_statement
| full_proc_block
; |
| full_proc_block |
: BEGIN proc_statements END
| BEGIN proc_statements
excp_statements END
; |
| proc_statements |
: proc_block
| proc_statements proc_block
; |
| proc_statement |
: assignment ';'
| delete ';'
| EXCEPTION symbol_exception_name ';'
| exec_procedure
| for_select
| if_then_else
| insert ';'
| POST_EVENT value ';'
| singleton_select
| update ';'
| while
| SUSPEND ';'
| EXIT ';'
; |
| exec_procedure |
: EXECUTE PROCEDURE symbol_procedure_name proc_inputs proc_outputs
';'
; |
| for_select |
: FOR select INTO
variable_list cursor_def
DO proc_block
; |
| if_then_else |
: IF '(' search_condition ')'
THEN proc_block ELSE proc_block
| IF '(' search_condition ')' THEN
proc_block
; |
| singleton_select |
: select INTO variable_list ';'
; |
| variable |
: ':' symbol_variable_name
; |
| proc_inputs |
: var_const_list
| '(' var_const_list ')'
| /* empty */
; |
| proc_outputs |
: RETURNING_VALUES variable_list
| RETURNING_VALUES '(' variable_list ')'
| /* empty */
; |
| var_const_list |
: variable
| constant
| column_name
| null_value
| var_const_list ',' variable
| var_const_list ',' constant
| var_const_list ',' column_name
| var_const_list ',' null_value
; |
| variable_list |
: variable
| column_name
| variable_list ',' column_name
| variable_list ',' variable
; |
| while |
: WHILE '(' search_condition
')' DO proc_block
; |
| cursor_def |
: AS CURSOR symbol_cursor_name
| /* empty */
; |
| excp_statements |
: excp_statement
| excp_statements excp_statement
; |
| excp_statement |
: WHEN errors DO proc_block
; |
| errors |
: err
| errors ',' err
; |
| err |
: SQLCODE signed_short_integer
| GDSCODE symbol_gdscode_name
| EXCEPTION symbol_exception_name
| ANY
; |
Direct EXECUTE PROCEDURE
|
| invoke_procedure |
: EXECUTE PROCEDURE symbol_procedure_name prc_inputs
; |
| prc_inputs |
: prm_const_list
| '(' prm_const_list ')'
| /* empty */
; |
| prm_const_list |
: parameter
| constant
| null_value
| prm_const_list ',' parameter
| prm_const_list ',' constant
| prm_const_list ',' null_value
; |
CREATE VIEW
|
| view_clause |
: symbol_view_name
column_parens_opt AS begin_string select_view
check_opt end_string
; |
| select_view |
: select_view_expr
; |
| select_view_expr |
: SELECT distinct_clause
select_list from_view_clause where_clause group_clause
having_clause plan_clause
; |
| from_view_clause |
: FROM from_view_list
; |
| from_view_list |
: view_table
| from_view_list ',' view_table
; |
| view_table |
: joined_view_table
| table_name
; |
| joined_view_table |
: view_table join_type JOIN view_table ON
search_condition
| '(' joined_view_table ')'
; |
These Rules Will Capture
The Input String For Storage In Metadata
|
| begin_string |
: /* empty */
; |
| end_string |
: /* empty */
; |
| begin_trigger |
: /* empty */
; |
| end_trigger |
: /* empty */
; |
| check_opt |
: WITH CHECK OPTION
| /* empty */
; |
CREATE TRIGGER
|
| def_trigger_clause |
: symbol_trigger_name FOR
simple_table_name trigger_active trigger_type trigger_position begin_trigger trigger_action end_trigger
; |
| trigger_active |
: ACTIVE
| INACTIVE
| /* empty */
; |
| trigger_type |
: BEFORE INSERT
| AFTER INSERT
| BEFORE UPDATE
| AFTER UPDATE
| BEFORE DELETE
| AFTER DELETE
; |
| trigger_position |
: POSITION nonneg_short_integer
| /* empty */
; |
| trigger_action |
: AS begin_trigger
var_declaration_list
full_proc_block
; |
ALTER Statement
|
| alter |
: ALTER alter_clause
; |
| alter_clause |
: EXCEPTION symbol_exception_name sql_string
| TABLE simple_table_name alter_ops
| TRIGGER alter_trigger_clause
| PROCEDURE alter_procedure_clause
| DATABASE init_alter_db alter_db
| DOMAIN simple_column_name
alter_domain_ops
| INDEX alter_index_clause
; |
| alter_domain_ops |
: alter_domain_op
| alter_domain_ops alter_domain_op
; |
| alter_domain_op |
: SET begin_string
default_opt end_trigger
| ADD CONSTRAINT domain_check_constraint
| ADD domain_check_constraint
| DROP DEFAULT
| DROP CONSTRAINT
| TO simple_column_name
| TYPE init_data_type non_array_type
; |
| alter_ops |
: alter_op
| alter_ops ',' alter_op
; |
| alter_op |
: DROP simple_column_name
drop_behaviour
| DROP CONSTRAINT symbol_constraint_name
| ADD column_def
| ADD table_constraint_definition
| col_opt simple_column_name POSITION
nonneg_short_integer
| col_opt simple_column_name TO
simple_column_name
| col_opt alter_col_name
TYPE alter_data_type_or_domain
end_trigger
; |
| col_opt |
: ALTER
| ALTER COLUMN
; |
| alter_data_type_or_domain |
: non_array_type
begin_trigger
| simple_column_name begin_string |
| alter_col_name |
: simple_column_name |
| drop_behaviour |
: RESTRICT
| CASCADE
| /* empty */
; |
| alter_index_clause |
: symbol_index_name ACTIVE
| symbol_index_name INACTIVE
; |
ALTER DATABASE
|
| init_alter_db |
: /* empty */
; |
| alter_db |
: db_alter_clause
| alter_db db_alter_clause
; |
| db_alter_clause |
: ADD db_file_list
| DROP LOGFILE
| SET db_log_option_list
| ADD db_log
; |
| db_log_option_list |
: db_log_option
| db_log_option_list ','
db_log_option
; |
ALTER TRIGGER
|
| alter_trigger_clause |
: symbol_trigger_name
trigger_active new_trigger_type trigger_position begin_trigger new_trigger_action end_trigger
; |
| new_trigger_type |
: trigger_type
| /* empty */
; |
| new_trigger_action |
: trigger_action
| /* empty */
; |
DROP Metadata Operations
|
| drop |
: DROP drop_clause
; |
| drop_clause |
: EXCEPTION symbol_exception_name
| INDEX symbol_index_name
| PROCEDURE symbol_procedure_name
| TABLE symbol_table_name
| TRIGGER symbol_trigger_name
| VIEW symbol_view_name
| FILTER symbol_filter_name
| DOMAIN symbol_domain_name
| EXTERNAL FUNCTION symbol_UDF_name
| SHADOW pos_short_integer
| ROLE symbol_role_name
; |
These Are The Allowable
Datatypes
|
| data_type |
: non_array_type
| array_type
; |
| non_array_type |
: simple_type
| blob_type
; |
| array_type |
: non_charset_simple_type '['
array_spec ']'
| character_type '[' array_spec ']' charset_clause
; |
| array_spec |
: array_range
| array_spec ',' array_range
; |
| array_range |
: signed_long_integer
| signed_long_integer ':'
signed_long_integer
; |
| simple_type |
: non_charset_simple_type
| character_type charset_clause
; |
| non_charset_simple_type
|
: national_character_type
| numeric_type
| float_type
| integer_keyword
| SMALLINT
| DATE
| SQL DATE
| TIME
| TIMESTAMP
; |
| integer_keyword |
: INTEGER
| INT
; |
| blob_type |
: BLOB blob_subtype
blob_segsize charset_clause
| BLOB '(' unsigned_short_integer ')'
| BLOB '(' unsigned_short_integer ','
signed_short_integer ')'
| BLOB '(' ',' signed_short_integer ')'
; |
| blob_segsize |
: SEGMENT SIZE unsigned_short_integer
| /* empty */
; |
| blob_subtype |
: SUB_TYPE signed_short_integer
| SUB_TYPE symbol_blob_subtype_name
| /* empty */
; |
| charset_clause |
: CHARACTER SET symbol_character_set_name
| /* empty */
; |
Character Type
|
| national_character_type
|
: national_character_keyword '('
pos_short_integer ')'
| national_character_keyword
| national_character_keyword VARYING
'(' pos_short_integer ')'
; |
| character_type |
: character_keyword '('
pos_short_integer ')'
| character_keyword
| varying_keyword '('
pos_short_integer ')'
; |
| varying_keyword |
: VARCHAR
| CHARACTER VARYING
| CHAR VARYING
; |
| character_keyword |
: CHARACTER
| CHAR
; |
| national_character_keyword |
: NCHAR
| NATIONAL CHARACTER
| NATIONAL CHAR
; |
Numeric Type
|
| numeric_type |
: NUMERIC prec_scale
| decimal_keyword prec_scale
; |
| ordinal |
: pos_short_integer
; |
| prec_scale |
: /* empty */
| '(' signed_long_integer ')'
| '(' signed_long_integer ','
signed_long_integer ')'
; |
| decimal_keyword |
: DECIMAL
| DEC
; |
Floating Point Type
|
| float_type |
: FLOAT precision_opt
| LONG FLOAT precision_opt
| REAL
| DOUBLE PRECISION
; |
| precision_opt |
: '(' nonneg_short_integer ')'
| /* empty */
; |
SET Statements
|
| set |
: set_transaction
| set_generator
| set_statistics
; |
| set_generator |
: SET GENERATOR symbol_generator_name TO
signed_long_integer
| SET GENERATOR symbol_generator_name TO
NUMBER64BIT
| SET GENERATOR symbol_generator_name TO
'-' NUMBER64BIT
; |
Transaction Statements
|
| commit |
: COMMIT optional_work
optional_retain
; |
| rollback |
: ROLLBACK optional_work
; |
| optional_work |
: WORK
| /* empty */
; |
| optional_retain |
: RETAIN opt_snapshot
| /* empty */
; |
| opt_snapshot |
: SNAPSHOT
| /* empty */
; |
| set_transaction |
: SET TRANSACTION tran_opt_list_m
; |
| tran_opt_list_m |
: tran_opt_list
| /* empty */
; |
| tran_opt_list |
: tran_opt
| tran_opt_list tran_opt
; |
| tran_opt |
: access_mode
| lock_wait
| isolation_mode
| tbl_reserve_options
; |
| access_mode |
: READ ONLY
| READ WRITE
; |
| lock_wait |
: WAIT
| NO WAIT
; |
| isolation_mode |
: ISOLATION LEVEL iso_mode
| iso_mode
; |
| iso_mode |
: snap_shot
| READ UNCOMMITTED version_mode
| READ COMMITTED version_mode
; |
| snap_shot |
: SNAPSHOT
| SNAPSHOT TABLE
| SNAPSHOT TABLE STABILITY
; |
| version_mode |
: VERSION
| NO VERSION
| /* empty */
; |
| tbl_reserve_options |
: RESERVING restr_list
; |
| lock_type |
: SHARED
| PROTECTED
| /* empty */
; |
| lock_mode |
: READ
| WRITE
; |
| restr_list |
: restr_option
| restr_list ',' restr_option
; |
| restr_option |
: table_list table_lock
; |
| table_lock |
: FOR lock_type lock_mode
| /* empty */
; |
| table_list |
: simple_table_name
| table_list ',' simple_table_name
; |
| set_statistics |
: SET STATISTICS INDEX symbol_index_name |
SELECT Statement
|
| select |
: union_expr
order_clause for_update_clause
; |
| union_expr |
: select_expr
| union_expr UNION select_expr
| union_expr UNION ALL select_expr
; |
| order_clause |
: ORDER BY order_list
| /* empty */
; |
| order_list |
: order_item
| order_list ',' order_item
; |
| order_item |
: column_name
collate_clause order_direction
| ordinal collate_clause
order_direction
; |
| order_direction |
: ASC
| DESC
| /* empty */
; |
| for_update_clause |
: FOR UPDATE for_update_list
| /* empty */
; |
| for_update_list |
: OF column_list
| /* empty */
; |
SELECT Expression
|
| select_expr |
: SELECT distinct_clause
select_list from_clause
where_clause group_clause having_clause plan_clause
; |
| distinct_clause |
: DISTINCT
| all_noise
; |
| select_list |
: select_items
| '*'
; |
| select_items |
: select_item
| select_items ',' select_item
; |
| select_item |
: rhs
| rhs symbol_item_alias_name
| rhs AS symbol_item_alias_name
; |
FROM Clause
|
| from_clause |
: FROM from_list
; |
| from_list |
: table_reference
| from_list ',' table_reference
; |
| table_reference |
: joined_table
| table_proc
; |
| joined_table |
: table_reference
join_type JOIN table_reference ON search_condition
| '(' joined_table ')'
; |
| table_proc |
: symbol_procedure_name
proc_table_inputs
symbol_table_alias_name
| symbol_procedure_name
proc_table_inputs
; |
| proc_table_inputs |
: '(' null_or_value_list
')'
| /* empty */
; |
| null_or_value_list |
: null_or_value
| null_or_value_list ','
null_or_value
; |
| null_or_value |
: null_value
| value
; |
| table_name |
: simple_table_name
| symbol_table_name
symbol_table_alias_name
; |
| simple_table_name |
: symbol_table_name
; |
| join_type |
: INNER
| LEFT
| LEFT OUTER
| RIGHT
| RIGHT OUTER
| FULL
| FULL OUTER
| /* empty */
; |
Other Clauses In The
Select Expression
|
| group_clause |
: GROUP BY grp_column_list
| /* empty */
; |
| grp_column_list |
: grp_column_elem
| grp_column_list ',' grp_column_elem
; |
| grp_column_elem |
: column_name
| column_name COLLATE
symbol_collation_name
; |
| having_clause |
: HAVING search_condition
| /* empty */
; |
| where_clause |
: WHERE search_condition
| /* empty */
; |
PLAN Clause To Specify An
Access Plan For A Query
|
| plan_clause |
: PLAN plan_expression
| /* empty */
; |
| plan_expression |
: plan_type '('
plan_item_list ')'
; |
| plan_type |
: JOIN
| SORT MERGE
| MERGE
| SORT
| /* empty */
; |
| plan_item_list |
: plan_item
| plan_item ',' plan_item_list
; |
| plan_item |
: table_or_alias_list
access_type
| plan_expression
; |
| table_or_alias_list |
: symbol_table_name
| symbol_table_name
table_or_alias_list
; |
| access_type |
: NATURAL
| INDEX '(' index_list ')'
| ORDER symbol_index_name
; |
| index_list |
: symbol_index_name
| symbol_index_name ',' index_list
; |
INSERT Statement
|
| insert |
: INSERT INTO simple_table_name column_parens_opt VALUES '('
insert_value_list ')'
| INSERT INTO simple_table_name
column_parens_opt select_expr
; |
| insert_value_list |
: rhs
| insert_value_list ',' rhs
; |
DELETE Statement
|
| delete |
: delete_searched
| delete_positioned
; |
| delete_searched |
: DELETE FROM table_name
where_clause
; |
| delete_positioned |
: DELETE FROM table_name
cursor_clause
; |
| cursor_clause |
: WHERE CURRENT OF symbol_cursor_name
; |
UPDATE Statement
|
| update |
: update_searched
| update_positioned
; |
| update_searched |
: UPDATE table_name SET
assignments where_clause
; |
| update_positioned |
: UPDATE table_name SET
assignments cursor_clause
; |
| assignments |
: assignment
| assignments ',' assignment
; |
| assignment |
: column_name '=' rhs
; |
| rhs |
: value
| null_value
; |
BLOB Get And Put
|
| blob |
: READ BLOB simple_column_name FROM
simple_table_name filter_clause segment_clause
| INSERT BLOB simple_column_name INTO
simple_table_name filter_clause segment_clause
; |
| filter_clause |
: FILTER FROM blob_subtype_value TO
blob_subtype_value
| FILTER TO blob_subtype_value
| /* empty */
; |
| blob_subtype_value |
: blob_subtype
| parameter
; |
| blob_subtype |
: signed_short_integer
; |
| segment_clause |
: MAX_SEGMENT segment_length
| /* empty */
; |
| segment_length |
: unsigned_short_integer
| parameter
; |
Column Specifications
|
| column_parens_opt |
: column_parens
| /* empty */
; |
| column_parens |
: '(' column_list ')'
; |
| column_list |
: column_name
| column_list ',' column_name
; |
| column_name |
: simple_column_name
| symbol_table_alias_name '.'
symbol_column_name
| symbol_table_alias_name '.' '*'
; |
| simple_column_name |
: symbol_column_name
; |
Boolean Expressions
|
| search_condition |
: predicate
| search_condition OR
search_condition
| search_condition AND
search_condition
| NOT search_condition
; |
| predicate |
: comparison_predicate
| between_predicate
| like_predicate
| in_predicate
| null_predicate
| quantified_predicate
| exists_predicate
| containing_predicate
| starting_predicate
| unique_predicate
| '(' search_condition ')'
; |
Comparisons
|
| comparison_predicate |
: value '=' value
| value '<' value
| value '>' value
| value '>=' value
| value '<=' value
| value NOT_GTR value
| value NOT_LSS value
| value NEQ value
; |
Quantified Comparisons
|
| quantified_predicate |
: value '=' ALL '('
column_select')'
| value '<' ALL '(' column_select ')'
| value '>' ALL '(' column_select ')'
| value '>=' ALL '(' column_select ')'
| value '<=' ALL '(' column_select ')'
| value NOT_GTR ALL '(' column_select ')'
| value NOT_LSS ALL '(' column_select ')'
| value NEQ ALL '(' column_select')'
| value '=' some '('
column_select ')'
| value '<' some '('
column_select ')'
| value '>' some '('
column_select ')'
| value '>=' some '('
column_select ')'
| value '<=' some '('
column_select ')'
| value NOT_GTR some '('
column_select ')'
| value NOT_LSS some '('
column_select ')'
| value NEQ some '('
column_select ')'
; |
| some |
: SOME
| ANY
; |
Other Predicates
|
| between_predicate |
: value BETWEEN value AND value
| value NOT BETWEEN value AND
value
; |
| like_predicate |
: value LIKE value
| value NOT LIKE value
| value LIKE value ESCAPE
value
| value NOT LIKE value ESCAPE
value
; |
| in_predicate |
: value IN scalar_set
| value NOT IN scalar_set
; |
| containing_predicate |
: value CONTAINING value
| value NOT CONTAINING value
; |
| starting_predicate |
: value STARTING value
| value NOT STARTING value
| value STARTING WITH value
| value NOT STARTING WITH value
; |
| exists_predicate |
: EXISTS '(' select_expr ')'
; |
| unique_predicate |
: SINGULAR '(' select_expr ')'
; |
| null_predicate |
: value IS NULL
| value IS NOT NULL
; |
Set Values
|
| scalar_set |
: '(' constant_list ')'
| '(' column_select ')'
; |
| column_select |
: SELECT distinct_clause
value from_clause
where_clause group_clause having_clause plan_clause
; |
| column_singleton |
: SELECT distinct_clause
value from_clause
where_clause group_clause having_clause plan_clause
; |
Value Types
|
| value |
: column_name
| array_element
| function
| u_constant
| parameter
| variable
| udf
| '-' value
| '+' value
| value '+' value
| value '||' value
| value COLLATE symbol_collation_name
| value '-' value
| value '*' value
| value '/' value
| '(' value ')'
| '(' column_singleton ')'
| USER
| DB_KEY
| symbol_table_alias_name '.' DB_KEY
| VALUE
| datetime_value_expression
; |
| datetime_value_expression |
: CURRENT_DATE
| CURRENT_TIME
| CURRENT_TIMESTAMP
; |
| array_element |
: column_name '['
value_list ']'
; |
| value_list |
: value
| value_list ',' value
; |
| constant |
: u_constant
| '-' u_numeric_constant
; |
| u_numeric_constant |
: NUMERIC
| NUMBER
| FLOAT
| NUMBER64BIT
| SCALEDINT
; |
| u_constant |
: u_numeric_constant
| sql_string
| DATE STRING
| TIME STRING
| TIMESTAMP STRING
; |
| constant_list |
: constant
| parameter
| current_user
| constant_list ',' constant
| constant_list ',' parameter
| constant_list ',' current_user
; |
| parameter |
: '?'
; |
| current_user |
: USER
; |
| sql_string |
: STRING
| INTRODUCER STRING
; |
| signed_short_integer |
: nonneg_short_integer
| '-' neg_short_integer
; |
| nonneg_short_integer |
: NUMBER
; |
| neg_short_integer |
: NUMBER
; |
| pos_short_integer |
: nonneg_short_integer
; |
| unsigned_short_integer
|
: NUMBER
; |
| signed_long_integer |
: long_integer
| '-' long_integer
; |
| long_integer |
: NUMBER
; |
| function |
: COUNT '(' '*' ')'
| COUNT '(' all_noise value ')'
| COUNT '(' DISTINCT value ')'
| SUM '(' all_noise value ')'
| SUM '(' DISTINCT value ')'
| AVG '(' all_noise value ')'
| AVG '(' DISTINCT value ')'
| MINIMUM '(' all_noise value ')'
| MINIMUM '(' DISTINCT value ')'
| MAXIMUM '(' all_noise value ')'
| MAXIMUM '(' DISTINCT value ')'
| CAST '(' rhs AS data_type_descriptor ')'
| UPPER '(' value ')'
| GEN_ID '(' symbol_generator_name ','
value ')'
| EXTRACT '(' timestamp_part FROM
value ')'
; |
| udf |
: symbol_UDF_name '('
value_list ')'
| symbol_UDF_name '(' ')'
; |
| timestamp_part |
: YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| WEEKDAY
| YEARDAY
; |
| all_noise |
: ALL
| /* empty */
; |
| null_value |
: NULL
; |
Performs Special Mapping
Of Keywords Into Symbols
|
| symbol_UDF_name |
: SYMBOL
; |
| symbol_blob_subtype_name |
: SYMBOL
; |
| symbol_character_set_name |
: SYMBOL
; |
| symbol_collation_name
|
: SYMBOL
; |
| symbol_column_name |
: SYMBOL
; |
| symbol_constraint_name
|
: SYMBOL
; |
| symbol_cursor_name |
: SYMBOL
; |
| symbol_domain_name |
: SYMBOL
; |
| symbol_exception_name
|
: SYMBOL
; |
| symbol_filter_name |
: SYMBOL
; |
| symbol_gdscode_name |
: SYMBOL
; |
| symbol_generator_name
|
: SYMBOL
; |
| symbol_index_name |
: SYMBOL
; |
| symbol_item_alias_name
|
: SYMBOL
; |
| symbol_procedure_name
|
: SYMBOL
; |
| symbol_role_name |
: SYMBOL
; |
| symbol_table_alias_name
|
: SYMBOL
; |
| symbol_table_name |
: SYMBOL
; |
| symbol_trigger_name |
: SYMBOL
; |
| symbol_user_name |
: SYMBOL
; |
| symbol_variable_name |
: SYMBOL
; |
| symbol_view_name |
: SYMBOL
; |