f7d23913创建于 2023年2月27日历史提交
  <Command id="ABORT" desc="abort the current transaction">
    <MainSentence id="ABORT_SYN"><![CDATA[
ABORT [ WORK | TRANSACTION ] ;
]]></MainSentence>
  </Command>

  <Command id="ALTER APP WORKLOAD GROUP MAPPING" desc="modify app group relate with group mapping">
    <MainSentence id="SYN"><![CDATA[
ALTER APP WORKLOAD GROUP MAPPING app_name
    WITH ( WORKLOAD_GPNAME = wg_name );
]]></MainSentence>
  </Command>

  <Command id="ALTER DATABASE" desc="change a database">
    <MainSentence id="CONNECTION LIMIT"><![CDATA[
ALTER DATABASE database_name
    [ [ WITH ] CONNECTION LIMIT connlimit ];
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
ALTER DATABASE database_name
    RENAME TO new_name;
]]></MainSentence>
    <MainSentence id="OWNER TO"><![CDATA[
ALTER DATABASE database_name
    OWNER TO new_owner;
]]></MainSentence>
    <MainSentence id="SET TABLESPACE"><![CDATA[
ALTER DATABASE database_name
    SET TABLESPACE new_tablespace;
]]></MainSentence>
    <MainSentence id="SET PARAMETER"><![CDATA[
ALTER DATABASE database_name
    SET configuration_parameter { { TO | = } { value | DEFAULT }  | FROM CURRENT };
]]></MainSentence>
    <MainSentence id="RESET PARAMETER"><![CDATA[
ALTER DATABASE database_name
    RESET { configuration_parameter | ALL };
]]></MainSentence>
  </Command>

  <Command id="ALTER DEFAULT PRIVILEGES" desc="define default access privileges">
    <MainSentence id="SYN"><![CDATA[
ALTER DEFAULT PRIVILEGES
    [ FOR { ROLE | USER } target_role [, ...] ]
    [ IN SCHEMA schema_name [, ...] ]
    abbreviated_grant_or_revoke;
]]></MainSentence>
    <SubSentence id="abbreviated_grant_or_revoke"><![CDATA[
grant_on_tables_clause
  | grant_on_functions_clause
  | grant_on_types_clause
  | revoke_on_tables_clause
  | revoke_on_functions_clause
  | revoke_on_types_clause
]]></SubSentence>
    <SubSentence id="grant_on_tables_clause"><![CDATA[
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES }
    [, ...] | ALL [ PRIVILEGES ] }
    ON TABLES
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ]
]]></SubSentence>
    <SubSentence id="grant_on_functions_clause"><![CDATA[
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTIONS
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ]
]]></SubSentence>
    <SubSentence id="grant_on_types_clause"><![CDATA[
GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON TYPES
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ]
]]></SubSentence>
    <SubSentence id="revoke_on_tables_clause"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES }
    [, ...] | ALL [ PRIVILEGES ] }
    ON TABLES
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
]]></SubSentence>
    <SubSentence id="revoke_on_functions_clause"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTIONS
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
]]></SubSentence>
    <SubSentence id="revoke_on_types_clause"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON TYPES
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
]]></SubSentence>
  </Command>

  <Command id="ALTER FOREIGN TABLE" desc="change the definition of a foreign table">
    <MainSentence id="ALTER FOREIGN TABLE FOR GDS"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ]  table_name
    OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ]);
]]></MainSentence>
    <MainSentence id="HADOOP RENAME COLUMN TO"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    RENAME [ COLUMN ] column_name TO new_column_name;
]]></MainSentence>
    <MainSentence id="HADOOP RENAME TO"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    RENAME TO new_tablename;
]]></MainSentence>
    <MainSentence id="HADOOP SET SCHEMA"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    SET SCHEMA new_schema;
]]></MainSentence>
    <MainSentence id="HADOOP OWNER TO"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    OWNER TO new_owner;
]]></MainSentence>
    <MainSentence id="HADOOP OPTIONS"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ]);
]]></MainSentence>
    <MainSentence id="HADOOP ACTION"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    action [, ... ];
]]></MainSentence>
    <MainSentence id="HADOOP ADD INFORMATIONAL CONSTRAINT"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    ADD [CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE} (column_name)
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED];
]]></MainSentence>
    <MainSentence id="HADOOP DROP INFORMATIONAL CONSTRAINT"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    DROP CONSTRAINT constraint_name ;
]]></MainSentence>
    <SubSentence id="action"><![CDATA[
ADD [ COLUMN ] column_name data_type [ NULL | NOT NULL ]
|    DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
|    ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
|    ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
|    ALTER [ COLUMN ] column_name SET STATISTICS  integer
|    ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] )
|    ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
|    ALTER [ COLUMN ] column_name OPTIONS ( {[ ADD | SET | DROP ] option ['value'] } [, ... ])
]]></SubSentence>
  </Command>

