Grammar Diagrams
abort
abort ::= ABORT [ TRANSACTION | WORK ]
alter_database
alter_database ::= ALTER DATABASE name
[ [ WITH ] alter_database_option [ ... ]
| RENAME TO name
| OWNER TO { new_owner
| CURRENT_USER
| SESSION_USER }
| SET configuration_parameter { TO | = }
{ value | DEFAULT }
| SET configuration_parameter FROM CURRENT
| RESET configuration_parameter
| RESET ALL ]
alter_database_option
alter_database_option ::= ALLOW_CONNECTIONS allowconn
| CONNECTION LIMIT connlimit
| IS_TEMPLATE istemplate
alter_default_priv
alter_default_priv ::= ALTER DEFAULT PRIVILEGES
[ FOR { ROLE | USER } role_name [ , ... ] ]
[ IN SCHEMA schema_name [ , ... ] ]
abbr_grant_or_revoke
abbr_grant_or_revoke
abbr_grant_or_revoke ::= a_grant_table
| a_grant_seq
| a_grant_func
| a_grant_type
| a_grant_schema
| a_revoke_table
| a_revoke_seq
| a_revoke_func
| a_revoke_type
| a_revoke_schema
a_grant_table
a_grant_table ::= GRANT { grant_table_priv [ , ... ]
| ALL [ PRIVILEGES ] } ON TABLES TO
grant_role_spec [ , ... ] [ WITH GRANT OPTION ]
grant_table_priv
grant_table_priv ::= SELECT
| INSERT
| UPDATE
| DELETE
| TRUNCATE
| REFERENCES
| TRIGGER
a_grant_seq
a_grant_seq ::= GRANT { grant_seq_priv [ , ... ]
| ALL [ PRIVILEGES ] } ON SEQUENCES TO
grant_role_spec [ , ... ] [ WITH GRANT OPTION ]
grant_seq_priv
grant_seq_priv ::= USAGE | SELECT | UPDATE
a_grant_func
a_grant_func ::= GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON
{ FUNCTIONS | ROUTINES } TO grant_role_spec [ , ... ]
[ WITH GRANT OPTION ]
a_grant_type
a_grant_type ::= GRANT { USAGE | ALL [ PRIVILEGES ] } ON TYPES TO
grant_role_spec [ , ... ] [ WITH GRANT OPTION ]
a_grant_schema
a_grant_schema ::= GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] } ON
SCHEMAS TO grant_role_spec [ , ... ]
[ WITH GRANT OPTION ]
a_revoke_table
a_revoke_table ::= REVOKE [ GRANT OPTION FOR ]
{ grant_table_priv [ , ... ] | ALL [ PRIVILEGES ] }
ON TABLES FROM grant_role_spec [ , ... ]
[ CASCADE | RESTRICT ]
a_revoke_seq
a_revoke_seq ::= REVOKE [ GRANT OPTION FOR ]
{ grant_seq_priv [ , ... ] | ALL [ PRIVILEGES ] } ON
SEQUENCES FROM grant_role_spec [ , ... ]
[ CASCADE | RESTRICT ]
a_revoke_func
a_revoke_func ::= REVOKE [ GRANT OPTION FOR ]
{ EXECUTE | ALL [ PRIVILEGES ] } ON
{ FUNCTIONS | ROUTINES } FROM grant_role_spec
[ , ... ] [ CASCADE | RESTRICT ]
a_revoke_type
a_revoke_type ::= REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] } ON TYPES FROM
grant_role_spec [ , ... ] [ CASCADE | RESTRICT ]
a_revoke_schema
a_revoke_schema ::= REVOKE [ GRANT OPTION FOR ]
{ USAGE | CREATE | ALL [ PRIVILEGES ] } ON SCHEMAS
FROM grant_role_spec [ , ... ]
[ CASCADE | RESTRICT ]
alter_domain_default
alter_domain_default ::= ALTER DOMAIN name
{ SET DEFAULT expression | DROP DEFAULT }
alter_domain_rename
alter_domain_rename ::= ALTER DOMAIN name RENAME TO name
alter_foreign_data_wrapper
alter_foreign_data_wrapper ::= ALTER FOREIGN DATA WRAPPER fdw_name
[ HANDLER handler_name | NO HANDLER ]
[ VALIDATOR validator_name
| NO VALIDATOR ]
[ OPTIONS ( alter_fdw_options ) ]
[ OWNER TO new_owner ]
[ RENAME TO new_name ]
alter_foreign_table
alter_foreign_table ::= ALTER FOREIGN TABLE [ IF EXISTS ] table_name
alter_foreign_table_action [ , ... ]
alter_foreign_table_action
alter_foreign_table_action ::= ADD [ COLUMN ] column_name data_type
[ COLLATE collation ]
[ alter_column_constraint [ ... ] ]
| RENAME TO table_name
| DROP [ COLUMN ] column_name
[ RESTRICT | CASCADE ]
| OWNER TO new_owner
| OPTIONS ( alter_fdw_options )
alter_group
alter_group ::= ALTER GROUP role_specification { ADD | DROP } USER
role_name [ , ... ]
alter_group_rename
alter_group_rename ::= ALTER GROUP role_name RENAME TO new_role_name
alter_policy
alter_policy ::= ALTER POLICY name ON table_name
[ TO { role_name
| PUBLIC
| CURRENT_USER
| SESSION_USER } [ , ... ] ]
[ USING ( using_expression ) ]
[ WITH CHECK ( check_expression ) ]
alter_policy_rename
alter_policy_rename ::= ALTER POLICY name ON table_name RENAME TO
new_name
alter_role
alter_role ::= ALTER ROLE role_specification
[ [ WITH ] alter_role_option [ , ... ] ]
alter_role_option
alter_role_option ::= SUPERUSER
| NOSUPERUSER
| CREATEDB
| NOCREATEDB
| CREATEROLE
| NOCREATEROLE
| INHERIT
| NOINHERIT
| LOGIN
| NOLOGIN
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD ' password '
| PASSWORD NULL
| VALID UNTIL ' timestamp '
role_specification
role_specification ::= role_name | CURRENT_USER | SESSION_USER
alter_role_rename
alter_role_rename ::= ALTER ROLE role_name RENAME TO new_role_name
new_role_name
alter_role_config
alter_role_config ::= ALTER ROLE { role_specification | ALL }
[ IN DATABASE database_name ] config_setting
config_setting
config_setting ::= SET config_param { TO | = }
{ config_value | DEFAULT }
| SET config_param FROM CURRENT
| RESET config_param
| RESET ALL
config_param
config_param ::= '<Text Literal>'
config_value
config_value ::= '<Text Literal>'
alter_sequence
alter_sequence ::= ALTER SEQUENCE [ IF EXISTS ] sequence_name
alter_sequence_options
alter_sequence_options
alter_sequence_options ::= [ AS seq_data_type ]
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ]
[ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ]
[ RESTART [ [ WITH ] restart ] ]
[ CACHE cache ]
[ OWNED BY table_name.table_column | NONE ]
seq_data_type
seq_data_type ::= 'smallint' | 'integer' | 'bigint'
restart
restart ::= '<Integer Literal>'
alter_server
alter_server ::= ALTER SERVER server_name [ VERSION server_version ]
[ OPTIONS ( alter_fdw_options ) ]
[ OWNER TO new_owner ]
alter_table
alter_table ::= ALTER TABLE table_expr alter_table_action [ , ... ]
alter_table_action
alter_table_action ::= ADD [ COLUMN ] column_name data_type
[ alter_column_constraint [ ... ] ]
| RENAME TO table_name
| DROP [ COLUMN ] column_name
[ RESTRICT | CASCADE ]
| ADD alter_table_constraint
| DROP CONSTRAINT constraint_name
[ RESTRICT | CASCADE ]
| RENAME [ COLUMN ] column_name TO column_name
| DISABLE ROW LEVEL SECURITY
| ENABLE ROW LEVEL SECURITY
| FORCE ROW LEVEL SECURITY
| NO FORCE ROW LEVEL SECURITY
alter_table_constraint
alter_table_constraint ::= [ CONSTRAINT constraint_name ]
{ CHECK ( expression )
| UNIQUE ( column_names )
index_parameters
| FOREIGN KEY ( column_names )
references_clause }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED
| INITIALLY IMMEDIATE ]
alter_column_constraint
alter_column_constraint ::= [ CONSTRAINT constraint_name ]
{ NOT NULL
| NULL
| CHECK ( expression )
| DEFAULT expression
| UNIQUE index_parameters
| references_clause }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED
| INITIALLY IMMEDIATE ]
alter_user
alter_user ::= ALTER USER role_specification
[ [ WITH ] alter_role_option [ , ... ] ]
alter_user_rename
alter_user_rename ::= ALTER USER role_name RENAME TO new_role_name
alter_user_config
alter_user_config ::= ALTER USER { role_specification | ALL }
[ IN DATABASE database_name ] config_setting
analyze
analyze ::= ANALYZE [ VERBOSE ] [ table_and_columns [ , ... ] ]
table_and_columns
table_and_columns ::= table_name [ ( column_name [ , ... ] ) ]
begin
begin ::= BEGIN [ TRANSACTION | WORK ] [ transaction_mode [ ... ] ]
call_procedure
call_procedure ::= CALL qualified_name (
[ procedure_argument [ , ... ] ] )
procedure_argument
procedure_argument ::= [ argument_name => ] expression
argument_name
argument_name ::= '<Text Literal>'
comment_on ::= COMMENT ON
{ ACCESS METHOD access_method_name
| AGGREGATE aggregate_name ( aggregate_signature )
| CAST ( source_type AS target_type )
| COLLATION object_name
| COLUMN relation_name . column_name
| CONSTRAINT constraint_name ON table_name
| CONSTRAINT constraint_name ON DOMAIN domain_name
| CONVERSION object_name
| DATABASE object_name
| DOMAIN object_name
| EXTENSION object_name
| EVENT TRIGGER object_name
| FOREIGN DATA WRAPPER object_name
| FOREIGN TABLE object_name
| FUNCTION function_name [ ( function_signature ) ]
| INDEX object_name
| LARGE OBJECT large_object_oid
| MATERIALIZED VIEW object_name
| OPERATOR operator_name ( operator_signature )
| OPERATOR CLASS object_name USING index_method
| OPERATOR FAMILY object_name USING index_method
| POLICY policy_name ON table_name
| [ PROCEDURAL ] LANGUAGE object_name
| PROCEDURE procedure_name
[ ( [ [ argmode ] [ argname ] argtype [ , ... ] ] ) ]
| PUBLICATION object_name
| ROLE object_name
| ROUTINE routine_name
[ ( [ [ argmode ] [ argname ] argtype [ , ... ] ] ) ]
| RULE rule_name ON table_name
| SCHEMA object_name
| SEQUENCE object_name
| SERVER object_name
| STATISTICS object_name
| SUBSCRIPTION object_name
| TABLE object_name
| TABLESPACE object_name
| TEXT SEARCH CONFIGURATION object_name
| TEXT SEARCH DICTIONARY object_name
| TEXT SEARCH PARSER object_name
| TEXT SEARCH TEMPLATE object_name
| TRANSFORM FOR type_name LANGUAGE lang_name
| TRIGGER trigger_name ON table_name
| TYPE object_name
| VIEW object_name } IS { '<Text Literal>' | NULL }
commit
commit ::= COMMIT [ TRANSACTION | WORK ]
copy_from
copy_from ::= COPY table_name [ ( column_name [ , ... ] ) ] FROM
{ 'filename' | PROGRAM 'command' | STDIN }
[ [ WITH ] ( option [ , ... ] ) ]
copy_to
copy_to ::= COPY { table_name [ ( column_names ) ] | ( query ) } TO
{ 'filename' | PROGRAM 'command' | STDOUT }
[ [ WITH ] ( option [ , ... ] ) ]
copy_option
copy_option ::= FORMAT format_name
| OIDS [ boolean ]
| FREEZE [ boolean ]
| DELIMITER 'delimiter_character'
| NULL 'null_string'
| HEADER [ boolean ]
| QUOTE 'quote_character'
| ESCAPE 'escape_character'
| FORCE_QUOTE { ( column_names ) | * }
| FORCE_NOT_NULL ( column_names )
| FORCE_NULL ( column_names )
| ENCODING 'encoding_name'
| ROWS_PER_TRANSACTION integer
create_aggregate
create_aggregate ::= create_aggregate_normal
| create_aggregate_order_by
| create_aggregate_old
create_aggregate_normal
create_aggregate_normal ::= CREATE AGGREGATE aggregate_name (
{ aggregate_arg [ , ... ] | * } ) ( SFUNC
= sfunc , STYPE = state_data_type
[ , aggregate_normal_option [ ... ] ] )
create_aggregate_order_by
create_aggregate_order_by ::= CREATE AGGREGATE aggregate_name (
[ aggregate_arg [ , ... ] ] ORDER BY
aggregate_arg [ , ... ] ) ( SFUNC =
sfunc , STYPE = state_data_type
[ , aggregate_order_by_option [ ... ] ]
)
create_aggregate_old
create_aggregate_old ::= CREATE AGGREGATE aggregate_name ( BASETYPE =
base_type , SFUNC = sfunc , STYPE =
state_data_type
[ , aggregate_old_option [ ... ] ] )
aggregate_arg
aggregate_arg ::= [ aggregate_argmode ] [ argname ] argtype
aggregate_normal_option
aggregate_normal_option ::= SSPACE = state_data_size
| FINALFUNC = ffunc
| FINALFUNC_EXTRA
| FINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| COMBINEFUNC = combinefunc
| SERIALFUNC = serialfunc
| DESERIALFUNC = deserialfunc
| INITCOND = initial_condition
| MSFUNC = msfunc
| MINVFUNC = minvfunc
| MSTYPE = mstate_data_type
| MSSPACE = mstate_data_size
| MFINALFUNC = mffunc
| MFINALFUNC_EXTRA
| MFINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| MINITCOND = minitial_condition
| SORTOP = sort_operator
| PARALLEL =
{ SAFE | RESTRICTED | UNSAFE }
aggregate_order_by_option
aggregate_order_by_option ::= SSPACE = state_data_size
| FINALFUNC = ffunc
| FINALFUNC_EXTRA
| FINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| INITCOND = initial_condition
| PARALLEL =
{ SAFE | RESTRICTED | UNSAFE }
| HYPOTHETICAL
aggregate_old_option
aggregate_old_option ::= SSPACE = state_data_size
| FINALFUNC = ffunc
| FINALFUNC_EXTRA
| FINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| COMBINEFUNC = combinefunc
| SERIALFUNC = serialfunc
| DESERIALFUNC = deserialfunc
| INITCOND = initial_condition
| MSFUNC = msfunc
| MINVFUNC = minvfunc
| MSTYPE = mstate_data_type
| MSSPACE = mstate_data_size
| MFINALFUNC = mffunc
| MFINALFUNC_EXTRA
| MFINALFUNC_MODIFY =
{ READ_ONLY | SHAREABLE | READ_WRITE }
| MINITCOND = minitial_condition
| SORTOP = sort_operator
create_cast
create_cast ::= create_cast_with_function
| create_cast_without_function
| create_cast_with_inout
create_cast_with_function
create_cast_with_function ::= CREATE CAST ( cast_signature ) WITH
FUNCTION function_name
[ ( function_signature ) ]
[ AS ASSIGNMENT | AS IMPLICIT ]
create_cast_without_function
create_cast_without_function ::= CREATE CAST ( cast_signature )
WITHOUT FUNCTION
[ AS ASSIGNMENT | AS IMPLICIT ]
create_cast_with_inout
create_cast_with_inout ::= CREATE CAST ( cast_signature ) WITH INOUT
[ AS ASSIGNMENT | AS IMPLICIT ]
cast_signature
cast_signature ::= source_type AS target_type
create_database
create_database ::= CREATE DATABASE name [ create_database_options ]
create_database_options
create_database_options ::= [ WITH ] [ OWNER [ = ] user_name ]
[ TEMPLATE [ = ] template ]
[ ENCODING [ = ] encoding ]
[ LC_COLLATE [ = ] lc_collate ]
[ LC_CTYPE [ = ] lc_ctype ]
[ ALLOW_CONNECTIONS [ = ] allowconn ]
[ CONNECTION_LIMIT [ = ] connlimit ]
[ IS_TEMPLATE [ = ] istemplate ]
[ COLOCATED [ = ] { 'true' | 'false' } ]
create_domain
create_domain ::= CREATE DOMAIN name [ AS ] data_type
[ DEFAULT expression ]
[ [ domain_constraint [ ... ] ] ]
domain_constraint
domain_constraint ::= [ CONSTRAINT constraint_name ]
{ NOT NULL | NULL | CHECK ( expression ) }
create_extension
create_extension ::= CREATE EXTENSION [ IF NOT EXISTS ] extension_name
[ WITH ] [ SCHEMA schema_name ]
[ VERSION version ] [ CASCADE ]
create_function
create_function ::= CREATE [ OR REPLACE ] FUNCTION function_name (
[ arg_decl [ , ... ] ] )
[ RETURNS data_type
| RETURNS TABLE ( { column_name data_type }
[ , ... ] ) ] function_attribute [ ... ]
arg_decl
arg_decl ::= [ argmode ] [ argname ] argtype
[ { DEFAULT | = } expression ]
function_attribute
function_attribute ::= WINDOW
| IMMUTABLE
| STABLE
| VOLATILE
| [ NOT ] LEAKPROOF
| CALLED ON NULL INPUT
| RETURNS NULL ON NULL INPUT
| STRICT
| PARALLEL { UNSAFE | RESTRICTED | SAFE }
| COST int_literal
| ROWS int_literal
| TRANSFORM { FOR TYPE type_name } [ , ... ]
| SET configuration_parameter
{ TO value | = value | FROM CURRENT }
| [ EXTERNAL ] SECURITY security_kind
| LANGUAGE lang_name
| AS implementation_definition
security_kind
security_kind ::= INVOKER | DEFINER
lang_name
lang_name ::= SQL | PLPGSQL | C
implementation_definition
implementation_definition ::= ' sql_stmt_list '
| ' plpgsql_block_stmt '
| ' obj_file ' [ , ' link_symbol ' ]
sql_stmt_list
sql_stmt_list ::= sql_stmt ; [ sql_stmt ... ]
create_foreign_data_wrapper
create_foreign_data_wrapper ::= CREATE FOREIGN DATA WRAPPER fdw_name
[ HANDLER handler_name | NO HANDLER ]
[ VALIDATOR validator_name
| NO VALIDATOR ]
[ OPTIONS ( fdw_options ) ]
create_foreign_table
create_foreign_table ::= CREATE FOREIGN TABLE [ IF NOT EXISTS ]
table_name ( [ foreign_table_elem [ , ... ] ]
) SERVER server_name
[ OPTIONS ( fdw_options ) ]
foreign_table_elem
foreign_table_elem ::= column_name data_type
[ OPTIONS ( fdw_options ) ]
[ COLLATE collation ]
[ column_constraint [ ... ] ]
| table_constraint
create_group
create_group ::= CREATE GROUP role_name
[ [ WITH ] role_option [ , ... ] ]
create_index
create_index ::= CREATE [ UNIQUE ] INDEX [ NONCONCURRENTLY ]
[ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name
[ USING access_method_name ] ( index_elem [ , ... ] )
[ INCLUDE ( column_name [ , ... ] ) ]
[ TABLESPACE tablespace_name ]
[ WHERE boolean_expression ]
index_elem
index_elem ::= { column_name | ( expression ) }
[ operator_class_name ] [ HASH | ASC | DESC ]
[ NULLS { FIRST | LAST } ]
create_matview
create_matview ::= CREATE MATERIALIZED VIEW [ IF NOT EXISTS ]
matview_name [ ( column_name [ , ... ] ) ]
[ WITH ( storage_parameters ) ]
[ TABLESPACE tablespace ] AS query
[ WITH [ NO ] DATA ]
create_operator
create_operator ::= CREATE OPERATOR operator_name (
{ FUNCTION = function_name
| PROCEDURE = procedure_name }
[ , operator_option [ ... ] ] )
operator_option
operator_option ::= LEFTARG = left_type
| RIGHTARG = right_type
| COMMUTATOR = com_op
| NEGATOR = neg_op
| RESTRICT = res_proc
| JOIN = join_proc
| HASHES
| MERGES
create_operator_class
create_operator_class ::= CREATE OPERATOR CLASS operator_class_name
[ DEFAULT ] FOR TYPE data_type USING
index_method AS operator_class_as [ , ... ]
operator_class_as
operator_class_as ::= OPERATOR strategy_number operator_name
[ ( operator_signature ) ] [ FOR SEARCH ]
| FUNCTION support_number
[ ( op_type [ , ... ] ) ] function_name (
function_signature )
| STORAGE storage_type
create_policy
create_policy ::= CREATE POLICY name ON table_name
[ AS { PERMISSIVE | RESTRICTIVE } ]
[ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
[ TO { role_name
| PUBLIC
| CURRENT_USER
| SESSION_USER } [ , ... ] ]
[ USING ( using_expression ) ]
[ WITH CHECK ( check_expression ) ]
create_procedure
create_procedure ::= CREATE [ OR REPLACE ] PROCEDURE name (
[ arg_decl [ , ... ] ] ) procedure_attribute
[ ... ]
procedure_attribute
procedure_attribute ::= TRANSFORM { FOR TYPE type_name } [ , ... ]
| SET configuration_parameter
{ TO value | = value | FROM CURRENT }
| [ EXTERNAL ] SECURITY security_kind
| LANGUAGE lang_name
| AS implementation_definition
create_rule
create_rule ::= CREATE [ OR REPLACE ] RULE rule_name AS ON rule_event
TO table_name [ WHERE boolean_expression ] DO
[ ALSO | INSTEAD ] { NOTHING
| command
| ( command [ ; ... ] ) }
rule_event
rule_event ::= SELECT | INSERT | UPDATE | DELETE
command
command ::= SELECT | INSERT | UPDATE | DELETE | NOTIFY
create_role
create_role ::= CREATE ROLE role_name
[ [ WITH ] role_option [ , ... ] ]
role_option
role_option ::= SUPERUSER
| NOSUPERUSER
| CREATEDB
| NOCREATEDB
| CREATEROLE
| NOCREATEROLE
| INHERIT
| NOINHERIT
| LOGIN
| NOLOGIN
| CONNECTION LIMIT connlimit
| [ ENCRYPTED ] PASSWORD ' password '
| PASSWORD NULL
| VALID UNTIL ' timestamp '
| IN ROLE role_name [ , ... ]
| IN GROUP role_name [ , ... ]
| ROLE role_name [ , ... ]
| ADMIN role_name [ , ... ]
| USER role_name [ , ... ]
| SYSID uid
role_name
password
password ::= '<Text Literal>'
timestamp
timestamp ::= '<DateTime Literal>'
connlimit
connlimit ::= '<Integer Literal>'
uid
create_schema_name
create_schema_name ::= CREATE SCHEMA [ IF NOT EXISTS ] schema_name
[ AUTHORIZATION role_specification ]
[ schema_element [ ... ] ]
create_schema_role
create_schema_role ::= CREATE SCHEMA [ IF NOT EXISTS ] AUTHORIZATION
role_specification [ schema_element [ ... ] ]
schema_element
schema_element ::= '<YSQL DDL statement>'
create_sequence
create_sequence ::= CREATE SEQUENCE [ IF NOT EXISTS ] sequence_name
sequence_options
sequence_name
sequence_name ::= qualified_name
sequence_options
sequence_options ::= [ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ]
[ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ] [ CACHE cache ]
[ [ NO ] CYCLE ]
increment
increment ::= '<Integer Literal>'
minvalue
minvalue ::= '<Integer Literal>'
maxvalue
maxvalue ::= '<Integer Literal>'
start
start ::= '<Integer Literal>'
cache
cache ::= '<Integer Literal>'
create_server
create_server ::= CREATE SERVER [ IF NOT EXISTS ] server_name
[ TYPE server_type ] [ VERSION server_version ]
FOREIGN DATA WRAPPER fdw_name
[ OPTIONS ( fdw_options ) ]
create_table
create_table ::= CREATE [ TEMPORARY | TEMP ] TABLE [ IF NOT EXISTS ]
table_name ( [ table_elem [ , ... ] ] )
[ WITH ( { COLOCATED = { 'true' | 'false' }
| storage_parameters } )
| WITHOUT OIDS ] [ TABLESPACE tablespace_name ]
[ SPLIT { INTO integer TABLETS
| AT VALUES ( split_row [ , ... ] ) } ]
split_row
split_row ::= ( column_value [ , ... ] )
table_elem
table_elem ::= column_name data_type [ column_constraint [ ... ] ]
| table_constraint
column_constraint
column_constraint ::= [ CONSTRAINT constraint_name ]
{ NOT NULL
| NULL
| CHECK ( expression )
| DEFAULT expression
| UNIQUE index_parameters
| PRIMARY KEY
| references_clause }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
table_constraint
table_constraint ::= [ CONSTRAINT constraint_name ]
{ CHECK ( expression )
| UNIQUE ( column_names ) index_parameters
| PRIMARY KEY ( key_columns )
| FOREIGN KEY ( column_names )
references_clause }
[ DEFERRABLE | NOT DEFERRABLE ]
[ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
key_columns
key_columns ::= hash_columns [ , range_columns ] | range_columns
hash_columns
hash_columns ::= column_name [ HASH ] | ( column_name [ , ... ] ) HASH
range_columns
range_columns ::= { column_name { ASC | DESC } } [ , ... ]
references_clause
references_clause ::= REFERENCES table_name [ column_name [ , ... ] ]
[ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
[ ON DELETE key_action ]
[ ON UPDATE key_action ]
key_action
key_action ::= NO ACTION | RESTRICT | CASCADE | SET NULL | SET DEFAULT
storage_parameters
storage_parameters ::= storage_parameter [ , ... ]
storage_parameter
storage_parameter ::= param_name [ = param_value ]
index_parameters
index_parameters ::= [ INCLUDE ( column_names ) ]
[ WITH ( storage_parameters ) ]
[ USING INDEX TABLESPACE tablespace_name ]
create_table_as
create_table_as ::= CREATE TABLE [ IF NOT EXISTS ] table_name
[ ( column_name [ , ... ] ) ] AS query
[ WITH [ NO ] DATA ]
create_trigger
create_trigger ::= CREATE TRIGGER name { BEFORE | AFTER | INSTEAD OF }
{ event [ OR ... ] } ON table_name
[ FROM table_name ] [ NOT DEFERRABLE ]
[ FOR [ EACH ] { ROW | STATEMENT } ]
[ WHEN ( boolean_expression ) ] EXECUTE
{ FUNCTION | PROCEDURE } function_name (
function_arguments )
event
event ::= INSERT
| UPDATE [ OF column_name [ , ... ] ]
| DELETE
| TRUNCATE
create_composite_type
create_composite_type ::= CREATE TYPE type_name AS (
[ composite_type_elem [ , ... ] ] )
create_enum_type
create_enum_type ::= CREATE TYPE type_name AS ENUM (
[ label [ , ... ] ] )
create_range_type
create_range_type ::= CREATE TYPE type_name AS RANGE ( SUBTYPE =
subtype [ , range_type_option [ ... ] ] )
create_base_type
create_base_type ::= CREATE TYPE type_name ( INPUT = input_function ,
OUTPUT = output_function
[ , base_type_option [ ... ] ] )
create_shell_type
create_shell_type ::= CREATE TYPE type_name
composite_type_elem
composite_type_elem ::= attribute_name data_type [ COLLATE collation ]
range_type_option
range_type_option ::= SUBTYPE_OPCLASS = subtype_operator_class
| COLLATION = collation
| CANONICAL = canonical_function
| SUBTYPE_DIFF = subtype_diff_function
base_type_option
base_type_option ::= RECEIVE = receive_function
| SEND = send_function
| TYPMOD_IN = type_modifier_input_function
| TYPMOD_OUT = type_modifier_output_function
| INTERNALLENGTH = { internallength | VARIABLE }
| PASSEDBYVALUE
| ALIGNMENT = alignment
| STORAGE = storage
| LIKE = like_type
| CATEGORY = category
| PREFERRED = preferred
| DEFAULT = default
| ELEMENT = element
| DELIMITER = delimiter
| COLLATABLE = collatable
create_user
create_user ::= CREATE USER role_name
[ [ WITH ] role_option [ , ... ] ]
create_user_mapping
create_user_mapping ::= CREATE USER MAPPING [ IF NOT EXISTS ] FOR user
SERVER server_name [ OPTIONS ( fdw_options ) ]
user
user ::= user_name | USER | CURRENT_USER | PUBLIC
create_view
create_view ::= CREATE [ OR REPLACE ] VIEW qualified_name
[ ( name [ , ... ] ) ] AS select
deallocate
deallocate ::= DEALLOCATE [ PREPARE ] { name | ALL }
delete
delete ::= [ WITH [ RECURSIVE ] { common_table_expression [ , ... ] } ]
DELETE FROM table_expr [ [ AS ] alias ]
[ WHERE boolean_expression | WHERE CURRENT OF cursor_name ]
[ returning_clause ]
returning_clause
returning_clause ::= RETURNING { * | { output_expression
[ [ AS ] output_name ] }
[ , ... ] }
returning_expression
returning_expression ::= output_expression [ [ AS ] output_name ]
do
do ::= DO [ LANGUAGE lang_name ] code
drop_aggregate
drop_aggregate ::= DROP AGGREGATE [ IF EXISTS ]
{ aggregate_name ( aggregate_signature ) }
[ , ... ] [ CASCADE | RESTRICT ]
aggregate_signature
aggregate_signature ::= * | aggregate_arg [ , ... ]
| [ aggregate_arg [ , ... ] ] ORDER BY
aggregate_arg [ , ... ]
drop_cast
drop_cast ::= DROP CAST [ IF EXISTS ] ( cast_signature )
[ CASCADE | RESTRICT ]
drop_database
drop_database ::= DROP DATABASE [ IF EXISTS ] database_name
drop_domain
drop_domain ::= DROP DOMAIN [ IF EXISTS ] name [ , ... ]
[ CASCADE | RESTRICT ]
drop_extension
drop_extension ::= DROP EXTENSION [ IF EXISTS ] extension_name
[ , ... ] [ CASCADE | RESTRICT ]
drop_foreign_data_wrapper
drop_foreign_data_wrapper ::= DROP FOREIGN DATA WRAPPER [ IF EXISTS ]
fdw_name [ CASCADE | RESTRICT ]
drop_foreign_table
drop_foreign_table ::= DROP FOREIGN TABLE [ IF EXISTS ] table_name
[ CASCADE | RESTRICT ]
drop_function
drop_function ::= DROP { FUNCTION | PROCEDURE } [ IF EXISTS ]
{ name [ ( [ argtype_decl [ , ... ] ] ) ] }
[ , ... ] [ CASCADE | RESTRICT ]
argtype_decl
argtype_decl ::= [ argmode ] [ argname ] argtype
drop_group
drop_group ::= DROP GROUP [ IF EXISTS ] role_name [ , ... ]
drop_matview
drop_matview ::= DROP MATERIALIZED VIEW [ IF EXISTS ] matview_name
[ CASCADE | RESTRICT ]
drop_operator
drop_operator ::= DROP OPERATOR [ IF EXISTS ]
{ operator_name ( operator_signature ) } [ , ... ]
[ CASCADE | RESTRICT ]
operator_signature
operator_signature ::= { left_type | NONE } , { right_type | NONE }
drop_operator_class
drop_operator_class ::= DROP OPERATOR CLASS [ IF EXISTS ]
operator_class_name USING index_method
[ CASCADE | RESTRICT ]
drop_policy
drop_policy ::= DROP POLICY [ IF EXISTS ] name ON table_name
[ CASCADE | RESTRICT ]
drop_procedure
drop_procedure ::= DROP PROCEDURE [ IF EXISTS ]
{ name [ ( [ argtype_decl [ , ... ] ] ) ] }
[ , ... ] [ CASCADE | RESTRICT ]
drop_role
drop_role ::= DROP ROLE [ IF EXISTS ] role_name [ , ... ]
drop_rule
drop_rule ::= DROP RULE [ IF EXISTS ] rule_name ON table_name
[ CASCADE | RESTRICT ]
drop_sequence
drop_sequence ::= DROP SEQUENCE [ IF EXISTS ] sequence_name
[ CASCADE | RESTRICT ]
drop_owned
drop_owned ::= DROP OWNED BY role_specification [ , ... ]
[ CASCADE | RESTRICT ]
drop_server
drop_server ::= DROP SERVER [ IF EXISTS ] server_name
[ CASCADE | RESTRICT ]
drop_table
drop_table ::= DROP TABLE [ IF EXISTS ] table_name [ , ... ]
[ CASCADE | RESTRICT ]
drop_type
drop_type ::= DROP TYPE [ IF EXISTS ] type_name [ , ... ]
[ CASCADE | RESTRICT ]
drop_user
drop_user ::= DROP USER [ IF EXISTS ] role_name [ , ... ]
drop_trigger
drop_trigger ::= DROP TRIGGER [ IF EXISTS ] name ON table_name
[ CASCADE | RESTRICT ]
end
end ::= END [ TRANSACTION | WORK ]
execute_statement
execute_statement ::= EXECUTE name [ ( expression [ , ... ] ) ]
explain
explain ::= EXPLAIN [ [ ANALYZE ] [ VERBOSE ] | ( option [ , ... ] ) ]
sql_stmt
option
option ::= ANALYZE [ boolean ]
| VERBOSE [ boolean ]
| COSTS [ boolean ]
| BUFFERS [ boolean ]
| TIMING [ boolean ]
| SUMMARY [ boolean ]
| FORMAT { TEXT | XML | JSON | YAML }
grant_table
grant_table ::= GRANT
{ { SELECT
| INSERT
| UPDATE
| DELETE
| TRUNCATE
| REFERENCES
| TRIGGER } [ , ... ]
| ALL [ PRIVILEGES ] } ON
{ [ TABLE ] table_name [ , ... ]
| ALL TABLES IN SCHEMA schema_name [ , ... ] } TO
grant_role_spec [ , ... ] [ WITH GRANT OPTION ]
grant_table_col
grant_table_col ::= GRANT
{ { SELECT | INSERT | UPDATE | REFERENCES } (
column_names ) [ ,(column_names ... ]
| ALL [ PRIVILEGES ] ( column_names ) } ON
{ [ TABLE ] table_name [ , ... ] } TO
grant_role_spec [ , ... ] [ WITH GRANT OPTION ]
grant_seq
grant_seq ::= GRANT { { USAGE | SELECT | UPDATE } [ , ... ]
| ALL [ PRIVILEGES ] } ON
{ SEQUENCE sequence_name [ , ... ]
| ALL SEQUENCES IN SCHEMA schema_name
[ , sequence_name [ ... ] ] } TO grant_role_spec
[ , ... ] [ WITH GRANT OPTION ]
grant_db
grant_db ::= GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [ , ... ]
| ALL [ PRIVILEGES ] } ON DATABASE database_name
[ , ... ] TO grant_role_spec [ , ... ]
[ WITH GRANT OPTION ]
grant_domain
grant_domain ::= GRANT { USAGE | ALL [ PRIVILEGES ] } ON DOMAIN
domain_name [ , ... ] TO grant_role_spec [ , ... ]
[ WITH GRANT OPTION ]
grant_schema
grant_schema ::= GRANT { { CREATE | USAGE } [ , ... ]
| ALL [ PRIVILEGES ] } ON SCHEMA schema_name
[ , ... ] TO grant_role_spec [ , ... ]
[ WITH GRANT OPTION ]
grant_type
grant_type ::= GRANT { USAGE | ALL [ PRIVILEGES ] } ON TYPE type_name
[ , ... ] TO grant_role_spec [ , ... ]
[ WITH GRANT OPTION ]
grant_role
grant_role ::= GRANT role_name [ , ... ] TO role_name [ , ... ]
[ WITH ADMIN OPTION ]
grant_role_spec
grant_role_spec ::= [ GROUP ] role_name
| PUBLIC
| CURRENT_USER
| SESSION_USER
import_foreign_schema
import_foreign_schema ::= IMPORT FOREIGN SCHEMA remote_schema
[ { LIMIT TO | EXCEPT } ( table_name [ ... ]
) ] FROM SERVER server_name INTO
local_schema [ OPTIONS ( fdw_options ) ]
remote_schema
remote_schema ::= '<Text Literal>'
local_schema
local_schema ::= '<Text Literal>'
insert
insert ::= [ WITH [ RECURSIVE ] { common_table_expression [ , ... ] } ]
INSERT INTO table_name [ AS alias ] [ ( column_names ) ]
{ DEFAULT VALUES
| VALUES ( column_values ) [ ,(column_values ... ]
| subquery }
[ ON CONFLICT [ conflict_target ] conflict_action ]
[ returning_clause ]
column_values
column_values ::= { expression | DEFAULT } [ , ... ]
conflict_target
conflict_target ::= ( { column_name | expression } [ , ... ] )
[ WHERE boolean_expression ]
| ON CONSTRAINT constraint_name
conflict_action
conflict_action ::= DO NOTHING
| DO UPDATE SET update_item [ , ... ]
[ WHERE boolean_expression ]
lock_table
lock_table ::= LOCK [ TABLE ] { table_expr [ , ... ] }
[ IN lockmode MODE ] [ NOWAIT ]
lockmode
lockmode ::= ACCESS SHARE
| ROW SHARE
| ROW EXCLUSIVE
| SHARE UPDATE EXCLUSIVE
| SHARE
| SHARE ROW EXCLUSIVE
| EXCLUSIVE
| ACCESS EXCLUSIVE
prepare_statement
prepare_statement ::= PREPARE name [ ( data_type [ , ... ] ) ] AS
sql_stmt
reassign_owned
reassign_owned ::= REASSIGN OWNED BY role_specification [ , ... ] TO
role_specification
refresh_matview
refresh_matview ::= REFRESH MATERIALIZED VIEW [ CONCURRENTLY ]
matview_name [ WITH [ NO ] DATA ]
reset_stmt
reset_stmt ::= RESET { name | ALL }
reset_role
reset_role ::= RESET ROLE
reset_session_authorization
reset_session_authorization ::= RESET SESSION AUTHORIZATION
revoke_table
revoke_table ::= REVOKE [ GRANT OPTION FOR ]
{ { SELECT
| INSERT
| UPDATE
| DELETE
| TRUNCATE
| REFERENCES
| TRIGGER } [ , ... ]
| ALL [ PRIVILEGES ] } ON
{ [ TABLE ] table_name [ , ... ]
| ALL TABLES IN SCHEMA schema_name [ , ... ] } FROM
{ [ GROUP ] role_name | PUBLIC } [ , ... ]
[ CASCADE | RESTRICT ]
revoke_table_col
revoke_table_col ::= REVOKE [ GRANT OPTION FOR ]
{ { SELECT | INSERT | UPDATE | REFERENCES } (
column_names ) [ ,(column_names ... ]
| ALL [ PRIVILEGES ] ( column_names ) } ON
[ TABLE ] table_name [ , ... ] FROM
{ [ GROUP ] role_name | PUBLIC } [ , ... ]
[ CASCADE | RESTRICT ]
revoke_seq
revoke_seq ::= REVOKE [ GRANT OPTION FOR ]
{ { USAGE | SELECT | UPDATE } [ , ... ]
| ALL [ PRIVILEGES ] } ON
{ SEQUENCE sequence_name [ , ... ]
| ALL SEQUENCES IN SCHEMA schema_name [ , ... ] }
FROM { [ GROUP ] role_name | PUBLIC } [ , ... ]
[ CASCADE | RESTRICT ]
revoke_db
revoke_db ::= REVOKE [ GRANT OPTION FOR ]
{ { CREATE | CONNECT | TEMPORARY | TEMP } [ , ... ]
| ALL [ PRIVILEGES ] } ON DATABASE database_name
[ , ... ] FROM { [ GROUP ] role_name | PUBLIC }
[ , ... ] [ CASCADE | RESTRICT ]
revoke_domain
revoke_domain ::= REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] } ON DOMAIN domain_name
[ , ... ] FROM { [ GROUP ] role_name | PUBLIC }
[ , ... ] [ CASCADE | RESTRICT ]
revoke_schema
revoke_schema ::= REVOKE [ GRANT OPTION FOR ]
{ { CREATE | USAGE } [ , ... ]
| ALL [ PRIVILEGES ] } ON SCHEMA schema_name
[ , ... ] FROM { [ GROUP ] role_name | PUBLIC }
[ , ... ] [ CASCADE | RESTRICT ]
revoke_type
revoke_type ::= REVOKE [ GRANT OPTION FOR ]
{ USAGE | ALL [ PRIVILEGES ] } ON TYPE type_name
[ , ... ] FROM { [ GROUP ] role_name | PUBLIC }
[ , ... ] [ CASCADE | RESTRICT ]
revoke_role
revoke_role ::= REVOKE [ ADMIN OPTION FOR ] role_name [ , ... ] FROM
role_name [ , ... ] [ CASCADE | RESTRICT ]
rollback
rollback ::= ROLLBACK [ TRANSACTION | WORK ]
select
select ::= [ WITH [ RECURSIVE ] { common_table_expression [ , ... ] } ]
SELECT [ ALL |
DISTINCT [ ON { ( expression [ , ... ] ) } ] ]
[ * | { { expression
| fn_over_window
| ordinary_aggregate_fn_invocation
| within_group_aggregate_fn_invocation }
[ [ AS ] name ] } [ , ... ] ]
[ FROM { from_item [ , ... ] } ]
[ WHERE boolean_expression ]
[ GROUP BY { grouping_element [ , ... ] } ]
[ HAVING boolean_expression ]
[ WINDOW { { name AS window_definition } [ , ... ] } ]
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
[ ORDER BY { order_expr [ , ... ] } ]
[ LIMIT { integer | ALL } ]
[ OFFSET integer [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } integer { ROW | ROWS } ONLY ]
[ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE }
[ OF table_name [ , ... ] ] [ SKIP LOCKED ] [ ... ] ]
with_clause
with_clause ::= [ WITH [ RECURSIVE ]
{ common_table_expression [ , ... ] } ]
common_table_expression
common_table_expression ::= name [ ( name [ , ... ] ) ] AS (
{ select
| values
| insert
| update
| delete } )
select_expression
select_expression ::= expression [ [ AS ] name ]
order_expr
order_expr ::= expression [ ASC | DESC | USING operator_name ]
[ NULLS { FIRST | LAST } ]
set
set ::= SET [ SESSION | LOCAL ] { configuration_parameter { TO | = }
{ value | DEFAULT }
| TIME ZONE
{ timezone | LOCAL | DEFAULT } }
set_constraints
set_constraints ::= SET CONSTRAINTS { ALL | name [ , ... ] }
{ DEFERRED | IMMEDIATE }
set_role
set_role ::= SET [ SESSION | LOCAL ] ROLE { role_name | NONE }
set_session_authorization
set_session_authorization ::= SET [ SESSION | LOCAL ] SESSION
AUTHORIZATION { role_name | DEFAULT }
set_transaction
set_transaction ::= SET TRANSACTION transaction_mode [ ... ]
transaction_mode
transaction_mode ::= isolation_level
| read_write_mode
| deferrable_mode
isolation_level
isolation_level ::= ISOLATION LEVEL { READ UNCOMMITTED
| READ COMMITTED
| REPEATABLE READ
| SERIALIZABLE }
read_write_mode
read_write_mode ::= READ ONLY | READ WRITE
deferrable_mode
deferrable_mode ::= [ NOT ] DEFERRABLE
show_stmt
show_stmt ::= SHOW { name | ALL }
show_transaction
show_transaction ::= SHOW TRANSACTION ISOLATION LEVEL
truncate
truncate ::= TRUNCATE [ TABLE ] { table_expr [ , ... ] }
[ CASCADE | RESTRICT ]
table_expr
table_expr ::= [ ONLY ] table_name [ * ]
update
update ::= [ WITH [ RECURSIVE ] { common_table_expression [ , ... ] } ]
UPDATE table_expr [ [ AS ] alias ] SET update_item
[ , ... ] [ WHERE boolean_expression
| WHERE CURRENT OF cursor_name ]
[ returning_clause ]
update_item
update_item ::= column_name = column_value
| ( column_names ) = [ ROW ] ( column_values )
| ( column_names ) = ( query )
column_value
column_value ::= expression | DEFAULT
values
values ::= VALUES ( expression_list ) [ ,(expression_list ... ]
[ ORDER BY { order_expr [ , ... ] } ]
[ LIMIT { integer | ALL } ]
[ OFFSET integer [ ROW | ROWS ] ]
[ FETCH { FIRST | NEXT } integer { ROW | ROWS } ONLY ]
expression_list
expression_list ::= expression [ , ... ]
select_start
select_start ::= SELECT [ ALL |
DISTINCT [ ON { ( expression [ , ... ] ) } ] ]
[ * | { { expression
| fn_over_window
| ordinary_aggregate_fn_invocation
| within_group_aggregate_fn_invocation }
[ [ AS ] name ] } [ , ... ] ]
fn_over_window
fn_over_window ::= name ( [ expression [ , ... ] | * ]
[ FILTER ( WHERE boolean_expression ) ] OVER
{ window_definition | name }
ordinary_aggregate_fn_invocation
ordinary_aggregate_fn_invocation ::= name (
{ [ ALL | DISTINCT ] expression
[ , ... ]
| * }
[ ORDER BY order_expr [ , ... ] ]
) [ FILTER ( WHERE
boolean_expression ) ]
within_group_aggregate_fn_invocation
within_group_aggregate_fn_invocation ::= name (
{ expression [ , ... ] } )
WITHIN GROUP ( ORDER BY
order_expr [ , ... ] )
[ FILTER ( WHERE
boolean_expression ) ]
window_clause
window_clause ::= WINDOW { { name AS window_definition } [ , ... ] }
window_definition
window_definition ::= ( [ name ]
[ PARTITION BY order_expr [ , ... ] ]
[ ORDER BY order_expr [ , ... ] ]
[ frame_clause ] )
frame_clause
frame_clause ::= [ { RANGE | ROWS | GROUPS } frame_bounds ]
[ frame_exclusion ]
frame_bounds
frame_bounds ::= frame_start | BETWEEN frame_start AND frame_end
frame_start
frame_start ::= frame_bound
frame_end
frame_end ::= frame_bound
frame_bound
frame_bound ::= UNBOUNDED PRECEDING
| offset PRECEDING
| CURRENT ROW
| offset FOLLOWING
| UNBOUNDED FOLLOWING
frame_exclusion
frame_exclusion ::= EXCLUDE CURRENT ROW
| EXCLUDE GROUP
| EXCLUDE TIES
| EXCLUDE NO OTHERS
offset
offset ::= integer_expression
| numeric_expression
| interval_expression
group_by_clause
group_by_clause ::= GROUP BY { grouping_element [ , ... ] }
grouping_element
grouping_element ::= ( ) | ( expression [ , ... ] )
| ROLLUP ( expression [ , ... ] )
| CUBE ( expression [ , ... ] )
| GROUPING SETS ( grouping_element [ , ... ] )
having_clause
having_clause ::= HAVING boolean_expression
qualified_name
qualified_name ::= [ [ database_name . ] schema_name . ]
'<Text Literal>'
database_name
database_name ::= '<Text Literal>'
schema_name
schema_name ::= '<Text Literal>'
table_name
table_name ::= qualified_name
column_name
column_name ::= '<Text Literal>'
object_name
access_method_name
access_method_name ::= name
relation_name
relation_name ::= qualified_name
aggregate_name
aggregate_name ::= qualified_name
constraint_name
constraint_name ::= qualified_name
operator_name
operator_name ::= qualified_name
policy_name
policy_name ::= qualified_name
procedure_name
procedure_name ::= qualified_name
routine_name
routine_name ::= qualified_name
rule_name
rule_name ::= qualified_name
trigger_name
trigger_name ::= qualified_name
domain_name
domain_name ::= qualified_name
index_method
index_method ::= '<Text Literal>'
argmode
argmode ::= IN | OUT | INOUT | VARIADIC
argname
argtype
function_arguments
function_arguments ::= [ text_literal [ , ... ] ]
text_literal
text_literal ::= '<Text Literal>'
int_literal
int_literal ::= '<Integer Literal>'
integer
integer ::= '<Integer Literal>'
numeric_literal
numeric_literal ::= '<Numeric Literal>'
value
value ::= text_literal | numeric_literal | boolean
configuration_parameter
configuration_parameter ::= text_literal
large_object_oid
large_object_oid ::= '<Integer Literal>'
left_type
left_type ::= qualified_name | NONE