<Command id="ALTER FOREIGN TABLE FOR HDFS" desc="change the definition of a foreign table">
    <MainSentence id="HDFS TABLE OWNER TO"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    OWNER TO new_owner;
]]></MainSentence>
    <MainSentence id="HDFS ALTER TABLE ALTER COLUMN"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    action [, ... ];
]]></MainSentence>
    <SubSentence id="action"><![CDATA[
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type
|    ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
|    ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer
]]></SubSentence>
    <MainSentence id="HADOOP ADD INFORMATIONAL CONSTRAINT"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    ADD [CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE} (column_name)
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED];
]]></MainSentence>
    <MainSentence id="HADOOP DROP INFORMATIONAL CONSTRAINT"><![CDATA[
ALTER FOREIGN TABLE [ IF EXISTS ] tablename
    DROP CONSTRAINT constraint_name ;
]]></MainSentence>
  </Command>

  <Command id="ALTER FUNCTION" desc="change the definition of a function">
    <MainSentence id="SYN"><![CDATA[
ALTER FUNCTION function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
    action [ ... ] [ RESTRICT ];
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
ALTER FUNCTION funname ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
    RENAME TO new_name;
]]></MainSentence>
    <MainSentence id="OWNER TO"><![CDATA[
ALTER FUNCTION funname ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
    OWNER TO new_owner;
]]></MainSentence>
    <MainSentence id="SET SCHEMA"><![CDATA[
ALTER FUNCTION funname ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
    SET SCHEMA new_schema;
]]></MainSentence>
    <SubSentence id="action"><![CDATA[
{CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT}
|    {IMMUTABLE | STABLE | VOLATILE}
|    [ NOT ] LEAKPROOF
|    {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER}
|    AUTHID { DEFINER | CURRENT_USER }
|    COST execution_cost
|    ROWS result_rows
|    SET configuration_parameter {{ TO | = } { value | DEFAULT }| FROM CURRENT}
|    RESET {configuration_parameter| ALL}
]]></SubSentence>
  </Command>

  <Command id="ALTER GROUP" desc="change role name or membership">
    <MainSentence id="ADD USER"><![CDATA[
ALTER GROUP group_name
    ADD USER user_name [, ... ];
]]></MainSentence>
    <MainSentence id="DROP USER"><![CDATA[
ALTER GROUP group_name
    DROP USER user_name [, ... ];
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
ALTER GROUP group_name
   RENAME TO new_name;
]]></MainSentence>
  </Command>

  <Command id="ALTER INDEX" desc="change the definition of an index">
    <MainSentence id="RENAME TO"><![CDATA[
ALTER INDEX [ IF EXISTS ] index_name 
    RENAME TO new_name;
]]></MainSentence>
    <MainSentence id="SET TABLESPACE"><![CDATA[
ALTER INDEX [ IF EXISTS ] index_name 
    SET TABLESPACE tablespace_name;
]]></MainSentence>
    <MainSentence id="SET PARAMETER"><![CDATA[
ALTER INDEX [ IF EXISTS ] index_name 
    SET ( {storage_parameter = value} [, ... ] );
]]></MainSentence>
    <MainSentence id="RESET PARAMETER"><![CDATA[
ALTER INDEX [ IF EXISTS ] index_name 
    RESET ( storage_parameter [, ... ] ) ;
]]></MainSentence>
    <MainSentence id="UNUSABLE_SYN"><![CDATA[
ALTER INDEX [ IF EXISTS ] index_name 
    [ MODIFY PARTITION partition_name ] UNUSABLE;
]]></MainSentence>
    <MainSentence id="REBUILD_SYN"><![CDATA[
ALTER INDEX [ IF EXISTS ] index_name 
    REBUILD [ PARTITION partition_name ];
]]></MainSentence>
    <MainSentence id="RENAME PARTITION"><![CDATA[
ALTER INDEX [ IF EXISTS ] index_name 
    RENAME PARTITION partition_name TO new_partition_name;
]]></MainSentence>
    <MainSentence id="MOVE PARTITION"><![CDATA[
ALTER INDEX [ IF EXISTS ] index_name 
    MOVE PARTITION index_partition_name TABLESPACE new_tablespace;
]]></MainSentence>
  </Command>

  <Command id="ALTER LARGE OBJECT" desc="change the definition of a large object">
    <MainSentence id="SYN"><![CDATA[
ALTER LARGE OBJECT large_object_oid
    OWNER TO new_owner;
]]></MainSentence>
  </Command>

  <Command id="ALTER NODE" desc="alter a cluster node">
    <MainSentence id="SYN"><![CDATA[
ALTER NODE nodename WITH
  (
    [ TYPE = nodetype,]
    [ HOST = hostname,]
    [ PORT = portnum,]
    [ HOST1 = 'hostname',]
    [ PORT1 = portnum,]
    [ HOSTPRIMARY [ = boolean ],]
    [ PRIMARY [ = boolean ],]
    [ PREFERRED [ = boolean ],]
    [ SCTP_PORT = portnum,]
    [ CONTROL_PORT = portnum,]
    [ SCTP_PORT1 = portnum,]
    [ CONTROL_PORT1 = portnum ]
  );
]]></MainSentence>
  </Command>

  <Command id="ALTER RESOURCE POOL" desc="change the resource pool">
    <MainSentence id="SYN"><![CDATA[
ALTER RESOURCE POOL pool_name
    WITH ({CONTROL_GROUP= { "group_name" | 'group_name' } | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size'}[, ... ]);
]]></MainSentence>
  </Command>

  <Command id="ALTER ROLE" desc="change a database role">
    <MainSentence id="SYN"><![CDATA[
ALTER ROLE role_name [ [ WITH ] option [ ... ] ];
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
ALTER ROLE role_name
    RENAME TO new_name;
]]></MainSentence>
    <MainSentence id="SET PARAMETER"><![CDATA[
ALTER ROLE role_name [ IN DATABASE database_name ]
    SET configuration_parameter {{ TO | = } { value | DEFAULT }|FROM CURRENT};
]]></MainSentence>
    <MainSentence id="RESET PARAMETER"><![CDATA[
ALTER ROLE role_name
    [ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
]]></MainSentence>
    <SubSentence id="option"><![CDATA[
{CREATEDB | NOCREATEDB}
    | {CREATEROLE | NOCREATEROLE}
    | {INHERIT | NOINHERIT}
    | {AUDITADMIN | NOAUDITADMIN}
    | {SYSADMIN | NOSYSADMIN}
    | {USEFT | NOUSEFT}
    | {LOGIN | NOLOGIN}
    | {REPLICATION | NOREPLICATION}
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY 'password' [ REPLACE 'old_password' ]
    | VALID BEGIN 'timestamp'
    | VALID UNTIL 'timestamp'
    | RESOURCE POOL 'respool'
    | ACCOUNT { LOCK | UNLOCK }
    | PGUSER
]]></SubSentence>
  </Command>

  <Command id="ALTER SCHEMA" desc="change the definition of a schema">
    <MainSentence id="RENAME TO"><![CDATA[
ALTER SCHEMA schema_name
    RENAME TO new_name;
]]></MainSentence>
    <MainSentence id="OWNER TO"><![CDATA[
ALTER SCHEMA schema_name
    OWNER TO new_owner;
]]></MainSentence>
  </Command>

  <Command id="ALTER SERVER" desc="change the definition of a foreign server">
    <MainSentence id="ALTER SERVER HADOOP"><![CDATA[
ALTER SERVER server_name [ VERSION 'new_version' ]
    [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ];
]]></MainSentence>
    <MainSentence id="OWNER TO"><![CDATA[
ALTER SERVER server_name 
    OWNER TO new_owner;
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
ALTER SERVER server_name
     RENAME TO new_name;
]]></MainSentence>
  </Command>

  <Command id="ALTER SESSION" desc="define and modify the current session influenced by condition or parameter">
    <MainSentence id="SET CONFIG"><![CDATA[
ALTER SESSION SET 
    {{config_parameter { { TO  | =  }  { value | DEFAULT }
      | FROM CURRENT }} | CURRENT_SCHEMA [ TO | = ] { schema | DEFAULT }
      | TIME ZONE time_zone
      | SCHEMA schema
      | NAMES encoding_name
      | ROLE role_name PASSWORD 'password'
      | SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT }
      | XML OPTION { DOCUMENT | CONTENT }
    } ;
]]></MainSentence>
    <MainSentence id="SET TRANSACTION"><![CDATA[
ALTER SESSION SET [ SESSION CHARACTERISTICS AS ] TRANSACTION
    { ISOLATION LEVEL  {  READ COMMITTED  | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ }  |  { READ ONLY  | READ WRITE }  } [, ...] ;
]]></MainSentence>
  </Command>

  <Command id="ALTER SYSTEM KILL SESSION" desc="kill and finish a system session">
    <MainSentence id="SYN"><![CDATA[
ALTER SYSTEM KILL SESSION 'session_sid, serial' [ IMMEDIATE ];
]]></MainSentence>
  </Command>

  <Command id="ALTER SYSTEM SET" desc="set a high-level(postmaster, sighup and backend) GUC.">
    <MainSentence id="SYN"><![CDATA[
ALTER SYSTEM SET { GUC_name } TO { GUC_value };
]]></MainSentence>
  </Command>

  <Command id="ALTER TABLE" desc="change the definition of a table">
    <MainSentence id="ALTER TABLE ACTION"><![CDATA[
ALTER TABLE [ IF EXISTS ] { table_name  [*] | ONLY table_name | ONLY ( table_name  )}
    action [, ... ];
]]></MainSentence>
    <MainSentence id="ADD COLUMN"><![CDATA[
ALTER TABLE [ IF EXISTS ] table_name
    ADD ( { column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]} [, ...] );
]]></MainSentence>
    <MainSentence id="MODIFY COLUMN"><![CDATA[
ALTER TABLE [ IF EXISTS ] table_name
    MODIFY ( { column_name data_type | column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ] | column_name [ CONSTRAINT constraint_name ] NULL } [, ...] );
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
ALTER TABLE [ IF EXISTS ] table_name
    RENAME TO new_table_name;
]]></MainSentence>
    <MainSentence id="RENAME COLUMN TO"><![CDATA[
ALTER TABLE [ IF EXISTS ] { table_name  [*] | ONLY table_name | ONLY ( table_name  )}
    RENAME [ COLUMN ] column_name TO new_column_name;
]]></MainSentence>
    <MainSentence id="RENAME CONSTRAINT TO"><![CDATA[
ALTER TABLE [ IF EXISTS ] { table_name  [*] | ONLY table_name | ONLY ( table_name  )}
    RENAME CONSTRAINT constraint_name TO new_constraint_name;
]]></MainSentence>
    <MainSentence id="SET SCHEMA"><![CDATA[
ALTER TABLE [ IF EXISTS ] table_name
    SET SCHEMA new_schema;
]]></MainSentence>
    <SubSentence id="action"><![CDATA[
    column_clause 
    | ADD table_constraint [ NOT VALID ]
    | ADD table_constraint_using_index
    | VALIDATE CONSTRAINT constraint_name
    | DROP CONSTRAINT [ IF EXISTS ]  constraint_name [ RESTRICT | CASCADE ]
    | CLUSTER ON index_name
    | SET WITHOUT CLUSTER
    | SET ( {storage_parameter = value} [, ... ] )
    | RESET ( storage_parameter [, ... ] )
    | OWNER TO new_owner
    | SET TABLESPACE new_tablespace
    | SET {COMPRESS|NOCOMPRESS}
    | SET WITH OIDS
    | SET WITHOUT OIDS
    | TO { GROUP groupname | NODE ( nodename [, ... ] ) }
    | ADD NODE ( nodename [, ... ] )
    | DELETE NODE ( nodename [, ... ] )
]]></SubSentence>
    <SubSentence id="column_clause"><![CDATA[
    ADD [ COLUMN ] column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]
    | MODIFY column_name data_type
    | MODIFY column_name [ CONSTRAINT constraint_name ] NOT NULL [ ENABLE ]
    | MODIFY column_name [ CONSTRAINT constraint_name ] NULL
    | DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
    | ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
    | ALTER [ COLUMN ] column_name { SET DEFAULT expression | DROP DEFAULT }
    | ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
    | ALTER [ COLUMN ] column_name SET STATISTICS [PERCENT] integer
    | ALTER [ COLUMN ] column_name ADD STATISTICS (( column_1_name, column_2_name [, ...] ))
    | ALTER [ COLUMN ] column_name DELETE STATISTICS (( column_1_name, column_2_name [, ...] ))
    | ALTER [ COLUMN ] column_name SET ( {attribute_option = value} [, ... ] )
    | ALTER [ COLUMN ] column_name RESET ( attribute_option [, ... ] )
    | ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
]]></SubSentence>
    <SubSentence id="column_constraint"><![CDATA[
    [ CONSTRAINT constraint_name ]
    { NOT NULL |
      NULL |
      CHECK ( expression ) |
      DEFAULT default_expr |
      UNIQUE index_parameters |
      PRIMARY KEY index_parameters }
    [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
]]></SubSentence>
       <SubSentence id="compress_mode"><![CDATA[
     { DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS }
]]></SubSentence>
    <SubSentence id="table_constraint"><![CDATA[
    [ CONSTRAINT constraint_name ]
    { CHECK ( expression ) |
      UNIQUE ( column_name [, ... ] ) index_parameters |
      PRIMARY KEY ( column_name [, ... ] ) index_parameters}
    [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
]]></SubSentence>
    <SubSentence id="index_parameters"><![CDATA[
    [ WITH ( {storage_parameter = value} [, ... ] ) ]
    [ USING INDEX TABLESPACE tablespace_name ]
]]></SubSentence>
    <SubSentence id="table_constraint_using_index"><![CDATA[
[ CONSTRAINT constraint_name ]
    { UNIQUE | PRIMARY KEY } USING INDEX index_name
    [ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
]]></SubSentence>
  </Command>

  <Command id="ALTER TABLE PARTITION" desc="change the definition of a partition">
    <MainSentence id="ACTION SYN"><![CDATA[
ALTER TABLE [ IF EXISTS ] { table_name  [*] | ONLY table_name | ONLY ( table_name  )}
    action [, ... ];
]]></MainSentence>
    <MainSentence id="RENAME PARTITION"><![CDATA[
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name  )}
    RENAME PARTITION { partion_name | FOR ( partition_value [, ...] ) } TO partition_new_name;
]]></MainSentence>
    <MainSentence id="MOVE PARTITION"><![CDATA[
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name  )}
    MOVE PARTITION { partion_name | FOR ( partition_value [, ...] ) } TABLESPACE tablespacename;
]]></MainSentence>
    <MainSentence id="EXCHANGE PARTITION"><![CDATA[
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name  )}
    EXCHANGE PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } 
    WITH TABLE {[ ONLY ] ordinary_table_name | ordinary_table_name * | ONLY ( ordinary_table_name )} 
    [ { WITH | WITHOUT } VALIDATION ] [ VERBOSE ];
]]></MainSentence>
    <SubSentence id="action"><![CDATA[
    row_clause  |
    merge_clause  |
    modify_clause  |
    split_clause  |
    add_clause  |
    drop_clause
]]></SubSentence>
    <SubSentence id="row_clause"><![CDATA[
    { ENABLE | DISABLE } ROW MOVEMENT
]]></SubSentence>
    <SubSentence id="merge_clause"><![CDATA[
    MERGE PARTITIONS { partition_name } [, ...] INTO PARTITION partition_name
    [ TABLESPACE tablespacename ]
]]></SubSentence>
    <SubSentence id="modify_clause"><![CDATA[
    MODIFY PARTITION partition_name { UNUSABLE LOCAL INDEXES | REBUILD UNUSABLE LOCAL INDEXES }
]]></SubSentence>
    <SubSentence id="split_clause"><![CDATA[
    SPLIT PARTITION { partition_name | FOR ( partition_value [, ...] ) } { split_point_clause | no_split_point_clause }
]]></SubSentence>
    <SubSentence id="split_point_clause"><![CDATA[
        AT ( partition_value [, ...] ) INTO ( {PARTITION partition_name [ TABLESPACE tablespacename ]} [,... ] )
]]></SubSentence>
    <SubSentence id="no_split_point_clause"><![CDATA[
        INTO {(partition_less_than_item [, ...] ) | (partition_start_end_item [, ...] )}
]]></SubSentence>
    <SubSentence id="add_clause"><![CDATA[
    ADD {partition_less_than_item | partition_start_end_item}
]]></SubSentence>
    <SubSentence id="partition_less_than_item"><![CDATA[
PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE }	[, ...] ) [ TABLESPACE tablespacename ]
]]></SubSentence>
    <SubSentence id="partition_start_end_item"><![CDATA[
PARTITION partition_name {
	{START(partition_value) END (partition_value) EVERY (interval_value)} |
	{START(partition_value) END ({partition_value | MAXVALUE})} |
	{START(partition_value)} |
	{END({partition_value | MAXVALUE})}
} [TABLESPACE tablespace_name]
]]></SubSentence>
    <SubSentence id="drop_clause"><![CDATA[
    DROP PARTITION  { partition_name  | FOR (  partition_value [, ...] )  }
]]></SubSentence>
  </Command>

  <Command id="ALTER TABLESPACE" desc="change the definition of a tablespace">
    <MainSentence id="RENAME TO"><![CDATA[
ALTER TABLESPACE tablespace_name
    RENAME TO new_tablespace_name;
]]></MainSentence>
    <MainSentence id="OWNER TO"><![CDATA[
ALTER TABLESPACE tablespace_name
    OWNER TO new_owner;
]]></MainSentence>
    <MainSentence id="SET OPTION"><![CDATA[
ALTER TABLESPACE tablespace_name
    SET ( {tablespace_option = value} [, ... ] );
]]></MainSentence>
    <MainSentence id="RESET OPTION"><![CDATA[
ALTER TABLESPACE tablespace_name
    RESET ( tablespace_option [, ... ] );
]]></MainSentence>
    <MainSentence id="RESIZE MAXSIZE"><![CDATA[
ALTER TABLESPACE tablespace_name
    RESIZE MAXSIZE { UNLIMITED | 'space_size' };
]]></MainSentence>
  </Command>

  <Command id="ALTER USER" desc="change a database role">
    <MainSentence id="SYN"><![CDATA[
ALTER USER user_name [ [ WITH ] option [ ... ] ];
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
ALTER USER user_name
    RENAME TO new_name;
]]></MainSentence>
    <MainSentence id="SET PARAMETER"><![CDATA[
ALTER USER user_name
    SET configuration_parameter {{ TO | = } { value | DEFAULT }|FROM CURRENT};
]]></MainSentence>
    <MainSentence id="RESET PARAMETER"><![CDATA[
ALTER USER user_name
    RESET {configuration_parameter|ALL};
]]></MainSentence>
    <SubSentence id="option"><![CDATA[
{CREATEDB | NOCREATEDB}
    | {CREATEROLE | NOCREATEROLE}
    | {INHERIT | NOINHERIT}
    | {AUDITADMIN | NOAUDITADMIN}
    | {SYSADMIN | NOSYSADMIN}
    | {USEFT | NOUSEFT}
    | {LOGIN | NOLOGIN}
    | {REPLICATION | NOREPLICATION}
    | CONNECTION LIMIT connlimit
    | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY 'password' [ REPLACE 'old_password' ]
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID BEGIN 'timestamp'
    | VALID UNTIL 'timestamp'
    | RESOURCE POOL 'respool'
    | ACCOUNT { LOCK | UNLOCK }
    | PGUSER
]]></SubSentence>
  </Command>

  <Command id="ALTER VIEW" desc="change the definition of a view">
    <MainSentence id="COLUMN SET DEFAULT"><![CDATA[
ALTER VIEW [ IF EXISTS ] view_name
    ALTER [ COLUMN ] column_name SET DEFAULT expression;
]]></MainSentence>
    <MainSentence id="COLUMN DROP DEFAULT"><![CDATA[
ALTER VIEW [ IF EXISTS ] view_name
    ALTER [ COLUMN ] column_name DROP DEFAULT;
]]></MainSentence>
    <MainSentence id="OWNER TO"><![CDATA[
ALTER VIEW [ IF EXISTS ] view_name
    OWNER TO new_owner;
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
ALTER VIEW [ IF EXISTS ] view_name
    RENAME TO new_name;
]]></MainSentence>
    <MainSentence id="SET SCHEMA"><![CDATA[
ALTER VIEW [ IF EXISTS ] view_name
    SET SCHEMA new_schema;
]]></MainSentence>
    <MainSentence id="SET OPTION"><![CDATA[
ALTER VIEW [ IF EXISTS ] view_name
    SET ( {view_option_name [= view_option_value]} [, ... ] );
]]></MainSentence>
    <MainSentence id="RESET OPTION"><![CDATA[
ALTER VIEW [ IF EXISTS ] view_name
    RESET ( view_option_name [, ... ] );
]]></MainSentence>
  </Command>

  <Command id="ALTER WORKLOAD GROUP" desc="change the definition of a workload group">
    <MainSentence id="SYN"><![CDATA[
ALTER WORKLOAD GROUP wg_name
     USING RESOURCE POOL pool_name [ WITH ( ACT_STATEMENTS = count ) ];
]]></MainSentence>
  </Command>

  <Command id="ANALYZE" desc="collect statistics about a database">
    <MainSentence id="TABLE SYN"><![CDATA[
{ANALYZE | ANALYSE} [ VERBOSE ]
    [ table_name [ ( column_name [, ...] ) ] ];
]]></MainSentence>
    <MainSentence id="TABLE PARTITION"><![CDATA[
{ANALYZE | ANALYSE} [ VERBOSE ]
    [ table_name [ ( column_name [, ...] ) ] ]
    PARTITION ( partition_name );
]]></MainSentence>
    <MainSentence id="FOREIGH TABLE"><![CDATA[
{ANALYZE | ANALYSE} [ VERBOSE ]
    { foreign_table_name | FOREIGN TABLES };
]]></MainSentence>
    <MainSentence id="MULTI COLUMN"><![CDATA[
{ANALYZE | ANALYSE} [ VERBOSE ]
    table_name (( column_1_name, column_2_name [, ...] ));
]]></MainSentence>
    <MainSentence id="VERIFY"><![CDATA[
{ANALYZE | ANALYSE} VERIFY [FAST|COMPLETE]
    table_name|index_name [CASCADE];
]]></MainSentence>
    <MainSentence id="VERIFY PARTITION"><![CDATA[
{ANALYZE | ANALYSE} VERIFY [FAST|COMPLETE]
    table_name PARTITION partition_name [CASCADE];
]]></MainSentence>
  </Command>

  <Command id="BEGIN" desc="start a anonymous block">
    <MainSentence id="SYN"><![CDATA[
[DECLARE [declare_statements]] 
BEGIN
execution_statements
END;
/
]]></MainSentence>
  </Command>

  <Command id="CALL" desc="call a defined function">
    <MainSentence id="SYN"><![CDATA[
CALL [schema.] func_name ( param_expr );
]]></MainSentence>
  </Command>

  <Command id="CLEAN CONNECTION" desc="clean up pooler connections in a cluster">
    <MainSentence id="SYN"><![CDATA[
CLEAN CONNECTION
    TO { COORDINATOR ( nodename [, ... ] ) | NODE ( nodename [, ... ] ) | ALL [ CHECK ] [ FORCE ] }
    [ FOR DATABASE dbname ]
    [ TO USER username ];
]]></MainSentence>
  </Command>

  <Command id="CLOSE" desc="close a cursor">
    <MainSentence id="SYN"><![CDATA[
CLOSE { cursor_name | ALL };
]]></MainSentence>
  </Command>

  <Command id="CLUSTER" desc="cluster a table according to an index">
    <MainSentence id="SINGLE TABLE"><![CDATA[
CLUSTER [ VERBOSE ] table_name [ USING index_name ];
]]></MainSentence>
    <MainSentence id="TABLE PARTITION"><![CDATA[
CLUSTER [ VERBOSE ] table_name PARTITION ( partition_name ) [ USING index_name ];
]]></MainSentence>
    <MainSentence id="SYN"><![CDATA[
CLUSTER [ VERBOSE ];
]]></MainSentence>
  </Command>

  <Command id="COMMENT" desc="define or change the comment of an object">
    <MainSentence id="SYN"><![CDATA[
COMMENT ON
{
  AGGREGATE agg_name (agg_type [, ...] ) |
  CAST (source_type AS target_type) |
  COLLATION object_name |
  COLUMN { table_name.column_name | view_name.column_name } |
  CONSTRAINT constraint_name ON table_name |
  CONVERSION object_name |
  DATABASE object_name |
  DOMAIN object_name |
  EXTENSION object_name |
  FOREIGN DATA WRAPPER object_name |
  FOREIGN TABLE object_name |
  FUNCTION function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) |
  INDEX object_name |
  LARGE OBJECT large_object_oid |
  OPERATOR operator_name (left_type, right_type) |
  OPERATOR CLASS object_name USING index_method |
  OPERATOR FAMILY object_name USING index_method |
  [ PROCEDURAL ] LANGUAGE object_name |
  ROLE object_name |
  RULE rule_name ON table_name |
  SCHEMA object_name |
  SERVER 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 |
  TYPE object_name |
  VIEW object_name
}
   IS 'text';
]]></MainSentence>
  </Command>

  <Command id="COMMIT" desc="commit the current transaction">
    <MainSentence id="SYN"><![CDATA[
{ COMMIT | END } [ WORK | TRANSACTION ];
]]></MainSentence>
  </Command>

  <Command id="COMMIT PREPARED" desc="commit a transaction that was earlier prepared for two-phase commit">
    <MainSentence id="SYN"><![CDATA[
COMMIT PREPARED transaction_id;
]]></MainSentence>
  </Command>

  <Command id="COPY" desc="copy data between a file and a table">
    <MainSentence id="FROM SYN"><![CDATA[
COPY table_name [ ( column_name [, ...] ) ]
    FROM { 'filename' | STDIN }
    [ [ USING ] DELIMITERS 'delimiters' ]
    [ WITHOUT ESCAPING ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | [ FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) ]
    | [ TRANSFORM ( { column_name [ data_type ] [ AS transform_expr ] } [, ...] ) ];
]]></MainSentence>
    <MainSentence id="TO SYN"><![CDATA[
COPY table_name [ ( column_name [, ...] ) ]
    TO { 'filename' | STDOUT }
    [ [ USING ] DELIMITERS 'delimiters' ]
    [ WITHOUT ESCAPING ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | [ FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) ];
]]></MainSentence>
	<MainSentence id="QUERY TO SYN"><![CDATA[
COPY query
    TO { 'filename' | STDOUT }
    [ WITHOUT ESCAPING ]
    [ [ WITH ] ( option [, ...] ) ]
    | copy_option
    | [ FIXED FORMATTER ( { column_name( offset, length ) } [, ...] ) ];
]]></MainSentence>
    <SubSentence id="option"><![CDATA[
FORMAT format_name
| OIDS [ boolean ]
| DELIMITER 'delimiter_character'
| NULL 'null_string'
| HEADER [ boolean ]
| QUOTE 'quote_character'
| ESCAPE 'escape_character'
| FORCE_QUOTE { ( column_name [, ...] ) | * }
| FORCE_NOT_NULL ( column_name [, ...] )
| ENCODING 'encoding_name'
| IGNORE_EXTRA_DATA [ boolean ]
| FILL_MISSING_FIELDS [ boolean ]
| COMPATIBLE_ILLEGAL_CHARS [ boolean ]
| DATE_FORMAT 'date_format_string'
| TIME_FORMAT 'time_format_string'
| TIMESTAMP_FORMAT 'timestamp_format_string'
| SMALLDATETIME_FORMAT 'smalldatetime_format_string'
]]></SubSentence>
	<SubSentence id="copy_option"><![CDATA[
OIDS
| NULL 'null_string'
| HEADER
| FILEHEADER 'header_file_string'
| FREEZE
| FORCE NOT NULL column_name [, ...]
| FORCE QUOTE { column_name [, ...] | * }
| BINARY
| CSV
| QUOTE [ AS ] 'quote_character'
| ESCAPE [ AS ] 'escape_character'
| ENCODING 'encoding_name'
| IGNORE_EXTRA_DATA
| FILL_MISSING_FIELDS
| COMPATIBLE_ILLEGAL_CHARS
| DATE_FORMAT 'date_format_string'
| TIME_FORMAT 'time_format_string'
| TIMESTAMP_FORMAT 'timestamp_format_string'
| SMALLDATETIME_FORMAT 'smalldatetime_format_string'
]]></SubSentence>
  </Command>

  <Command id="CREATE APP WORKLOAD GROUP MAPPING" desc="create a workload group mapping">
    <MainSentence id="SYN"><![CDATA[
CREATE APP WORKLOAD GROUP MAPPING app_name
    [ WITH ( WORKLOAD_GPNAME  = workload_gpname ) ];
]]></MainSentence>
  </Command>

  <Command id="CREATE BARRIER" desc="create a new barrier">
    <MainSentence id="SYN"><![CDATA[
CREATE BARRIER barrier_name;
]]></MainSentence>
  </Command>

  <Command id="CREATE DATABASE" desc="create a new database">
    <MainSentence id="CREATE DATABASE"><![CDATA[
CREATE DATABASE database_name
    [ [ WITH ] {[ OWNER [=] user_name ]|
           [ TEMPLATE [=] template ]|
           [ ENCODING [=] encoding ]|
           [ LC_COLLATE [=] lc_collate ]|
           [ LC_CTYPE [=] lc_ctype ]|
           [ DBCOMPATIBILITY [=] compatibility_type ]|
           [ TABLESPACE [=] tablespace_name ]|
           [ CONNECTION LIMIT [=] connlimit ]}[...] ];
]]></MainSentence>
  </Command>

  <Command id="CREATE FOREIGN TABLE" desc="define a new foreign table">
    <MainSentence id="CREATE FOREIGN TABLE FOR GDS"><![CDATA[
CREATE FOREIGN TABLE [ IF NOT EXISTS  ] table_name 
( { column_name type_name POSITION(offset,length) [column_constraint ]
	| LIKE source_table | table_constraint [, ...]} [, ...] ) 
SEVER gsmpp_server 
OPTIONS (  { option_name ' value '  }  [, ...] ) 
[  { WRITE ONLY  |  READ ONLY  }] 
[ WITH error_table_name | LOG INTO error_table_name] 
[REMOTE LOG 'name'] 
[PER NODE REJECT LIMIT 'value']  ;
]]></MainSentence>
    <MainSentence id="CREATE FOREIGN TABLE FOR HADOOP"><![CDATA[
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name 
( { column_name type_name 
    [ { [CONSTRAINT constraint_name] NULL | 
    [CONSTRAINT constraint_name] NOT NULL | 
	column_constraint [...]} ] | 
	table_constraint [, ...]} [, ...] ) 
SERVER hdfs_server 
OPTIONS ( { option_name ' value ' } [, ...] ) 
DISTRIBUTE BY {ROUNDROBIN | REPLICATION}
[ PARTITION BY ( column_name ) [AUTOMAPPED]] ;
]]></MainSentence>
    <SubSentence id="column_constraint"><![CDATA[
[CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE}
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED]
]]></SubSentence>
    <SubSentence id="table_constraint"><![CDATA[
[CONSTRAINT constraint_name]
{PRIMARY KEY | UNIQUE} (column_name)
[NOT ENFORCED [ENABLE QUERY OPTIMIZATION | DISABLE QUERY OPTIMIZATION] | ENFORCED]
]]></SubSentence>
  </Command>

  <Command id="CREATE FUNCTION" desc="define a new function">
    <MainSentence id="RETURN SYN"><![CDATA[
CREATE [ OR REPLACE  ] FUNCTION function_name
    ( [  { argname [ argmode  ] argtype [  { DEFAULT | := | =  } expression  ] }  [, ...]  ] )
    RETURN rettype [ DETERMINISTIC  ]
    { {IMMUTABLE  | STABLE  | VOLATILE } | [ NOT  ] LEAKPROOF  | {CALLED ON NULL INPUT  | RETURNS NULL ON NULL INPUT  | STRICT } | {[ EXTERNAL  ] SECURITY INVOKER  | [ EXTERNAL  ] SECURITY DEFINER } | COST execution_cost  | ROWS result_rows  | SET configuration_parameter { {TO | =} value | FROM CURRENT }  | AUTHID DEFINER  | AUTHID CURRENT_USER}[...]
     { IS  | AS  } plsql_body
/
]]></MainSentence>
    <MainSentence id="RETURNS SYN"><![CDATA[
CREATE [ OR REPLACE  ] FUNCTION function_name
    ( [  { argname [ argmode  ] argtype [  { DEFAULT  | :=  | =  } expression  ]}  [, ...]  ] )
    [ RETURNS rettype [ DETERMINISTIC  ]  | RETURNS TABLE (  { column_name column_type  }  [, ...] )]
    AS ' definition ' LANGUAGE lang_name [ WINDOW  ]
    {  {IMMUTABLE  | STABLE  | VOLATILE } | [ NOT ] FENCED | [ NOT  ] LEAKPROOF  | {CALLED ON NULL INPUT  | RETURNS NULL ON NULL INPUT  | STRICT } | {[ EXTERNAL  ] SECURITY INVOKER  | [ EXTERNAL  ] SECURITY DEFINER } | COST execution_cost  | ROWS result_rows  | SET configuration_parameter { {TO | =} value | FROM CURRENT }  | AUTHID DEFINER  | AUTHID CURRENT_USER}[...]
/
]]></MainSentence>
  </Command>

  <Command id="CREATE GROUP" desc="define a new database role">
    <MainSentence id="SYN"><![CDATA[
CREATE GROUP group_name [ [ WITH ] option [ ... ] ];
]]></MainSentence>
    <SubSentence id="option"><![CDATA[
{SYSADMIN | NOSYSADMIN}
    | {CREATEDB | NOCREATEDB}
    | {CREATEROLE | NOCREATEROLE}
    | {USEFT | NOUSEFT}
    | {INHERIT | NOINHERIT}
    | {LOGIN | NOLOGIN}
    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
    | VALID UNTIL 'timestamp'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid
]]></SubSentence>
  </Command>

  <Command id="CREATE INDEX" desc="define a new index">
    <MainSentence id="CREATE INDEX SYN"><![CDATA[
CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ schema_name. ] index_name ] ON table_name [ USING method ]
    ({ { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] }[, ...] )
    [ WITH ( {storage_parameter = value} [, ... ] ) ]
    [ TABLESPACE tablespace_name ]
    [ WHERE predicate ];
]]></MainSentence>
    <MainSentence id="CREATE INDEX PARTITION SYN"><![CDATA[
CREATE [ UNIQUE ] INDEX [ [ schema_name. ] index_name ] ON table_name [ USING method ]
( {{ column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS LAST ] }[, ...] )
LOCAL [ ( { PARTITION index_partition_name [ TABLESPACE index_partition_tablespace ] } [, ...] ) ]
[ WITH ( { storage_parameter = value } [, ...] ) ]
[ TABLESPACE tablespace_name ];
]]></MainSentence>
  </Command>

  <Command id="CREATE NODE" desc="create a new cluster node">
    <MainSentence id="SYN"><![CDATA[
CREATE NODE nodename WITH
  (
    [ TYPE = nodetype,]
    [ HOST = hostname,]
    [ PORT = portnum,]
    [ HOST1 = 'hostname',]
    [ PORT1 = portnum,]
    [ HOSTPRIMARY [ = boolean ],]
    [ PRIMARY [ = boolean ],]
    [ PREFERRED [ = boolean ],]
    [ SCTP_PORT = portnum,]
    [ CONTROL_PORT = portnum,]
    [ SCTP_PORT1 = portnum,]
    [ CONTROL_PORT1 = portnum ]
  );
]]></MainSentence>
  </Command>

  <Command id="CREATE NODE GROUP" desc="create a group of cluster nodes">
    <MainSentence id="SYN"><![CDATA[
CREATE NODE GROUP groupname
    WITH ( nodename [, ... ] );
]]></MainSentence>
  </Command>

  <Command id="CREATE PROCEDURE" desc="create a procedure">
    <MainSentence id="SYN"><![CDATA[
CREATE [ OR REPLACE ] PROCEDURE procedure_name
    [ ( {[ argmode ] [ argname ] argtype [ { DEFAULT | := | = } expression ]}[,...]) ]
   { IS | AS } plsql_body
/
]]></MainSentence>
  </Command>

  <Command id="CREATE RESOURCE POOL" desc="define a new resource pool">
    <MainSentence id="SYN"><![CDATA[
CREATE RESOURCE POOL pool_name
    [WITH ({CONTROL_GROUP={"group_name" | 'group_name'} | ACTIVE_STATEMENTS=stmt | MAX_DOP = dop | MEMORY_LIMIT='memory_size'}[, ... ])];
]]></MainSentence>
  </Command>

  <Command id="CREATE ROLE" desc="define a new database role">
    <MainSentence id="SYN"><![CDATA[
CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } 'password';
]]></MainSentence>
    <SubSentence id="option"><![CDATA[
{SYSADMIN | NOSYSADMIN}
    | {AUDITADMIN | NOAUDITADMIN}
    | {CREATEDB | NOCREATEDB}
    | {USEFT | NOUSEFT}
    | {CREATEROLE | NOCREATEROLE}
    | {INHERIT | NOINHERIT}
    | {LOGIN | NOLOGIN}
    | {REPLICATION | NOREPLICATION}
    | CONNECTION LIMIT connlimit
    | VALID BEGIN 'timestamp'
    | VALID UNTIL 'timestamp'
    | RESOURCE POOL 'respool'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid
    | DEFAULT TABLESPACE tablespace_name
    | PROFILE DEFAULT
    | PROFILE profile_name
    | PGUSER
]]></SubSentence>
  </Command>

  <Command id="CREATE SCHEMA" desc="define a new schema">
    <MainSentence id="WITH SCHEMA"><![CDATA[
CREATE SCHEMA schema_name
    [ AUTHORIZATION user_name ] [ schema_element [ ... ] ];
]]></MainSentence>
    <MainSentence id="WITH USER"><![CDATA[
CREATE SCHEMA AUTHORIZATION user_name [ schema_element [ ... ] ];
]]></MainSentence>
  </Command>

  <Command id="CREATE SERVER" desc="define a new foreign server">
    <MainSentence id="CREATE SERVER FOR HADOOP"><![CDATA[
CREATE SERVER server_name 
    FOREIGN DATA WRAPPER fdw_name
    OPTIONS ( { option_name ' value ' } [, ...] ) ;
]]></MainSentence>
  </Command>

  <Command id="CREATE TABLE" desc="define a new table">
    <MainSentence id="CREATE TABLE SYN"><![CDATA[
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name 
({ column_name data_type [ compress_mode ] [ COLLATE collation ] [ column_constraint [ ... ] ]
    | table_constraint
    | LIKE source_table [ like_option [...] ] }
    [, ... ])
[ WITH ( {storage_parameter = value} [, ... ] ) ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ COMPRESS | NOCOMPRESS ]
[ TABLESPACE tablespace_name ]
[ DISTRIBUTE BY { REPLICATION | { HASH ( column_name [,...] ) } } ]
[ TO { GROUP groupname | NODE ( nodename [, ... ] ) } ];
]]></MainSentence>
    <SubSentence id="column_constraint"><![CDATA[
[ CONSTRAINT constraint_name ]
{ NOT NULL |
  NULL |
  CHECK ( expression ) |
  DEFAULT default_expr |
  UNIQUE index_parameters |
  PRIMARY KEY index_parameters }
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
]]></SubSentence>
    <SubSentence id="table_constraint"><![CDATA[
[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) |
  UNIQUE ( column_name [, ... ] ) index_parameters |
  PRIMARY KEY ( column_name [, ... ] ) index_parameters}
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
]]></SubSentence>
      <SubSentence id="compress_mode"><![CDATA[
 { DELTA | PREFIX | DICTIONARY | NUMSTR | NOCOMPRESS }
]]></SubSentence>
    <SubSentence id="like_option"><![CDATA[
{ INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | PARTITION | RELOPTIONS | DISTRIBUTION | ALL }
]]></SubSentence>
    <SubSentence id="index_parameters"><![CDATA[
[ WITH ( {storage_parameter = value} [, ... ] ) ]
[ USING INDEX TABLESPACE tablespace_name ]
]]></SubSentence>
  </Command>

  <Command id="CREATE TABLE AS" desc="define a new table from the results of a query">
    <MainSentence id="CREATE TABLE AS SYN"><![CDATA[
CREATE [ UNLOGGED ] TABLE table_name
    [ (column_name [, ...] ) ]
    [ WITH ( {storage_parameter = value} [, ... ] ) ]
    [ COMPRESS | NOCOMPRESS ]
    [ TABLESPACE tablespace_name ]
    [ DISTRIBUTE BY { REPLICATION | { [HASH ] ( column_name ) } } ]
    AS query
    [ WITH [ NO ] DATA ];
]]></MainSentence>
  </Command>

  <Command id="CREATE TABLE PARTITION" desc="define a new table partition">
    <MainSentence id="CREATE TABLE PARTITION SYN"><![CDATA[
CREATE TABLE [ IF NOT EXISTS ] partition_table_name 
( [
  { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
    | table_constraint 
    | LIKE source_table [ like_option [...] ] }
    [, ... ]
] )
[ WITH ( {storage_parameter = value} [, ... ] ) ]
[ COMPRESS | NOCOMPRESS ]
[ TABLESPACE tablespace_name ]
[ DISTRIBUTE BY { REPLICATION | { [ HASH ] ( column_name ) } } ]
PARTITION BY { 
	{VALUES (partition_key)} | 
	{RANGE (partition_key) ( partition_less_than_item [, ... ] )} |
	{RANGE (partition_key) ( partition_start_end_item [, ... ] )} |
    {LIST (partition_key) ( PARTITION partition_name VALUES (partition_value [, ... ] ) [, ... ] )} |
    {HASH (partition_key) ( PARTITION partition_name [, ... ] )}
} [ { ENABLE | DISABLE } ROW MOVEMENT ];
]]></MainSentence>
    <SubSentence id="column_constraint"><![CDATA[
[ CONSTRAINT constraint_name ]
{ NOT NULL |
  NULL |
  CHECK ( expression ) |
  DEFAULT default_expr |
  UNIQUE index_parameters |
  PRIMARY KEY index_parameters }
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
]]></SubSentence>
    <SubSentence id="table_constraint"><![CDATA[
[ CONSTRAINT constraint_name ]
{ CHECK ( expression ) |
  UNIQUE ( column_name [, ... ] ) index_parameters |
  PRIMARY KEY ( column_name [, ... ] ) index_parameters}
[ DEFERRABLE | NOT DEFERRABLE | INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
]]></SubSentence>
    <SubSentence id="index_parameters"><![CDATA[
[ WITH ( {storage_parameter = value} [, ... ] ) ]
[ USING INDEX TABLESPACE tablespace_name ]
]]></SubSentence>
    <SubSentence id="like_option"><![CDATA[
{ INCLUDING | EXCLUDING } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | RELOPTIONS | DISTRIBUTION | ALL }
]]></SubSentence>
    <SubSentence id="partition_less_than_item"><![CDATA[
PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE } ) [TABLESPACE tablespace_name]
]]></SubSentence>
    <SubSentence id="partition_start_end_item"><![CDATA[
PARTITION partition_name {
	{START(partition_value) END (partition_value) EVERY (interval_value)} |
	{START(partition_value) END ({partition_value | MAXVALUE})} |
	{START(partition_value)} |
	{END({partition_value | MAXVALUE})}
} [TABLESPACE tablespace_name]
]]></SubSentence>
  </Command>

  <Command id="CREATE TABLESPACE" desc="define a new tablespace">
    <MainSentence id="SYN"><![CDATA[
CREATE TABLESPACE tablespace_name
    [ OWNER user_name ] [RELATIVE] LOCATION 'directory' [ MAXSIZE 'space_size' ]
    [with_option_clause];
]]></MainSentence>
    <SubSentence id="option_clause"><![CDATA[
WITH ( filesystem= { 'systemtype '| " systemtype " | systemtype }
 [ { , address = { ' ip:port [ , ... ] ' | " ip:port [ , ... ] "} } ]
, cfgpath = { 'path '| " path " } ,storepath = { 'rootpath '| " rootpath "} 
[{, random_page_cost = { 'value '| " value " | value }}]
[{,seq_page_cost = { 'value '| " value " | value }}])
]]></SubSentence>
  </Command>

  <Command id="CREATE USER" desc="define a new database role">
    <MainSentence id="SYN"><![CDATA[
CREATE USER user_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } 'password';
]]></MainSentence>
    <SubSentence id="option"><![CDATA[
{CREATEDB | NOCREATEDB}
    | {CREATEROLE | NOCREATEROLE}
    | {INHERIT | NOINHERIT}
    | {AUDITADMIN | NOAUDITADMIN}
    | {SYSADMIN | NOSYSADMIN}
    | {USEFT | NOUSEFT}
    | {LOGIN | NOLOGIN}
    | {REPLICATION | NOREPLICATION}
    | CONNECTION LIMIT connlimit
    | VALID BEGIN 'timestamp'
    | VALID UNTIL 'timestamp'
    | RESOURCE POOL 'respool'
    | IN ROLE role_name [, ...]
    | IN GROUP role_name [, ...]
    | ROLE role_name [, ...]
    | ADMIN role_name [, ...]
    | USER role_name [, ...]
    | SYSID uid
    | DEFAULT TABLESPACE name
    | PROFILE DEFAULT
    | PROFILE name
    | PGUSER
]]></SubSentence>
  </Command>

  <Command id="CREATE VIEW" desc="define a new view">
    <MainSentence id="SYN"><![CDATA[
CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW view_name [ ( column_name [, ...] ) ]
    [ WITH ( {view_option_name [= view_option_value]} [, ... ] ) ]
    AS query;
]]></MainSentence>
  </Command>

  <Command id="CREATE WORKLOAD GROUP" desc="define a new workload group">
    <MainSentence id="SYN"><![CDATA[
CREATE WORKLOAD GROUP wg_name
     [ USING RESOURCE POOL pool_name [ WITH ( ACT_STATEMENTS = counts) ] ];
]]></MainSentence>
  </Command>

  <Command id="CURSOR" desc="define a cursor">
    <MainSentence id="SYN"><![CDATA[
CURSOR cursor_name
    [ BINARY ] [ NO SCROLL ] [ { WITH | WITHOUT } HOLD ]
    FOR query ;
]]></MainSentence>
  </Command>

  <Command id="DEALLOCATE" desc="deallocate a prepared statement">
    <MainSentence id="SYN"><![CDATA[
DEALLOCATE [ PREPARE ] { name | ALL };
]]></MainSentence>
  </Command>

  <Command id="DECLARE" desc="define a curosr">
    <MainSentence id="SYN"><![CDATA[
DECLARE cursor_name 
    [ BINARY ] [ NO SCROLL ] CURSOR [ { WITH | WITHOUT } HOLD ]
    FOR query ;
]]></MainSentence>
  </Command>

  <Command id="DELETE" desc="delete rows of a table">
    <MainSentence id="DELETE SYN"><![CDATA[
[ WITH [ RECURSIVE ] with_query [, ...] ]
DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
    [ USING using_list ]
    [ WHERE condition | WHERE CURRENT OF cursor_name ] [ LIMIT row_count ]
    [ RETURNING { * | { output_expr [ [ AS ] output_name ] } [, ...] } ];
]]></MainSentence>
  </Command>

  <Command id="DO" desc="execute an anonymous code block">
    <MainSentence id="SYN"><![CDATA[
DO [ LANGUAGE lang_name ] code;
]]></MainSentence>
  </Command>

  <Command id="DROP APP WORKLOAD GROUP MAPPING" desc="remove a workload group mapping">
    <MainSentence id="SYN"><![CDATA[
DROP APP WORKLOAD GROUP MAPPING [ IF EXISTS ] app_name;
]]></MainSentence>
  </Command>

  <Command id="DROP DATABASE" desc="remove a database">
    <MainSentence id="SYN"><![CDATA[
DROP DATABASE [ IF EXISTS ] database_name;
]]></MainSentence>
  </Command>

  <Command id="DROP FOREIGN TABLE" desc="remove a foreign table">
    <MainSentence id="DROP FOREIGN TABLE"><![CDATA[
DROP FOREIGN TABLE [ IF EXISTS ] 
table_name [, ...] [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="DROP FUNCTION" desc="remove a function">
    <MainSentence id="SYN"><![CDATA[
DROP FUNCTION [ IF EXISTS ] function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] )
    [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="DROP GROUP" desc="remove a database role">
    <MainSentence id="SYN"><![CDATA[
DROP GROUP [ IF EXISTS ] group_name [, ...];
]]></MainSentence>
  </Command>

  <Command id="DROP INDEX" desc="remove an index">
    <MainSentence id="DROP INDEX SYN"><![CDATA[
DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] 
index_name [, ...] [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="DROP NODE" desc="drop a cluster node">
    <MainSentence id="SYN"><![CDATA[
DROP NODE nodename;
]]></MainSentence>
  </Command>

  <Command id="DROP NODE GROUP" desc="drop a group of cluster nodes">
    <MainSentence id="SYN"><![CDATA[
DROP NODE GROUP groupname;
]]></MainSentence>
  </Command>

  <Command id="DROP OWNED" desc="remove database objects owned by a database role">
    <MainSentence id="SYN"><![CDATA[
DROP OWNED BY name [, ...] [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="DROP PROCEDURE" desc="drop a defined procedure">
    <MainSentence id="SYN"><![CDATA[
DROP PROCEDURE [ IF EXISTS ] procedure_name;
]]></MainSentence>
  </Command>

  <Command id="DROP RESOURCE POOL" desc="remove a resource pool">
    <MainSentence id="SYN"><![CDATA[
DROP RESOURCE POOL [ IF EXISTS ] pool_name;
]]></MainSentence>
  </Command>

  <Command id="DROP ROLE" desc="remove a database role">
    <MainSentence id="SYN"><![CDATA[
DROP ROLE [ IF EXISTS ] role_name [, ...];
]]></MainSentence>
  </Command>

  <Command id="DROP SCHEMA" desc="remove a schema">
    <MainSentence id="SYN"><![CDATA[
DROP SCHEMA [ IF EXISTS ] schema_name [, ...] [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="DROP SERVER" desc="remove a foreign server descriptor">
    <MainSentence id="SYN"><![CDATA[
DROP SERVER [ IF EXISTS ] server_name [ { CASCADE | RESTRICT } ] ;
]]></MainSentence>
  </Command>

  <Command id="DROP TABLE" desc="remove a table">
    <MainSentence id="DROP TABLE SYN"><![CDATA[
DROP TABLE [ IF EXISTS ] 
{[schema.]table_name} [, ...] [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="DROP TABLESPACE" desc="remove a tablespace">
    <MainSentence id="SYN"><![CDATA[
DROP TABLESPACE [ IF EXISTS ] tablespace_name;
]]></MainSentence>
  </Command>

  <Command id="DROP USER" desc="remove a database role">
    <MainSentence id="SYN"><![CDATA[
DROP USER [ IF EXISTS ] user_name [, ...] [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="DROP VIEW" desc="remove a view">
    <MainSentence id="SYN"><![CDATA[
DROP VIEW [ IF EXISTS ] view_name [, ...] [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="DROP WORKLOAD GROUP" desc="remove a workload group">
    <MainSentence id="SYN"><![CDATA[
DROP WORKLOAD GROUP  [ IF EXISTS ] wg_name;
]]></MainSentence>
  </Command>

  <Command id="EXECUTE" desc="execute a prepared statement">
    <MainSentence id="SYN"><![CDATA[
EXECUTE name [ ( parameter [, ...] ) ];
]]></MainSentence>
  </Command>

  <Command id="EXECUTE DIRECT" desc="launch queries directly to dedicated nodes">
    <MainSentence id="SYN"><![CDATA[
EXECUTE DIRECT ON ( nodename [, ... ] ) query;
]]></MainSentence>
  </Command>

  <Command id="EXPLAIN" desc="show the execution plan of a statement">
    <MainSentence id="WITH BRACKET"><![CDATA[
EXPLAIN [ (  option  [, ...] )  ] statement;
]]></MainSentence>
    <MainSentence id="NO BRACKET"><![CDATA[
EXPLAIN  { [  { ANALYZE  | ANALYSE  }  ] [ VERBOSE  ]  | PERFORMANCE  } statement;
]]></MainSentence>
    <SubSentence id="option"><![CDATA[
ANALYZE [ boolean ] |
    ANALYSE [ boolean ] |
    VERBOSE [ boolean ] |
    COSTS [ boolean ] |
    CPU [ boolean ] |
    DETAIL [ boolean ] |
    NODES [ boolean ] |
    NUM_NODES [ boolean ] |
    BUFFERS [ boolean ] |
    TIMING [ boolean ] |
    PLAN [ boolean ] |
    FORMAT { TEXT | XML | JSON | YAML }
]]></SubSentence>
  </Command>

  <Command id="FETCH" desc="retrieve rows from a query using a cursor">
    <MainSentence id="SYN"><![CDATA[
FETCH [ direction { FROM | IN } ] cursor_name;
]]></MainSentence>
    <SubSentence id="direction"><![CDATA[
NEXT
   | PRIOR
   | FIRST
   | LAST
   | ABSOLUTE count
   | RELATIVE count
   | count
   | ALL
   | FORWARD
   | FORWARD count
   | FORWARD ALL
   | BACKWARD
   | BACKWARD count
   | BACKWARD ALL
]]></SubSentence>
  </Command>

  <Command id="GRANT" desc="define access privileges">
    <MainSentence id="ON TABLE"><![CDATA[
GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    TO { [ GROUP ] role_name | PUBLIC } [, ...] 
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON COLUMN"><![CDATA[
GRANT { {{ SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )}
    [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON DATABASE"><![CDATA[
GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
    ON DATABASE database_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON DOMAIN"><![CDATA[
GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON DOMAIN domain_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON FDW"><![CDATA[
GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN DATA WRAPPER fdw_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON FOREIGN SERVER"><![CDATA[
GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN SERVER server_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON FUNCTION"><![CDATA[
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
    ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
         | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON LANGUAGE"><![CDATA[
GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE lang_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON LARGE OBJECT"><![CDATA[
GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
    ON LARGE OBJECT loid [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON SCHEMA"><![CDATA[
GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON TABLESPACE"><![CDATA[
GRANT { CREATE | ALL [ PRIVILEGES ] }
    ON TABLESPACE tablespace_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON TYPE"><![CDATA[
GRANT { USAGE | ALL [ PRIVILEGES ] }
    ON TYPE type_name [, ...]
    TO { [ GROUP ] role_name | PUBLIC } [, ...]
    [ WITH GRANT OPTION ];
]]></MainSentence>
    <MainSentence id="ON ROLE"><![CDATA[
GRANT role_name [, ...]
   TO role_name [, ...]
   [ WITH ADMIN OPTION ];
]]></MainSentence>
    <MainSentence id="ALL TO"><![CDATA[
GRANT ALL { PRIVILEGES | PRIVILEGE }
   TO role_name;
]]></MainSentence>
  </Command>

  <Command id="INSERT" desc="create new rows in a table">
    <MainSentence id="INSERT SYN"><![CDATA[
[ WITH [ RECURSIVE ] with_query [, ...] ]
INSERT INTO table_name [ ( column_name [, ...] ) ]
    { DEFAULT VALUES | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] | query }
    [ ON DUPLICATE KEY UPDATE { column_name = { expression | DEFAULT } } [, ...] ]
    [ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ];
]]></MainSentence>
  </Command>

  <Command id="LOCK" desc="lock a table">
    <MainSentence id="SYN"><![CDATA[
LOCK [ TABLE ] {[ ONLY ] name [, ...]| {name [ * ]} [, ...]}
    [ IN {ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE} MODE ]
    [ NOWAIT ];
]]></MainSentence>
  </Command>

  <Command id="MOVE" desc="position a cursor">
    <MainSentence id="SYN"><![CDATA[
MOVE [ direction [ FROM | IN ] ] cursor_name;
]]></MainSentence>
    <SubSentence id="direction"><![CDATA[
NEXT
   | PRIOR
   | FIRST
   | LAST
   | ABSOLUTE count
   | RELATIVE count
   | count
   | ALL
   | FORWARD
   | FORWARD count
   | FORWARD ALL
   | BACKWARD
   | BACKWARD count
   | BACKWARD ALL
]]></SubSentence>
  </Command>

  <Command id="PREPARE" desc="prepare a statement for execution">
    <MainSentence id="SYN"><![CDATA[
PREPARE name [ ( data_type [, ...] ) ] AS statement;
]]></MainSentence>
  </Command>

  <Command id="PREPARE TRANSACTION" desc="prepare the current transaction for two-phase commit">
    <MainSentence id="SYN"><![CDATA[
PREPARE TRANSACTION transaction_id;
]]></MainSentence>
  </Command>

  <Command id="REASSIGN OWNED" desc="change the ownership of database objects owned by a database role">
    <MainSentence id="SYN"><![CDATA[
REASSIGN OWNED BY old_role [, ...] TO new_role;
]]></MainSentence>
  </Command>

  <Command id="REINDEX" desc="rebuild indexes">
    <MainSentence id="REINDEX SYN"><![CDATA[
REINDEX { INDEX | [INTERNAL] TABLE | DATABASE | SYSTEM } name [ FORCE ];
]]></MainSentence>
    <MainSentence id="REINDEX PARTITION"><![CDATA[
REINDEX  { INDEX | [INTERNAL] TABLE  } name
    PARTITION partition_name [ FORCE  ];
]]></MainSentence>
  </Command>

  <Command id="RESET" desc="restore the value of a run-time parameter to the default value">
    <MainSentence id="SYN"><![CDATA[
RESET {configuration_parameter | CURRENT_SCHEMA | TIME ZONE | TRANSACTION ISOLATION LEVEL | SESSION AUTHORIZATION | ALL };
]]></MainSentence>
  </Command>

  <Command id="REVOKE" desc="remove access privileges">
    <MainSentence id="REVOKE ALL"><![CDATA[
REVOKE ALL { PRIVILEGES | PRIVILEGE } FROM role_name;
]]></MainSentence>
    <MainSentence id="ON TABLES"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES }
    [, ...] | ALL [ PRIVILEGES ] }
    ON { [ TABLE ] table_name [, ...]
         | ALL TABLES IN SCHEMA schema_name [, ...] }
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="COLUMNS ON TABLES"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { {{ SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )}
    [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
    ON [ TABLE ] table_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON DATABASE"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
    ON DATABASE database_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON DOMAIN"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON DOMAIN domain_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON FDW"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN DATA WRAPPER fdw_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON FOREIGN SERVER"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON FOREIGN SERVER server_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON FUNCTION"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { EXECUTE | ALL [ PRIVILEGES ] }
    ON { FUNCTION {function_name ( [ {[ argmode ] [ arg_name ] arg_type} [, ...] ] )} [, ...]
         | ALL FUNCTIONS IN SCHEMA schema_name [, ...] }
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON LANGUAGE"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE lang_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON LARGE OBJECT"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
    ON LARGE OBJECT loid [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON SCHEMA"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
    ON SCHEMA schema_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON TABLESPACE"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { CREATE | ALL [ PRIVILEGES ] }
    ON TABLESPACE tablespace_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ON TYPE"><![CDATA[
REVOKE [ GRANT OPTION FOR ]
    { USAGE | ALL [ PRIVILEGES ] }
    ON TYPE type_name [, ...]
    FROM { [ GROUP ] role_name | PUBLIC } [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="ROLE FROM ROLE"><![CDATA[
REVOKE [ ADMIN OPTION FOR ]
    role_name [, ...] FROM role_name [, ...]
    [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="ROLLBACK" desc="abort the current transaction">
    <MainSentence id="SYN"><![CDATA[
ROLLBACK [ WORK | TRANSACTION ];
]]></MainSentence>
  </Command>

  <Command id="ROLLBACK PREPARED" desc="cancel a transaction that was earlier prepared for two-phase commit">
    <MainSentence id="SYN"><![CDATA[
ROLLBACK PREPARED transaction_id;
]]></MainSentence>
  </Command>

  <Command id="SELECT" desc="retrieve rows from a table or view">
    <MainSentence id="SELECT SYN"><![CDATA[
[ WITH [ RECURSIVE ] with_query [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
    { * | {expression [ [ AS ] output_name ]} [, ...] }
    [ FROM from_item [, ...] ]
    [ WHERE condition ]
    [ GROUP BY grouping_element [, ...] ]
    [ HAVING condition [, ...] ]
    [ WINDOW {window_name AS ( window_definition )} [, ...] ]
    [ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ]
    [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ]
    [ LIMIT { count | ALL } ]
    [ OFFSET start [ ROW | ROWS ] ]
    [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
    [ {FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ]} [...] ];
]]></MainSentence>
    <MainSentence id="TABLE SELECT"><![CDATA[
TABLE { ONLY {(table_name)| table_name} | table_name [ * ]};
]]></MainSentence>
    <SubSentence id="from_item"><![CDATA[
[ ONLY ] table_name [ * ] [ partition_clause ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
|( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
|with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
|function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ]
|function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
|from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]
]]></SubSentence>
   <SubSentence id="grouping_element"><![CDATA[
() 
|expression 
|( expression [, ...] ) 
|ROLLUP ( { expression | ( expression [, ...] ) } [, ...] )
|CUBE ( { expression | ( expression [, ...] ) } [, ...] )
|GROUPING SETS ( grouping_element [, ...] )
]]></SubSentence> 
    <SubSentence id="with_query"><![CDATA[
with_query_name [ ( column_name [, ...] ) ] AS ( {select | values | insert | update | delete} )
]]></SubSentence>
    <SubSentence id="partition_clause"><![CDATA[
PARTITION { ( partition_name ) | FOR (  partition_value [, ...] ) }
]]></SubSentence>
    <SubSentence id="nlssort_expression_clause"><![CDATA[
NLSSORT ( column_name, ' NLS_SORT = { SCHINESE_PINYIN_M | generic_m_ci } ' )
]]></SubSentence>
  </Command>

  <Command id="SELECT INTO" desc="define a new table from the results of a query">
    <MainSentence id="SELECT INTO SYN"><![CDATA[
[ WITH [ RECURSIVE ] with_query [, ...] ]
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
    { * | {expression [ [ AS ] output_name ]} [, ...] }
    INTO [ UNLOGGED ] [ TABLE ] new_table
    [ FROM from_item [, ...] ]
    [ WHERE condition ]
    [ GROUP BY expression [, ...] ]
    [ HAVING condition [, ...] ]
    [ WINDOW {window_name AS ( window_definition )} [, ...] ]
    [ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ]
    [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ]
    [ LIMIT { count | ALL } ]
    [ OFFSET start [ ROW | ROWS ] ]
    [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
    [ {FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ]} [...] ];
]]></MainSentence>
  </Command>

  <Command id="SET" desc="change a run-time parameter">
    <MainSentence id="SYN"><![CDATA[
SET [ LOCAL | SESSION ]
    { {config_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }}};
]]></MainSentence>
    <MainSentence id="TIME ZONE"><![CDATA[
SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT };
]]></MainSentence>
    <MainSentence id="NAMES SYN"><![CDATA[
SET [ SESSION | LOCAL ] NAMES encoding_name;
]]></MainSentence>
    <MainSentence id="CURRENT_SCHEMA SYN"><![CDATA[
SET [ SESSION | LOCAL ] 
    {CURRENT_SCHEMA { TO | = } { schema | DEFAULT }
    | SCHEMA 'schema'};
]]></MainSentence>
    <MainSentence id="XML OPTION"><![CDATA[
SET [ SESSION | LOCAL ] XML OPTION { DOCUMENT | CONTENT };
]]></MainSentence>
  </Command>

  <Command id="SET CONSTRAINTS" desc="set constraint check timing for the current transaction">
    <MainSentence id="SYN"><![CDATA[
SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE };
]]></MainSentence>
  </Command>

  <Command id="SET ROLE" desc="set the current user identifier of the current session">
    <MainSentence id="SYN"><![CDATA[
SET [ SESSION | LOCAL ] ROLE role_name PASSWORD 'password';
]]></MainSentence>
    <MainSentence id="RESET ROLE"><![CDATA[
RESET ROLE;
]]></MainSentence>
  </Command>

  <Command id="SET SESSION AUTHORIZATION" desc="set the current user identifier and session identifier of the current session">
    <MainSentence id="SYN"><![CDATA[
SET [ SESSION | LOCAL ] SESSION AUTHORIZATION role_name PASSWORD 'password';
]]></MainSentence>
    <MainSentence id="RESET SESSION AUTHORIZATION"><![CDATA[
{SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
   | RESET SESSION AUTHORIZATION};
]]></MainSentence>
  </Command>

  <Command id="SET TRANSACTION" desc="set the characteristics of the current transaction">
    <MainSentence id="TRANSACTION SYN"><![CDATA[
{SET [ LOCAL ] TRANSACTION|SET SESSION CHARACTERISTICS AS TRANSACTION}
  { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ }
  | { READ WRITE | READ ONLY }
  } [, ...]
]]></MainSentence>
    <MainSentence id="SNAPSHOT SYN"><![CDATA[
SET TRANSACTION SNAPSHOT snapshot_id;
]]></MainSentence>
  </Command>

  <Command id="SHOW" desc="show the value of a run-time parameter">
    <MainSentence id="SYN"><![CDATA[
SHOW { configuration_parameter | CURRENT_SCHEMA | TIME ZONE | TRANSACTION ISOLATION LEVEL | SESSION AUTHORIZATION | ALL };
]]></MainSentence>
  </Command>

  <Command id="START TRANSACTION" desc="start a transaction block">
    <MainSentence id="SYN"><![CDATA[
START TRANSACTION
   [ { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ }
   | { READ WRITE | READ ONLY }
   } [, ...] ];
]]></MainSentence>
  </Command>

  <Command id="TRUNCATE" desc="empty a table or set of tables">
    <MainSentence id="TRUNCATE SYN"><![CDATA[
TRUNCATE [ TABLE ] [ ONLY ] {table_name [ * ]} [, ... ]
    [ CONTINUE IDENTITY ] [ CASCADE | RESTRICT ];
]]></MainSentence>
    <MainSentence id="TRUNCATE PARTITION"><![CDATA[
ALTER TABLE [ IF EXISTS  ] { [ ONLY  ] table_name  | table_name *  | ONLY ( table_name )  } 
    TRUNCATE PARTITION { partition_name  | FOR (  partition_value  [, ...] )  } ;
]]></MainSentence>
  </Command>

  <Command id="UPDATE" desc="update rows of a table">
    <MainSentence id="UPDATE SYN"><![CDATA[
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
    SET {column_name = { expression | DEFAULT } |
          ( column_name [, ...] ) = {( { expression | DEFAULT } [, ...] ) |sub_query }
          }[, ...]
    [ FROM from_list] [ WHERE condition ]
    [ RETURNING {* | {output_expression [ [ AS ] output_name ]} [, ...] }];
]]></MainSentence>
  </Command>

  <Command id="VACUUM" desc="garbage-collect and optionally analyze a database">
    <MainSentence id="WITH BRACKET"><![CDATA[
VACUUM [ ( { FULL | FREEZE | VERBOSE | {ANALYZE | ANALYSE }} [,...] ) ]
    [ table_name [ (column_name [, ...] ) ] ] [ PARTITION ( partition_name ) ];
]]></MainSentence>
    <MainSentence id="JUST TABLE"><![CDATA[
VACUUM [ FULL [ COMPACT ] ] [ FREEZE ] [ VERBOSE ] [ table_name ] [ PARTITION ( partition_name ) ];
]]></MainSentence>
    <MainSentence id="TABLE AND COLUMN"><![CDATA[
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] { ANALYZE | ANALYSE } [ VERBOSE ] 
    [ table_name [ (column_name [, ...] ) ] ] [ PARTITION ( partition_name ) ];
]]></MainSentence>
    <MainSentence id="DELTAMERGE"><![CDATA[
VACUUM DELTAMERGE [ table_name ];
]]></MainSentence>
    <MainSentence id="HDFSDIRECTORY"><![CDATA[
VACUUM HDFSDIRECTORY [ table_name ];
]]></MainSentence>
  </Command>

  <Command id="VALUES" desc="compute a set of rows">
    <MainSentence id="SYN"><![CDATA[
VALUES {( expression [, ...] )} [, ...]
    [ ORDER BY {sort_expression [ ASC | DESC | USING operator ]} [, ...] ]
    [ LIMIT { count | ALL } ]
    [ OFFSET start [ ROW | ROWS ] ]
    [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ];
]]></MainSentence>
  </Command>

  <Command id="CREATE TEXT SEARCH CONFIGURATION" desc="define a new text search configuration">
    <MainSentence id="CREATE"><![CDATA[
 CREATE TEXT SEARCH CONFIGURATION name 
     ( { PARSER = parser_name | COPY = source_config } )
     [ WITH ( {configuration_option = value} [, ...] )];
]]></MainSentence>
  </Command>

  <Command id="ALTER TEXT SEARCH CONFIGURATION" desc="change the definition of a text search configuration">
    <MainSentence id="ADD MAPPING FOR"><![CDATA[
 ALTER TEXT SEARCH CONFIGURATION name
     ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ];
]]></MainSentence>
    <MainSentence id="ALTER MAPPING FOR"><![CDATA[
 ALTER TEXT SEARCH CONFIGURATION name
     ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ];
]]></MainSentence>
    <MainSentence id="ALTER MAPPING FOR ... REPLACE ... WITH"><![CDATA[
 ALTER TEXT SEARCH CONFIGURATION name
     ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary;
]]></MainSentence>
    <MainSentence id="ALTER MAPPING REPLACE"><![CDATA[
 ALTER TEXT SEARCH CONFIGURATION name
     ALTER MAPPING REPLACE old_dictionary WITH new_dictionary;
]]></MainSentence>
    <MainSentence id="DROP MAPPING"><![CDATA[
 ALTER TEXT SEARCH CONFIGURATION name
     DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ];
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
 ALTER TEXT SEARCH CONFIGURATION name RENAME TO new_name;
]]></MainSentence>
    <MainSentence id="OWNER TO"><![CDATA[
 ALTER TEXT SEARCH CONFIGURATION name OWNER TO new_owner;
]]></MainSentence>
    <MainSentence id="SET SCHEMA"><![CDATA[
 ALTER TEXT SEARCH CONFIGURATION name SET SCHEMA new_schema;
]]></MainSentence>
    <MainSentence id="SET"><![CDATA[
 ALTER TEXT SEARCH CONFIGURATION name SET ( {configuration_option = value} [, ...] );
]]></MainSentence>
  </Command>

  <Command id="DROP TEXT SEARCH CONFIGURATION" desc="remove a text search configurationn">
    <MainSentence id="CREATE"><![CDATA[
 DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ];
]]></MainSentence>
  </Command>

  <Command id="CREATE EXTENSION" desc="install an extension">
    <MainSentence id="SYN"><![CDATA[
 CREATE EXTENSION [ IF NOT EXISTS ] extension_name [ WITH ]
     [ SCHEMA schema_name ]
     [ VERSION version ]
     [ FROM old_version ]
]]></MainSentence>
  </Command>

  <Command id="ALTER EXTENSION" desc="change the definition of an extension">
    <MainSentence id="UPDATE"><![CDATA[
 ALTER EXTENSION name UPDATE [ TO new_version ]
]]></MainSentence>
    <MainSentence id="SET"><![CDATA[
 ALTER EXTENSION name SET SCHEMA new_schema
]]></MainSentence>
    <MainSentence id="ADD"><![CDATA[
 ALTER EXTENSION name ADD member_object
]]></MainSentence>
    <MainSentence id="DROP"><![CDATA[
 ALTER EXTENSION name DROP member_object
]]></MainSentence>
    <SubSentence id="member_object"><![CDATA[
  AGGREGATE agg_name (agg_type [, ...] ) |
  CAST (source_type AS target_type) |
  COLLATION object_name |
  CONVERSION object_name |
  DOMAIN object_name |
  FOREIGN DATA WRAPPER object_name |
  FOREIGN TABLE object_name |
  FUNCTION function_name ( [ [ argname ] [ argmode ] argtype [, ...] ] ) |
  MATERIALIZED VIEW object_name |
  OPERATOR operator_name (left_type, right_type) |
  OPERATOR CLASS object_name USING index_method |
  OPERATOR FAMILY object_name USING index_method |
  [ PROCEDURAL ] LANGUAGE object_name |
  SCHEMA object_name |
  SEQUENCE object_name |
  SERVER object_name |
  TABLE object_name |
  TEXT SEARCH CONFIGURATION object_name |
  TEXT SEARCH DICTIONARY object_name |
  TEXT SEARCH PARSER object_name |
  TEXT SEARCH TEMPLATE object_name |
  TYPE object_name |
  VIEW object_name
]]></SubSentence>
  </Command>

  <Command id="DROP EXTENSION" desc="remove an extension">
    <MainSentence id="SYN"><![CDATA[
 DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
]]></MainSentence>
  </Command>

  <Command id="CREATE DATA SOURCE" desc="define a data source">
    <MainSentence id="SYN"><![CDATA[
CREATE DATA SOURCE source_name
    [TYPE 'type_string']
    [VERSION {'version_string' | NULL}]
    [OPTIONS (
        [ DSN 'dsn_string', ]
        [ USERNAME 'uid_string', ]
        [ PASSWORD 'pwd_string', ]
        [ ENCODING 'encoding_string' ]
    )];
]]></MainSentence>
  </Command>

    <Command id="ALTER DATA SOURCE" desc="alter the data source">
    <MainSentence id="SYN"><![CDATA[
ALTER DATA SOURCE source_name
    [TYPE 'type_string'] 
    [VERSION {'version_string' | NULL}] 
    [OPTIONS ({[ADD] optname 'optvalue' | SET optname 'optvalue' | DROP optname} [, ...])];
]]></MainSentence>
    <MainSentence id="RENAME TO"><![CDATA[
ALTER DATA SOURCE source_name
    RENAME TO new_name;
]]></MainSentence>
    <MainSentence id="OWNER TO"><![CDATA[
ALTER DATA SOURCE source_name
    OWNER TO new_owner;
]]></MainSentence>
  </Command>

    <Command id="DROP DATA SOURCE" desc="drop a data source">
    <MainSentence id="SYN"><![CDATA[
DROP DATA SOURCE source_name
    [CASCADE | RESTRICT];
]]></MainSentence>
  </Command>

  <Command id="CREATE SYNONYM" desc="define a synonym">
    <MainSentence id="SYN"><![CDATA[
CREATE [ OR REPLACE ] SYNONYM synonym_name
    FOR object_name;
]]></MainSentence>
  </Command>

    <Command id="DROP SYNONYM" desc="drop a synonym">
    <MainSentence id="SYN"><![CDATA[
DROP SYNONYM [ IF EXISTS ] synonym_name;
]]></MainSentence>
  </Command>