【PostgreSQL】メタコマンド〜\h〜

## 初めに

Qiita Engineer Festa 2024に参加中。完走目指してます。
他のメタコマンドについては以下から読んでください。

[【PostgreSQL】メタコマンドを纏めていく](https://qiita.com/dai_chi/items/04f5339d54130f070671)

## \hとは

\hまたは\help

> 指定したSQLコマンドの構文に関するヘルプを表示します。 `command`が指定されていない場合は、psqlは構文ヘルプが存在する全てのコマンドの一覧を表示します。 `command`をアスタリスク（`*`）にすると、全てのSQLコマンドの構文ヘルプが表示されます。
> 
> 
> 他のほとんどのメタコマンドと異なり、行の残り部分はすべて`\help`の引数であると常に解釈され、引数内の変数の置換も逆引用符の展開も行われません。
> 

[\hについて](https://www.postgresql.jp/docs/15/app-psql.html#:~:text=%5Ch%E3%81%BE%E3%81%9F%E3%81%AF%5Chelp%20%5B%20command%20%5D)

## 試してみた

### コマンド名の一覧表示

```sql
\h
Available help:
  ABORT                            CLOSE                            CREATE VIEW                      DROP USER MAPPING
  ALTER AGGREGATE                  CLUSTER                          DEALLOCATE                       DROP VIEW
  ALTER COLLATION                  COMMENT                          DECLARE                          END
  ALTER CONVERSION                 COMMIT                           DELETE                           EXECUTE
  ALTER DATABASE                   COMMIT PREPARED                  DISCARD                          EXPLAIN
  ALTER DEFAULT PRIVILEGES         COPY                             DO                               FETCH
  ALTER DOMAIN                     CREATE ACCESS METHOD             DROP ACCESS METHOD               GRANT
  ALTER EVENT TRIGGER              CREATE AGGREGATE                 DROP AGGREGATE                   IMPORT FOREIGN SCHEMA
  ALTER EXTENSION                  CREATE CAST                      DROP CAST                        INSERT
  ALTER FOREIGN DATA WRAPPER       CREATE COLLATION                 DROP COLLATION                   LISTEN
  ALTER FOREIGN TABLE              CREATE CONVERSION                DROP CONVERSION                  LOAD
  ALTER FUNCTION                   CREATE DATABASE                  DROP DATABASE                    LOCK
  ALTER GROUP                      CREATE DOMAIN                    DROP DOMAIN                      MERGE
  ALTER INDEX                      CREATE EVENT TRIGGER             DROP EVENT TRIGGER               MOVE
  ALTER LANGUAGE                   CREATE EXTENSION                 DROP EXTENSION                   NOTIFY
  ALTER LARGE OBJECT               CREATE FOREIGN DATA WRAPPER      DROP FOREIGN DATA WRAPPER        PREPARE
  ALTER MATERIALIZED VIEW          CREATE FOREIGN TABLE             DROP FOREIGN TABLE               PREPARE TRANSACTION
  ALTER OPERATOR                   CREATE FUNCTION                  DROP FUNCTION                    REASSIGN OWNED
  ALTER OPERATOR CLASS             CREATE GROUP                     DROP GROUP                       REFRESH MATERIALIZED VIEW
  ALTER OPERATOR FAMILY            CREATE INDEX                     DROP INDEX                       REINDEX
  ALTER POLICY                     CREATE LANGUAGE                  DROP LANGUAGE                    RELEASE SAVEPOINT
  ALTER PROCEDURE                  CREATE MATERIALIZED VIEW         DROP MATERIALIZED VIEW           RESET
  ALTER PUBLICATION                CREATE OPERATOR                  DROP OPERATOR                    REVOKE
  ALTER ROLE                       CREATE OPERATOR CLASS            DROP OPERATOR CLASS              ROLLBACK
  ALTER ROUTINE                    CREATE OPERATOR FAMILY           DROP OPERATOR FAMILY             ROLLBACK PREPARED
  ALTER RULE                       CREATE POLICY                    DROP OWNED                       ROLLBACK TO SAVEPOINT
  ALTER SCHEMA                     CREATE PROCEDURE                 DROP POLICY                      SAVEPOINT
  ALTER SEQUENCE                   CREATE PUBLICATION               DROP PROCEDURE                   SECURITY LABEL
  ALTER SERVER                     CREATE ROLE                      DROP PUBLICATION                 SELECT
  ALTER STATISTICS                 CREATE RULE                      DROP ROLE                        SELECT INTO
  ALTER SUBSCRIPTION               CREATE SCHEMA                    DROP ROUTINE                     SET
  ALTER SYSTEM                     CREATE SEQUENCE                  DROP RULE                        SET CONSTRAINTS
  ALTER TABLE                      CREATE SERVER                    DROP SCHEMA                      SET ROLE
  ALTER TABLESPACE                 CREATE STATISTICS                DROP SEQUENCE                    SET SESSION AUTHORIZATION
  ALTER TEXT SEARCH CONFIGURATION  CREATE SUBSCRIPTION              DROP SERVER                      SET TRANSACTION
  ALTER TEXT SEARCH DICTIONARY     CREATE TABLE                     DROP STATISTICS                  SHOW
  ALTER TEXT SEARCH PARSER         CREATE TABLE AS                  DROP SUBSCRIPTION                START TRANSACTION
  ALTER TEXT SEARCH TEMPLATE       CREATE TABLESPACE                DROP TABLE                       TABLE
  ALTER TRIGGER                    CREATE TEXT SEARCH CONFIGURATION DROP TABLESPACE                  TRUNCATE
  ALTER TYPE                       CREATE TEXT SEARCH DICTIONARY    DROP TEXT SEARCH CONFIGURATION   UNLISTEN
  ALTER USER                       CREATE TEXT SEARCH PARSER        DROP TEXT SEARCH DICTIONARY      UPDATE
  ALTER USER MAPPING               CREATE TEXT SEARCH TEMPLATE      DROP TEXT SEARCH PARSER          VACUUM
  ALTER VIEW                       CREATE TRANSFORM                 DROP TEXT SEARCH TEMPLATE        VALUES
  ANALYZE                          CREATE TRIGGER                   DROP TRANSFORM                   WITH
  BEGIN                            CREATE TYPE                      DROP TRIGGER                     
  CALL                             CREATE USER                      DROP TYPE                        
  CHECKPOINT                       CREATE USER MAPPING              DROP USER  

```

### コマンドの詳細も併せて全て表示（メチャクチャ長いです

<details>

<summary>一覧</summary>
    
    ```bash
    Command:     ABORT
    Description: abort the current transaction
    Syntax:
    ABORT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
    
    URL: https://www.postgresql.org/docs/15/sql-abort.html
    
    Command:     ALTER AGGREGATE
    Description: change the definition of an aggregate function
    Syntax:
    ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
    ALTER AGGREGATE name ( aggregate_signature )
                    OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema
    
    where aggregate_signature is:
    
    * |
    [ argmode ] [ argname ] argtype [ , ... ] |
    [ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]
    
    URL: https://www.postgresql.org/docs/15/sql-alteraggregate.html
    
    Command:     ALTER COLLATION
    Description: change the definition of a collation
    Syntax:
    ALTER COLLATION name REFRESH VERSION
    
    ALTER COLLATION name RENAME TO new_name
    ALTER COLLATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER COLLATION name SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-altercollation.html
    
    Command:     ALTER CONVERSION
    Description: change the definition of a conversion
    Syntax:
    ALTER CONVERSION name RENAME TO new_name
    ALTER CONVERSION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER CONVERSION name SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-alterconversion.html
    
    Command:     ALTER DATABASE
    Description: change a database
    Syntax:
    ALTER DATABASE name [ [ WITH ] option [ ... ] ]
    
    where option can be:
    
        ALLOW_CONNECTIONS allowconn
        CONNECTION LIMIT connlimit
        IS_TEMPLATE istemplate
    
    ALTER DATABASE name RENAME TO new_name
    
    ALTER DATABASE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    
    ALTER DATABASE name SET TABLESPACE new_tablespace
    
    ALTER DATABASE name REFRESH COLLATION VERSION
    
    ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }
    ALTER DATABASE name SET configuration_parameter FROM CURRENT
    ALTER DATABASE name RESET configuration_parameter
    ALTER DATABASE name RESET ALL
    
    URL: https://www.postgresql.org/docs/15/sql-alterdatabase.html
    
    Command:     ALTER DEFAULT PRIVILEGES
    Description: define default access privileges
    Syntax:
    ALTER DEFAULT PRIVILEGES
        [ FOR { ROLE | USER } target_role [, ...] ]
        [ IN SCHEMA schema_name [, ...] ]
        abbreviated_grant_or_revoke
    
    where abbreviated_grant_or_revoke is one of:
    
    GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
        [, ...] | ALL [ PRIVILEGES ] }
        ON TABLES
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    GRANT { { USAGE | SELECT | UPDATE }
        [, ...] | ALL [ PRIVILEGES ] }
        ON SEQUENCES
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    GRANT { EXECUTE | ALL [ PRIVILEGES ] }
        ON { FUNCTIONS | ROUTINES }
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    GRANT { USAGE | ALL [ PRIVILEGES ] }
        ON TYPES
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] }
        ON SCHEMAS
        TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ]
    
    REVOKE [ GRANT OPTION FOR ]
        { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
        [, ...] | ALL [ PRIVILEGES ] }
        ON TABLES
        FROM { [ GROUP ] role_name | PUBLIC } [, ...]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { { USAGE | SELECT | UPDATE }
        [, ...] | ALL [ PRIVILEGES ] }
        ON SEQUENCES
        FROM { [ GROUP ] role_name | PUBLIC } [, ...]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { EXECUTE | ALL [ PRIVILEGES ] }
        ON { FUNCTIONS | ROUTINES }
        FROM { [ GROUP ] role_name | PUBLIC } [, ...]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { USAGE | ALL [ PRIVILEGES ] }
        ON TYPES
        FROM { [ GROUP ] role_name | PUBLIC } [, ...]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { USAGE | CREATE | ALL [ PRIVILEGES ] }
        ON SCHEMAS
        FROM { [ GROUP ] role_name | PUBLIC } [, ...]
        [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-alterdefaultprivileges.html
    
    Command:     ALTER DOMAIN
    Description: change the definition of a domain
    Syntax:
    ALTER DOMAIN name
        { SET DEFAULT expression | DROP DEFAULT }
    ALTER DOMAIN name
        { SET | DROP } NOT NULL
    ALTER DOMAIN name
        ADD domain_constraint [ NOT VALID ]
    ALTER DOMAIN name
        DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
    ALTER DOMAIN name
         RENAME CONSTRAINT constraint_name TO new_constraint_name
    ALTER DOMAIN name
        VALIDATE CONSTRAINT constraint_name
    ALTER DOMAIN name
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER DOMAIN name
        RENAME TO new_name
    ALTER DOMAIN name
        SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-alterdomain.html
    
    Command:     ALTER EVENT TRIGGER
    Description: change the definition of an event trigger
    Syntax:
    ALTER EVENT TRIGGER name DISABLE
    ALTER EVENT TRIGGER name ENABLE [ REPLICA | ALWAYS ]
    ALTER EVENT TRIGGER name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER EVENT TRIGGER name RENAME TO new_name
    
    URL: https://www.postgresql.org/docs/15/sql-altereventtrigger.html
    
    Command:     ALTER EXTENSION
    Description: change the definition of an extension
    Syntax:
    ALTER EXTENSION name UPDATE [ TO new_version ]
    ALTER EXTENSION name SET SCHEMA new_schema
    ALTER EXTENSION name ADD member_object
    ALTER EXTENSION name DROP member_object
    
    where member_object is:
    
      ACCESS METHOD object_name |
      AGGREGATE aggregate_name ( aggregate_signature ) |
      CAST (source_type AS target_type) |
      COLLATION object_name |
      CONVERSION object_name |
      DOMAIN object_name |
      EVENT TRIGGER object_name |
      FOREIGN DATA WRAPPER object_name |
      FOREIGN TABLE object_name |
      FUNCTION function_name [ ( [ [ argmode ] [ argname ] 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 |
      PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
      ROUTINE routine_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
      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 |
      TRANSFORM FOR type_name LANGUAGE lang_name |
      TYPE object_name |
      VIEW object_name
    
    and aggregate_signature is:
    
    * |
    [ argmode ] [ argname ] argtype [ , ... ] |
    [ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]
    
    URL: https://www.postgresql.org/docs/15/sql-alterextension.html
    
    Command:     ALTER FOREIGN DATA WRAPPER
    Description: change the definition of a foreign-data wrapper
    Syntax:
    ALTER FOREIGN DATA WRAPPER name
        [ HANDLER handler_function | NO HANDLER ]
        [ VALIDATOR validator_function | NO VALIDATOR ]
        [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ]
    ALTER FOREIGN DATA WRAPPER name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER FOREIGN DATA WRAPPER name RENAME TO new_name
    
    URL: https://www.postgresql.org/docs/15/sql-alterforeigndatawrapper.html
    
    Command:     ALTER FOREIGN TABLE
    Description: change the definition of a foreign table
    Syntax:
    ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
        action [, ... ]
    ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
        RENAME [ COLUMN ] column_name TO new_column_name
    ALTER FOREIGN TABLE [ IF EXISTS ] name
        RENAME TO new_name
    ALTER FOREIGN TABLE [ IF EXISTS ] name
        SET SCHEMA new_schema
    
    where action is one of:
    
        ADD [ COLUMN ] column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
        DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
        ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ]
        ALTER [ COLUMN ] column_name SET DEFAULT expression
        ALTER [ COLUMN ] column_name DROP DEFAULT
        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 SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
        ALTER [ COLUMN ] column_name OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ])
        ADD table_constraint [ NOT VALID ]
        VALIDATE CONSTRAINT constraint_name
        DROP CONSTRAINT [ IF EXISTS ]  constraint_name [ RESTRICT | CASCADE ]
        DISABLE TRIGGER [ trigger_name | ALL | USER ]
        ENABLE TRIGGER [ trigger_name | ALL | USER ]
        ENABLE REPLICA TRIGGER trigger_name
        ENABLE ALWAYS TRIGGER trigger_name
        SET WITHOUT OIDS
        INHERIT parent_table
        NO INHERIT parent_table
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
        OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ])
    
    URL: https://www.postgresql.org/docs/15/sql-alterforeigntable.html
    
    Command:     ALTER FUNCTION
    Description: change the definition of a function
    Syntax:
    ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        action [ ... ] [ RESTRICT ]
    ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        RENAME TO new_name
    ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        SET SCHEMA new_schema
    ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        [ NO ] DEPENDS ON EXTENSION extension_name
    
    where action is one of:
    
        CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
        IMMUTABLE | STABLE | VOLATILE
        [ NOT ] LEAKPROOF
        [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
        PARALLEL { UNSAFE | RESTRICTED | SAFE }
        COST execution_cost
        ROWS result_rows
        SUPPORT support_function
        SET configuration_parameter { TO | = } { value | DEFAULT }
        SET configuration_parameter FROM CURRENT
        RESET configuration_parameter
        RESET ALL
    
    URL: https://www.postgresql.org/docs/15/sql-alterfunction.html
    
    Command:     ALTER GROUP
    Description: change role name or membership
    Syntax:
    ALTER GROUP role_specification ADD USER user_name [, ... ]
    ALTER GROUP role_specification DROP USER user_name [, ... ]
    
    where role_specification can be:
    
        role_name
      | CURRENT_ROLE
      | CURRENT_USER
      | SESSION_USER
    
    ALTER GROUP group_name RENAME TO new_name
    
    URL: https://www.postgresql.org/docs/15/sql-altergroup.html
    
    Command:     ALTER INDEX
    Description: change the definition of an index
    Syntax:
    ALTER INDEX [ IF EXISTS ] name RENAME TO new_name
    ALTER INDEX [ IF EXISTS ] name SET TABLESPACE tablespace_name
    ALTER INDEX name ATTACH PARTITION index_name
    ALTER INDEX name [ NO ] DEPENDS ON EXTENSION extension_name
    ALTER INDEX [ IF EXISTS ] name SET ( storage_parameter [= value] [, ... ] )
    ALTER INDEX [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
    ALTER INDEX [ IF EXISTS ] name ALTER [ COLUMN ] column_number
        SET STATISTICS integer
    ALTER INDEX ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
        SET TABLESPACE new_tablespace [ NOWAIT ]
    
    URL: https://www.postgresql.org/docs/15/sql-alterindex.html
    
    Command:     ALTER LANGUAGE
    Description: change the definition of a procedural language
    Syntax:
    ALTER [ PROCEDURAL ] LANGUAGE name RENAME TO new_name
    ALTER [ PROCEDURAL ] LANGUAGE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    
    URL: https://www.postgresql.org/docs/15/sql-alterlanguage.html
    
    Command:     ALTER LARGE OBJECT
    Description: change the definition of a large object
    Syntax:
    ALTER LARGE OBJECT large_object_oid OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    
    URL: https://www.postgresql.org/docs/15/sql-alterlargeobject.html
    
    Command:     ALTER MATERIALIZED VIEW
    Description: change the definition of a materialized view
    Syntax:
    ALTER MATERIALIZED VIEW [ IF EXISTS ] name
        action [, ... ]
    ALTER MATERIALIZED VIEW name
        [ NO ] DEPENDS ON EXTENSION extension_name
    ALTER MATERIALIZED VIEW [ IF EXISTS ] name
        RENAME [ COLUMN ] column_name TO new_column_name
    ALTER MATERIALIZED VIEW [ IF EXISTS ] name
        RENAME TO new_name
    ALTER MATERIALIZED VIEW [ IF EXISTS ] name
        SET SCHEMA new_schema
    ALTER MATERIALIZED VIEW ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
        SET TABLESPACE new_tablespace [ NOWAIT ]
    
    where action is one of:
    
        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 SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
        ALTER [ COLUMN ] column_name SET COMPRESSION compression_method
        CLUSTER ON index_name
        SET WITHOUT CLUSTER
        SET ACCESS METHOD new_access_method
        SET TABLESPACE new_tablespace
        SET ( storage_parameter [= value] [, ... ] )
        RESET ( storage_parameter [, ... ] )
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    
    URL: https://www.postgresql.org/docs/15/sql-altermaterializedview.html
    
    Command:     ALTER OPERATOR
    Description: change the definition of an operator
    Syntax:
    ALTER OPERATOR name ( { left_type | NONE } , right_type )
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    
    ALTER OPERATOR name ( { left_type | NONE } , right_type )
        SET SCHEMA new_schema
    
    ALTER OPERATOR name ( { left_type | NONE } , right_type )
        SET ( {  RESTRICT = { res_proc | NONE }
               | JOIN = { join_proc | NONE }
             } [, ... ] )
    
    URL: https://www.postgresql.org/docs/15/sql-alteroperator.html
    
    Command:     ALTER OPERATOR CLASS
    Description: change the definition of an operator class
    Syntax:
    ALTER OPERATOR CLASS name USING index_method
        RENAME TO new_name
    
    ALTER OPERATOR CLASS name USING index_method
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    
    ALTER OPERATOR CLASS name USING index_method
        SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-alteropclass.html
    
    Command:     ALTER OPERATOR FAMILY
    Description: change the definition of an operator family
    Syntax:
    ALTER OPERATOR FAMILY name USING index_method ADD
      {  OPERATOR strategy_number operator_name ( op_type, op_type )
                  [ FOR SEARCH | FOR ORDER BY sort_family_name ]
       | FUNCTION support_number [ ( op_type [ , op_type ] ) ]
                  function_name [ ( argument_type [, ...] ) ]
      } [, ... ]
    
    ALTER OPERATOR FAMILY name USING index_method DROP
      {  OPERATOR strategy_number ( op_type [ , op_type ] )
       | FUNCTION support_number ( op_type [ , op_type ] )
      } [, ... ]
    
    ALTER OPERATOR FAMILY name USING index_method
        RENAME TO new_name
    
    ALTER OPERATOR FAMILY name USING index_method
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    
    ALTER OPERATOR FAMILY name USING index_method
        SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-alteropfamily.html
    
    Command:     ALTER POLICY
    Description: change the definition of a row-level security policy
    Syntax:
    ALTER POLICY name ON table_name RENAME TO new_name
    
    ALTER POLICY name ON table_name
        [ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
        [ USING ( using_expression ) ]
        [ WITH CHECK ( check_expression ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-alterpolicy.html
    
    Command:     ALTER PROCEDURE
    Description: change the definition of a procedure
    Syntax:
    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        action [ ... ] [ RESTRICT ]
    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        RENAME TO new_name
    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        SET SCHEMA new_schema
    ALTER PROCEDURE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        [ NO ] DEPENDS ON EXTENSION extension_name
    
    where action is one of:
    
        [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
        SET configuration_parameter { TO | = } { value | DEFAULT }
        SET configuration_parameter FROM CURRENT
        RESET configuration_parameter
        RESET ALL
    
    URL: https://www.postgresql.org/docs/15/sql-alterprocedure.html
    
    Command:     ALTER PUBLICATION
    Description: change the definition of a publication
    Syntax:
    ALTER PUBLICATION name ADD publication_object [, ...]
    ALTER PUBLICATION name SET publication_object [, ...]
    ALTER PUBLICATION name DROP publication_object [, ...]
    ALTER PUBLICATION name SET ( publication_parameter [= value] [, ... ] )
    ALTER PUBLICATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER PUBLICATION name RENAME TO new_name
    
    where publication_object is one of:
    
        TABLE [ ONLY ] table_name [ * ] [ ( column_name [, ... ] ) ] [ WHERE ( expression ) ] [, ... ]
        TABLES IN SCHEMA { schema_name | CURRENT_SCHEMA } [, ... ]
    
    URL: https://www.postgresql.org/docs/15/sql-alterpublication.html
    
    Command:     ALTER ROLE
    Description: change a database role
    Syntax:
    ALTER ROLE role_specification [ WITH ] option [ ... ]
    
    where option can be:
    
          SUPERUSER | NOSUPERUSER
        | CREATEDB | NOCREATEDB
        | CREATEROLE | NOCREATEROLE
        | INHERIT | NOINHERIT
        | LOGIN | NOLOGIN
        | REPLICATION | NOREPLICATION
        | BYPASSRLS | NOBYPASSRLS
        | CONNECTION LIMIT connlimit
        | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
        | VALID UNTIL 'timestamp'
    
    ALTER ROLE name RENAME TO new_name
    
    ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
    ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
    ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
    ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL
    
    where role_specification can be:
    
        role_name
      | CURRENT_ROLE
      | CURRENT_USER
      | SESSION_USER
    
    URL: https://www.postgresql.org/docs/15/sql-alterrole.html
    
    Command:     ALTER ROUTINE
    Description: change the definition of a routine
    Syntax:
    ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        action [ ... ] [ RESTRICT ]
    ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        RENAME TO new_name
    ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        SET SCHEMA new_schema
    ALTER ROUTINE name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
        [ NO ] DEPENDS ON EXTENSION extension_name
    
    where action is one of:
    
        IMMUTABLE | STABLE | VOLATILE
        [ NOT ] LEAKPROOF
        [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
        PARALLEL { UNSAFE | RESTRICTED | SAFE }
        COST execution_cost
        ROWS result_rows
        SET configuration_parameter { TO | = } { value | DEFAULT }
        SET configuration_parameter FROM CURRENT
        RESET configuration_parameter
        RESET ALL
    
    URL: https://www.postgresql.org/docs/15/sql-alterroutine.html
    
    Command:     ALTER RULE
    Description: change the definition of a rule
    Syntax:
    ALTER RULE name ON table_name RENAME TO new_name
    
    URL: https://www.postgresql.org/docs/15/sql-alterrule.html
    
    Command:     ALTER SCHEMA
    Description: change the definition of a schema
    Syntax:
    ALTER SCHEMA name RENAME TO new_name
    ALTER SCHEMA name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    
    URL: https://www.postgresql.org/docs/15/sql-alterschema.html
    
    Command:     ALTER SEQUENCE
    Description: change the definition of a sequence generator
    Syntax:
    ALTER SEQUENCE [ IF EXISTS ] name
        [ AS data_type ]
        [ INCREMENT [ BY ] increment ]
        [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
        [ START [ WITH ] start ]
        [ RESTART [ [ WITH ] restart ] ]
        [ CACHE cache ] [ [ NO ] CYCLE ]
        [ OWNED BY { table_name.column_name | NONE } ]
    ALTER SEQUENCE [ IF EXISTS ] name SET { LOGGED | UNLOGGED }
    ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name
    ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-altersequence.html
    
    Command:     ALTER SERVER
    Description: change the definition of a foreign server
    Syntax:
    ALTER SERVER name [ VERSION 'new_version' ]
        [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] ) ]
    ALTER SERVER name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER SERVER name RENAME TO new_name
    
    URL: https://www.postgresql.org/docs/15/sql-alterserver.html
    
    Command:     ALTER STATISTICS
    Description: change the definition of an extended statistics object
    Syntax:
    ALTER STATISTICS name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER STATISTICS name RENAME TO new_name
    ALTER STATISTICS name SET SCHEMA new_schema
    ALTER STATISTICS name SET STATISTICS new_target
    
    URL: https://www.postgresql.org/docs/15/sql-alterstatistics.html
    
    Command:     ALTER SUBSCRIPTION
    Description: change the definition of a subscription
    Syntax:
    ALTER SUBSCRIPTION name CONNECTION 'conninfo'
    ALTER SUBSCRIPTION name SET PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
    ALTER SUBSCRIPTION name ADD PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
    ALTER SUBSCRIPTION name DROP PUBLICATION publication_name [, ...] [ WITH ( publication_option [= value] [, ... ] ) ]
    ALTER SUBSCRIPTION name REFRESH PUBLICATION [ WITH ( refresh_option [= value] [, ... ] ) ]
    ALTER SUBSCRIPTION name ENABLE
    ALTER SUBSCRIPTION name DISABLE
    ALTER SUBSCRIPTION name SET ( subscription_parameter [= value] [, ... ] )
    ALTER SUBSCRIPTION name SKIP ( skip_option = value )
    ALTER SUBSCRIPTION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER SUBSCRIPTION name RENAME TO new_name
    
    URL: https://www.postgresql.org/docs/15/sql-altersubscription.html
    
    Command:     ALTER SYSTEM
    Description: change a server configuration parameter
    Syntax:
    ALTER SYSTEM SET configuration_parameter { TO | = } { value [, ...] | DEFAULT }
    
    ALTER SYSTEM RESET configuration_parameter
    ALTER SYSTEM RESET ALL
    
    URL: https://www.postgresql.org/docs/15/sql-altersystem.html
    
    Command:     ALTER TABLE
    Description: change the definition of a table
    Syntax:
    ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
        action [, ... ]
    ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
        RENAME [ COLUMN ] column_name TO new_column_name
    ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
        RENAME CONSTRAINT constraint_name TO new_constraint_name
    ALTER TABLE [ IF EXISTS ] name
        RENAME TO new_name
    ALTER TABLE [ IF EXISTS ] name
        SET SCHEMA new_schema
    ALTER TABLE ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
        SET TABLESPACE new_tablespace [ NOWAIT ]
    ALTER TABLE [ IF EXISTS ] name
        ATTACH PARTITION partition_name { FOR VALUES partition_bound_spec | DEFAULT }
    ALTER TABLE [ IF EXISTS ] name
        DETACH PARTITION partition_name [ CONCURRENTLY | FINALIZE ]
    
    where action is one of:
    
        ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
        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
        ALTER [ COLUMN ] column_name DROP DEFAULT
        ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
        ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ]
        ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ]
        ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...]
        ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ]
        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 SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
        ALTER [ COLUMN ] column_name SET COMPRESSION compression_method
        ADD table_constraint [ NOT VALID ]
        ADD table_constraint_using_index
        ALTER CONSTRAINT constraint_name [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
        VALIDATE CONSTRAINT constraint_name
        DROP CONSTRAINT [ IF EXISTS ]  constraint_name [ RESTRICT | CASCADE ]
        DISABLE TRIGGER [ trigger_name | ALL | USER ]
        ENABLE TRIGGER [ trigger_name | ALL | USER ]
        ENABLE REPLICA TRIGGER trigger_name
        ENABLE ALWAYS TRIGGER trigger_name
        DISABLE RULE rewrite_rule_name
        ENABLE RULE rewrite_rule_name
        ENABLE REPLICA RULE rewrite_rule_name
        ENABLE ALWAYS RULE rewrite_rule_name
        DISABLE ROW LEVEL SECURITY
        ENABLE ROW LEVEL SECURITY
        FORCE ROW LEVEL SECURITY
        NO FORCE ROW LEVEL SECURITY
        CLUSTER ON index_name
        SET WITHOUT CLUSTER
        SET WITHOUT OIDS
        SET ACCESS METHOD new_access_method
        SET TABLESPACE new_tablespace
        SET { LOGGED | UNLOGGED }
        SET ( storage_parameter [= value] [, ... ] )
        RESET ( storage_parameter [, ... ] )
        INHERIT parent_table
        NO INHERIT parent_table
        OF type_name
        NOT OF
        OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
        REPLICA IDENTITY { DEFAULT | USING INDEX index_name | FULL | NOTHING }
    
    and partition_bound_spec is:
    
    IN ( partition_bound_expr [, ...] ) |
    FROM ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] )
      TO ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] ) |
    WITH ( MODULUS numeric_literal, REMAINDER numeric_literal )
    
    and column_constraint is:
    
    [ CONSTRAINT constraint_name ]
    { NOT NULL |
      NULL |
      CHECK ( expression ) [ NO INHERIT ] |
      DEFAULT default_expr |
      GENERATED ALWAYS AS ( generation_expr ) STORED |
      GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] |
      UNIQUE [ NULLS [ NOT ] DISTINCT ] index_parameters |
      PRIMARY KEY index_parameters |
      REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
        [ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
    [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
    
    and table_constraint is:
    
    [ CONSTRAINT constraint_name ]
    { CHECK ( expression ) [ NO INHERIT ] |
      UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] ) index_parameters |
      PRIMARY KEY ( column_name [, ... ] ) index_parameters |
      EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] |
      FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
        [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
    [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
    
    and table_constraint_using_index is:
    
        [ CONSTRAINT constraint_name ]
        { UNIQUE | PRIMARY KEY } USING INDEX index_name
        [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
    
    index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:
    
    [ INCLUDE ( column_name [, ... ] ) ]
    [ WITH ( storage_parameter [= value] [, ... ] ) ]
    [ USING INDEX TABLESPACE tablespace_name ]
    
    exclude_element in an EXCLUDE constraint is:
    
    { column_name | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
    
    referential_action in a FOREIGN KEY/REFERENCES constraint is:
    
    { NO ACTION | RESTRICT | CASCADE | SET NULL [ ( column_name [, ... ] ) ] | SET DEFAULT [ ( column_name [, ... ] ) ] }
    
    URL: https://www.postgresql.org/docs/15/sql-altertable.html
    
    Command:     ALTER TABLESPACE
    Description: change the definition of a tablespace
    Syntax:
    ALTER TABLESPACE name RENAME TO new_name
    ALTER TABLESPACE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER TABLESPACE name SET ( tablespace_option = value [, ... ] )
    ALTER TABLESPACE name RESET ( tablespace_option [, ... ] )
    
    URL: https://www.postgresql.org/docs/15/sql-altertablespace.html
    
    Command:     ALTER TEXT SEARCH CONFIGURATION
    Description: change the definition of a text search configuration
    Syntax:
    ALTER TEXT SEARCH CONFIGURATION name
        ADD MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]
    ALTER TEXT SEARCH CONFIGURATION name
        ALTER MAPPING FOR token_type [, ... ] WITH dictionary_name [, ... ]
    ALTER TEXT SEARCH CONFIGURATION name
        ALTER MAPPING REPLACE old_dictionary WITH new_dictionary
    ALTER TEXT SEARCH CONFIGURATION name
        ALTER MAPPING FOR token_type [, ... ] REPLACE old_dictionary WITH new_dictionary
    ALTER TEXT SEARCH CONFIGURATION name
        DROP MAPPING [ IF EXISTS ] FOR token_type [, ... ]
    ALTER TEXT SEARCH CONFIGURATION name RENAME TO new_name
    ALTER TEXT SEARCH CONFIGURATION name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER TEXT SEARCH CONFIGURATION name SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-altertsconfig.html
    
    Command:     ALTER TEXT SEARCH DICTIONARY
    Description: change the definition of a text search dictionary
    Syntax:
    ALTER TEXT SEARCH DICTIONARY name (
        option [ = value ] [, ... ]
    )
    ALTER TEXT SEARCH DICTIONARY name RENAME TO new_name
    ALTER TEXT SEARCH DICTIONARY name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER TEXT SEARCH DICTIONARY name SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-altertsdictionary.html
    
    Command:     ALTER TEXT SEARCH PARSER
    Description: change the definition of a text search parser
    Syntax:
    ALTER TEXT SEARCH PARSER name RENAME TO new_name
    ALTER TEXT SEARCH PARSER name SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-altertsparser.html
    
    Command:     ALTER TEXT SEARCH TEMPLATE
    Description: change the definition of a text search template
    Syntax:
    ALTER TEXT SEARCH TEMPLATE name RENAME TO new_name
    ALTER TEXT SEARCH TEMPLATE name SET SCHEMA new_schema
    
    URL: https://www.postgresql.org/docs/15/sql-altertstemplate.html
    
    Command:     ALTER TRIGGER
    Description: change the definition of a trigger
    Syntax:
    ALTER TRIGGER name ON table_name RENAME TO new_name
    ALTER TRIGGER name ON table_name [ NO ] DEPENDS ON EXTENSION extension_name
    
    URL: https://www.postgresql.org/docs/15/sql-altertrigger.html
    
    Command:     ALTER TYPE
    Description: change the definition of a type
    Syntax:
    ALTER TYPE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER TYPE name RENAME TO new_name
    ALTER TYPE name SET SCHEMA new_schema
    ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ]
    ALTER TYPE name action [, ... ]
    ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ]
    ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value
    ALTER TYPE name SET ( property = value [, ... ] )
    
    where action is one of:
    
        ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
        DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ]
        ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-altertype.html
    
    Command:     ALTER USER
    Description: change a database role
    Syntax:
    ALTER USER role_specification [ WITH ] option [ ... ]
    
    where option can be:
    
          SUPERUSER | NOSUPERUSER
        | CREATEDB | NOCREATEDB
        | CREATEROLE | NOCREATEROLE
        | INHERIT | NOINHERIT
        | LOGIN | NOLOGIN
        | REPLICATION | NOREPLICATION
        | BYPASSRLS | NOBYPASSRLS
        | CONNECTION LIMIT connlimit
        | [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
        | VALID UNTIL 'timestamp'
    
    ALTER USER name RENAME TO new_name
    
    ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
    ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
    ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
    ALTER USER { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL
    
    where role_specification can be:
    
        role_name
      | CURRENT_ROLE
      | CURRENT_USER
      | SESSION_USER
    
    URL: https://www.postgresql.org/docs/15/sql-alteruser.html
    
    Command:     ALTER USER MAPPING
    Description: change the definition of a user mapping
    Syntax:
    ALTER USER MAPPING FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | SESSION_USER | PUBLIC }
        SERVER server_name
        OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ] )
    
    URL: https://www.postgresql.org/docs/15/sql-alterusermapping.html
    
    Command:     ALTER VIEW
    Description: change the definition of a view
    Syntax:
    ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
    ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
    ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name
    ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
    ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
    ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
    ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )
    
    URL: https://www.postgresql.org/docs/15/sql-alterview.html
    
    Command:     ANALYZE
    Description: collect statistics about a database
    Syntax:
    ANALYZE [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
    ANALYZE [ VERBOSE ] [ table_and_columns [, ...] ]
    
    where option can be one of:
    
        VERBOSE [ boolean ]
        SKIP_LOCKED [ boolean ]
    
    and table_and_columns is:
    
        table_name [ ( column_name [, ...] ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-analyze.html
    
    Command:     BEGIN
    Description: start a transaction block
    Syntax:
    BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
    
    where transaction_mode is one of:
    
        ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
        READ WRITE | READ ONLY
        [ NOT ] DEFERRABLE
    
    URL: https://www.postgresql.org/docs/15/sql-begin.html
    
    Command:     CALL
    Description: invoke a procedure
    Syntax:
    CALL name ( [ argument ] [, ...] )
    
    URL: https://www.postgresql.org/docs/15/sql-call.html
    
    Command:     CHECKPOINT
    Description: force a write-ahead log checkpoint
    Syntax:
    CHECKPOINT
    
    URL: https://www.postgresql.org/docs/15/sql-checkpoint.html
    
    Command:     CLOSE
    Description: close a cursor
    Syntax:
    CLOSE { name | ALL }
    
    URL: https://www.postgresql.org/docs/15/sql-close.html
    
    Command:     CLUSTER
    Description: cluster a table according to an index
    Syntax:
    CLUSTER [VERBOSE] table_name [ USING index_name ]
    CLUSTER ( option [, ...] ) table_name [ USING index_name ]
    CLUSTER [VERBOSE]
    
    where option can be one of:
    
        VERBOSE [ boolean ]
    
    URL: https://www.postgresql.org/docs/15/sql-cluster.html
    
    Command:     COMMENT
    Description: define or change the comment of an object
    Syntax:
    COMMENT ON
    {
      ACCESS METHOD object_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 [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
      INDEX object_name |
      LARGE OBJECT large_object_oid |
      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 |
      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 { string_literal | NULL }
    
    where aggregate_signature is:
    
    * |
    [ argmode ] [ argname ] argtype [ , ... ] |
    [ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]
    
    URL: https://www.postgresql.org/docs/15/sql-comment.html
    
    Command:     COMMIT
    Description: commit the current transaction
    Syntax:
    COMMIT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
    
    URL: https://www.postgresql.org/docs/15/sql-commit.html
    
    Command:     COMMIT PREPARED
    Description: commit a transaction that was earlier prepared for two-phase commit
    Syntax:
    COMMIT PREPARED transaction_id
    
    URL: https://www.postgresql.org/docs/15/sql-commit-prepared.html
    
    Command:     COPY
    Description: copy data between a file and a table
    Syntax:
    COPY table_name [ ( column_name [, ...] ) ]
        FROM { 'filename' | PROGRAM 'command' | STDIN }
        [ [ WITH ] ( option [, ...] ) ]
        [ WHERE condition ]
    
    COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
        TO { 'filename' | PROGRAM 'command' | STDOUT }
        [ [ WITH ] ( option [, ...] ) ]
    
    where option can be one of:
    
        FORMAT format_name
        FREEZE [ boolean ]
        DELIMITER 'delimiter_character'
        NULL 'null_string'
        HEADER [ boolean | MATCH ]
        QUOTE 'quote_character'
        ESCAPE 'escape_character'
        FORCE_QUOTE { ( column_name [, ...] ) | * }
        FORCE_NOT_NULL ( column_name [, ...] )
        FORCE_NULL ( column_name [, ...] )
        ENCODING 'encoding_name'
    
    URL: https://www.postgresql.org/docs/15/sql-copy.html
    
    Command:     CREATE ACCESS METHOD
    Description: define a new access method
    Syntax:
    CREATE ACCESS METHOD name
        TYPE access_method_type
        HANDLER handler_function
    
    URL: https://www.postgresql.org/docs/15/sql-create-access-method.html
    
    Command:     CREATE AGGREGATE
    Description: define a new aggregate function
    Syntax:
    CREATE [ OR REPLACE ] AGGREGATE name ( [ argmode ] [ argname ] arg_data_type [ , ... ] ) (
        SFUNC = sfunc,
        STYPE = state_data_type
        [ , 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 } ]
    )
    
    CREATE [ OR REPLACE ] AGGREGATE name ( [ [ argmode ] [ argname ] arg_data_type [ , ... ] ]
                            ORDER BY [ argmode ] [ argname ] arg_data_type [ , ... ] ) (
        SFUNC = sfunc,
        STYPE = state_data_type
        [ , SSPACE = state_data_size ]
        [ , FINALFUNC = ffunc ]
        [ , FINALFUNC_EXTRA ]
        [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]
        [ , INITCOND = initial_condition ]
        [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]
        [ , HYPOTHETICAL ]
    )
    
    or the old syntax
    
    CREATE [ OR REPLACE ] AGGREGATE name (
        BASETYPE = base_type,
        SFUNC = sfunc,
        STYPE = state_data_type
        [ , 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 ]
    )
    
    URL: https://www.postgresql.org/docs/15/sql-createaggregate.html
    
    Command:     CREATE CAST
    Description: define a new cast
    Syntax:
    CREATE CAST (source_type AS target_type)
        WITH FUNCTION function_name [ (argument_type [, ...]) ]
        [ AS ASSIGNMENT | AS IMPLICIT ]
    
    CREATE CAST (source_type AS target_type)
        WITHOUT FUNCTION
        [ AS ASSIGNMENT | AS IMPLICIT ]
    
    CREATE CAST (source_type AS target_type)
        WITH INOUT
        [ AS ASSIGNMENT | AS IMPLICIT ]
    
    URL: https://www.postgresql.org/docs/15/sql-createcast.html
    
    Command:     CREATE COLLATION
    Description: define a new collation
    Syntax:
    CREATE COLLATION [ IF NOT EXISTS ] name (
        [ LOCALE = locale, ]
        [ LC_COLLATE = lc_collate, ]
        [ LC_CTYPE = lc_ctype, ]
        [ PROVIDER = provider, ]
        [ DETERMINISTIC = boolean, ]
        [ VERSION = version ]
    )
    CREATE COLLATION [ IF NOT EXISTS ] name FROM existing_collation
    
    URL: https://www.postgresql.org/docs/15/sql-createcollation.html
    
    Command:     CREATE CONVERSION
    Description: define a new encoding conversion
    Syntax:
    CREATE [ DEFAULT ] CONVERSION name
        FOR source_encoding TO dest_encoding FROM function_name
    
    URL: https://www.postgresql.org/docs/15/sql-createconversion.html
    
    Command:     CREATE DATABASE
    Description: create a new database
    Syntax:
    CREATE DATABASE name
        [ WITH ] [ OWNER [=] user_name ]
               [ TEMPLATE [=] template ]
               [ ENCODING [=] encoding ]
               [ STRATEGY [=] strategy ] ]
               [ LOCALE [=] locale ]
               [ LC_COLLATE [=] lc_collate ]
               [ LC_CTYPE [=] lc_ctype ]
               [ ICU_LOCALE [=] icu_locale ]
               [ LOCALE_PROVIDER [=] locale_provider ]
               [ COLLATION_VERSION = collation_version ]
               [ TABLESPACE [=] tablespace_name ]
               [ ALLOW_CONNECTIONS [=] allowconn ]
               [ CONNECTION LIMIT [=] connlimit ]
               [ IS_TEMPLATE [=] istemplate ]
               [ OID [=] oid ]
    
    URL: https://www.postgresql.org/docs/15/sql-createdatabase.html
    
    Command:     CREATE DOMAIN
    Description: define a new domain
    Syntax:
    CREATE DOMAIN name [ AS ] data_type
        [ COLLATE collation ]
        [ DEFAULT expression ]
        [ constraint [ ... ] ]
    
    where constraint is:
    
    [ CONSTRAINT constraint_name ]
    { NOT NULL | NULL | CHECK (expression) }
    
    URL: https://www.postgresql.org/docs/15/sql-createdomain.html
    
    Command:     CREATE EVENT TRIGGER
    Description: define a new event trigger
    Syntax:
    CREATE EVENT TRIGGER name
        ON event
        [ WHEN filter_variable IN (filter_value [, ... ]) [ AND ... ] ]
        EXECUTE { FUNCTION | PROCEDURE } function_name()
    
    URL: https://www.postgresql.org/docs/15/sql-createeventtrigger.html
    
    Command:     CREATE EXTENSION
    Description: install an extension
    Syntax:
    CREATE EXTENSION [ IF NOT EXISTS ] extension_name
        [ WITH ] [ SCHEMA schema_name ]
                 [ VERSION version ]
                 [ CASCADE ]
    
    URL: https://www.postgresql.org/docs/15/sql-createextension.html
    
    Command:     CREATE FOREIGN DATA WRAPPER
    Description: define a new foreign-data wrapper
    Syntax:
    CREATE FOREIGN DATA WRAPPER name
        [ HANDLER handler_function | NO HANDLER ]
        [ VALIDATOR validator_function | NO VALIDATOR ]
        [ OPTIONS ( option 'value' [, ... ] ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-createforeigndatawrapper.html
    
    Command:     CREATE FOREIGN TABLE
    Description: define a new foreign table
    Syntax:
    CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [
      { column_name data_type [ OPTIONS ( option 'value' [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ]
        | table_constraint }
        [, ... ]
    ] )
    [ INHERITS ( parent_table [, ... ] ) ]
      SERVER server_name
    [ OPTIONS ( option 'value' [, ... ] ) ]
    
    CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name
      PARTITION OF parent_table [ (
      { column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ]
        | table_constraint }
        [, ... ]
    ) ]
    { FOR VALUES partition_bound_spec | DEFAULT }
      SERVER server_name
    [ OPTIONS ( option 'value' [, ... ] ) ]
    
    where column_constraint is:
    
    [ CONSTRAINT constraint_name ]
    { NOT NULL |
      NULL |
      CHECK ( expression ) [ NO INHERIT ] |
      DEFAULT default_expr |
      GENERATED ALWAYS AS ( generation_expr ) STORED }
    
    and table_constraint is:
    
    [ CONSTRAINT constraint_name ]
    CHECK ( expression ) [ NO INHERIT ]
    
    and partition_bound_spec is:
    
    IN ( partition_bound_expr [, ...] ) |
    FROM ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] )
      TO ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] ) |
    WITH ( MODULUS numeric_literal, REMAINDER numeric_literal )
    
    URL: https://www.postgresql.org/docs/15/sql-createforeigntable.html
    
    Command:     CREATE FUNCTION
    Description: define a new function
    Syntax:
    CREATE [ OR REPLACE ] FUNCTION
        name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
        [ RETURNS rettype
          | RETURNS TABLE ( column_name column_type [, ...] ) ]
      { LANGUAGE lang_name
        | TRANSFORM { FOR TYPE type_name } [, ... ]
        | WINDOW
        | { IMMUTABLE | STABLE | VOLATILE }
        | [ NOT ] LEAKPROOF
        | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT }
        | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER }
        | PARALLEL { UNSAFE | RESTRICTED | SAFE }
        | COST execution_cost
        | ROWS result_rows
        | SUPPORT support_function
        | SET configuration_parameter { TO value | = value | FROM CURRENT }
        | AS 'definition'
        | AS 'obj_file', 'link_symbol'
        | sql_body
      } ...
    
    URL: https://www.postgresql.org/docs/15/sql-createfunction.html
    
    Command:     CREATE GROUP
    Description: define a new database role
    Syntax:
    CREATE GROUP name [ [ WITH ] option [ ... ] ]
    
    where option can be:
    
          SUPERUSER | NOSUPERUSER
        | CREATEDB | NOCREATEDB
        | CREATEROLE | NOCREATEROLE
        | INHERIT | NOINHERIT
        | LOGIN | NOLOGIN
        | REPLICATION | NOREPLICATION
        | BYPASSRLS | NOBYPASSRLS
        | 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
    
    URL: https://www.postgresql.org/docs/15/sql-creategroup.html
    
    Command:     CREATE INDEX
    Description: define a new index
    Syntax:
    CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name [ USING method ]
        ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
        [ INCLUDE ( column_name [, ...] ) ]
        [ NULLS [ NOT ] DISTINCT ]
        [ WITH ( storage_parameter [= value] [, ... ] ) ]
        [ TABLESPACE tablespace_name ]
        [ WHERE predicate ]
    
    URL: https://www.postgresql.org/docs/15/sql-createindex.html
    
    Command:     CREATE LANGUAGE
    Description: define a new procedural language
    Syntax:
    CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name
        HANDLER call_handler [ INLINE inline_handler ] [ VALIDATOR valfunction ]
    CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE name
    
    URL: https://www.postgresql.org/docs/15/sql-createlanguage.html
    
    Command:     CREATE MATERIALIZED VIEW
    Description: define a new materialized view
    Syntax:
    CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
        [ (column_name [, ...] ) ]
        [ USING method ]
        [ WITH ( storage_parameter [= value] [, ... ] ) ]
        [ TABLESPACE tablespace_name ]
        AS query
        [ WITH [ NO ] DATA ]
    
    URL: https://www.postgresql.org/docs/15/sql-creatematerializedview.html
    
    Command:     CREATE OPERATOR
    Description: define a new operator
    Syntax:
    CREATE OPERATOR name (
        {FUNCTION|PROCEDURE} = function_name
        [, LEFTARG = left_type ] [, RIGHTARG = right_type ]
        [, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]
        [, RESTRICT = res_proc ] [, JOIN = join_proc ]
        [, HASHES ] [, MERGES ]
    )
    
    URL: https://www.postgresql.org/docs/15/sql-createoperator.html
    
    Command:     CREATE OPERATOR CLASS
    Description: define a new operator class
    Syntax:
    CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type
      USING index_method [ FAMILY family_name ] AS
      {  OPERATOR strategy_number operator_name [ ( op_type, op_type ) ] [ FOR SEARCH | FOR ORDER BY sort_family_name ]
       | FUNCTION support_number [ ( op_type [ , op_type ] ) ] function_name ( argument_type [, ...] )
       | STORAGE storage_type
      } [, ... ]
    
    URL: https://www.postgresql.org/docs/15/sql-createopclass.html
    
    Command:     CREATE OPERATOR FAMILY
    Description: define a new operator family
    Syntax:
    CREATE OPERATOR FAMILY name USING index_method
    
    URL: https://www.postgresql.org/docs/15/sql-createopfamily.html
    
    Command:     CREATE POLICY
    Description: define a new row-level security policy for a table
    Syntax:
    CREATE POLICY name ON table_name
        [ AS { PERMISSIVE | RESTRICTIVE } ]
        [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
        [ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
        [ USING ( using_expression ) ]
        [ WITH CHECK ( check_expression ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-createpolicy.html
    
    Command:     CREATE PROCEDURE
    Description: define a new procedure
    Syntax:
    CREATE [ OR REPLACE ] PROCEDURE
        name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
      { LANGUAGE lang_name
        | TRANSFORM { FOR TYPE type_name } [, ... ]
        | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
        | SET configuration_parameter { TO value | = value | FROM CURRENT }
        | AS 'definition'
        | AS 'obj_file', 'link_symbol'
        | sql_body
      } ...
    
    URL: https://www.postgresql.org/docs/15/sql-createprocedure.html
    
    Command:     CREATE PUBLICATION
    Description: define a new publication
    Syntax:
    CREATE PUBLICATION name
        [ FOR ALL TABLES
          | FOR publication_object [, ... ] ]
        [ WITH ( publication_parameter [= value] [, ... ] ) ]
    
    where publication_object is one of:
    
        TABLE [ ONLY ] table_name [ * ] [ ( column_name [, ... ] ) ] [ WHERE ( expression ) ] [, ... ]
        TABLES IN SCHEMA { schema_name | CURRENT_SCHEMA } [, ... ]
    
    URL: https://www.postgresql.org/docs/15/sql-createpublication.html
    
    Command:     CREATE ROLE
    Description: define a new database role
    Syntax:
    CREATE ROLE name [ [ WITH ] option [ ... ] ]
    
    where option can be:
    
          SUPERUSER | NOSUPERUSER
        | CREATEDB | NOCREATEDB
        | CREATEROLE | NOCREATEROLE
        | INHERIT | NOINHERIT
        | LOGIN | NOLOGIN
        | REPLICATION | NOREPLICATION
        | BYPASSRLS | NOBYPASSRLS
        | 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
    
    URL: https://www.postgresql.org/docs/15/sql-createrole.html
    
    Command:     CREATE RULE
    Description: define a new rewrite rule
    Syntax:
    CREATE [ OR REPLACE ] RULE name AS ON event
        TO table_name [ WHERE condition ]
        DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }
    
    where event can be one of:
    
        SELECT | INSERT | UPDATE | DELETE
    
    URL: https://www.postgresql.org/docs/15/sql-createrule.html
    
    Command:     CREATE SCHEMA
    Description: define a new schema
    Syntax:
    CREATE SCHEMA schema_name [ AUTHORIZATION role_specification ] [ schema_element [ ... ] ]
    CREATE SCHEMA AUTHORIZATION role_specification [ schema_element [ ... ] ]
    CREATE SCHEMA IF NOT EXISTS schema_name [ AUTHORIZATION role_specification ]
    CREATE SCHEMA IF NOT EXISTS AUTHORIZATION role_specification
    
    where role_specification can be:
    
        user_name
      | CURRENT_ROLE
      | CURRENT_USER
      | SESSION_USER
    
    URL: https://www.postgresql.org/docs/15/sql-createschema.html
    
    Command:     CREATE SEQUENCE
    Description: define a new sequence generator
    Syntax:
    CREATE [ { TEMPORARY | TEMP } | UNLOGGED ] SEQUENCE [ IF NOT EXISTS ] name
        [ AS data_type ]
        [ INCREMENT [ BY ] increment ]
        [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
        [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
        [ OWNED BY { table_name.column_name | NONE } ]
    
    URL: https://www.postgresql.org/docs/15/sql-createsequence.html
    
    Command:     CREATE SERVER
    Description: define a new foreign server
    Syntax:
    CREATE SERVER [ IF NOT EXISTS ] server_name [ TYPE 'server_type' ] [ VERSION 'server_version' ]
        FOREIGN DATA WRAPPER fdw_name
        [ OPTIONS ( option 'value' [, ... ] ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-createserver.html
    
    Command:     CREATE STATISTICS
    Description: define extended statistics
    Syntax:
    CREATE STATISTICS [ IF NOT EXISTS ] statistics_name
        ON ( expression )
        FROM table_name
    
    CREATE STATISTICS [ IF NOT EXISTS ] statistics_name
        [ ( statistics_kind [, ... ] ) ]
        ON { column_name | ( expression ) }, { column_name | ( expression ) } [, ...]
        FROM table_name
    
    URL: https://www.postgresql.org/docs/15/sql-createstatistics.html
    
    Command:     CREATE SUBSCRIPTION
    Description: define a new subscription
    Syntax:
    CREATE SUBSCRIPTION subscription_name
        CONNECTION 'conninfo'
        PUBLICATION publication_name [, ...]
        [ WITH ( subscription_parameter [= value] [, ... ] ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-createsubscription.html
    
    Command:     CREATE TABLE
    Description: define a new table
    Syntax:
    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [
      { column_name data_type [ COMPRESSION compression_method ] [ COLLATE collation ] [ column_constraint [ ... ] ]
        | table_constraint
        | LIKE source_table [ like_option ... ] }
        [, ... ]
    ] )
    [ INHERITS ( parent_table [, ... ] ) ]
    [ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
    [ USING method ]
    [ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
    [ TABLESPACE tablespace_name ]
    
    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
        OF type_name [ (
      { column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ]
        | table_constraint }
        [, ... ]
    ) ]
    [ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
    [ USING method ]
    [ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
    [ TABLESPACE tablespace_name ]
    
    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
        PARTITION OF parent_table [ (
      { column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ]
        | table_constraint }
        [, ... ]
    ) ] { FOR VALUES partition_bound_spec | DEFAULT }
    [ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
    [ USING method ]
    [ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
    [ TABLESPACE tablespace_name ]
    
    where column_constraint is:
    
    [ CONSTRAINT constraint_name ]
    { NOT NULL |
      NULL |
      CHECK ( expression ) [ NO INHERIT ] |
      DEFAULT default_expr |
      GENERATED ALWAYS AS ( generation_expr ) STORED |
      GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] |
      UNIQUE [ NULLS [ NOT ] DISTINCT ] index_parameters |
      PRIMARY KEY index_parameters |
      REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
        [ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
    [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
    
    and table_constraint is:
    
    [ CONSTRAINT constraint_name ]
    { CHECK ( expression ) [ NO INHERIT ] |
      UNIQUE [ NULLS [ NOT ] DISTINCT ] ( column_name [, ... ] ) index_parameters |
      PRIMARY KEY ( column_name [, ... ] ) index_parameters |
      EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) index_parameters [ WHERE ( predicate ) ] |
      FOREIGN KEY ( column_name [, ... ] ) REFERENCES reftable [ ( refcolumn [, ... ] ) ]
        [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE referential_action ] [ ON UPDATE referential_action ] }
    [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]
    
    and like_option is:
    
    { INCLUDING | EXCLUDING } { COMMENTS | COMPRESSION | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }
    
    and partition_bound_spec is:
    
    IN ( partition_bound_expr [, ...] ) |
    FROM ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] )
      TO ( { partition_bound_expr | MINVALUE | MAXVALUE } [, ...] ) |
    WITH ( MODULUS numeric_literal, REMAINDER numeric_literal )
    
    index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:
    
    [ INCLUDE ( column_name [, ... ] ) ]
    [ WITH ( storage_parameter [= value] [, ... ] ) ]
    [ USING INDEX TABLESPACE tablespace_name ]
    
    exclude_element in an EXCLUDE constraint is:
    
    { column_name | ( expression ) } [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]
    
    referential_action in a FOREIGN KEY/REFERENCES constraint is:
    
    { NO ACTION | RESTRICT | CASCADE | SET NULL [ ( column_name [, ... ] ) ] | SET DEFAULT [ ( column_name [, ... ] ) ] }
    
    URL: https://www.postgresql.org/docs/15/sql-createtable.html
    
    Command:     CREATE TABLE AS
    Description: define a new table from the results of a query
    Syntax:
    CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
        [ (column_name [, ...] ) ]
        [ USING method ]
        [ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
        [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
        [ TABLESPACE tablespace_name ]
        AS query
        [ WITH [ NO ] DATA ]
    
    URL: https://www.postgresql.org/docs/15/sql-createtableas.html
    
    Command:     CREATE TABLESPACE
    Description: define a new tablespace
    Syntax:
    CREATE TABLESPACE tablespace_name
        [ OWNER { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ]
        LOCATION 'directory'
        [ WITH ( tablespace_option = value [, ... ] ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-createtablespace.html
    
    Command:     CREATE TEXT SEARCH CONFIGURATION
    Description: define a new text search configuration
    Syntax:
    CREATE TEXT SEARCH CONFIGURATION name (
        PARSER = parser_name |
        COPY = source_config
    )
    
    URL: https://www.postgresql.org/docs/15/sql-createtsconfig.html
    
    Command:     CREATE TEXT SEARCH DICTIONARY
    Description: define a new text search dictionary
    Syntax:
    CREATE TEXT SEARCH DICTIONARY name (
        TEMPLATE = template
        [, option = value [, ... ]]
    )
    
    URL: https://www.postgresql.org/docs/15/sql-createtsdictionary.html
    
    Command:     CREATE TEXT SEARCH PARSER
    Description: define a new text search parser
    Syntax:
    CREATE TEXT SEARCH PARSER name (
        START = start_function ,
        GETTOKEN = gettoken_function ,
        END = end_function ,
        LEXTYPES = lextypes_function
        [, HEADLINE = headline_function ]
    )
    
    URL: https://www.postgresql.org/docs/15/sql-createtsparser.html
    
    Command:     CREATE TEXT SEARCH TEMPLATE
    Description: define a new text search template
    Syntax:
    CREATE TEXT SEARCH TEMPLATE name (
        [ INIT = init_function , ]
        LEXIZE = lexize_function
    )
    
    URL: https://www.postgresql.org/docs/15/sql-createtstemplate.html
    
    Command:     CREATE TRANSFORM
    Description: define a new transform
    Syntax:
    CREATE [ OR REPLACE ] TRANSFORM FOR type_name LANGUAGE lang_name (
        FROM SQL WITH FUNCTION from_sql_function_name [ (argument_type [, ...]) ],
        TO SQL WITH FUNCTION to_sql_function_name [ (argument_type [, ...]) ]
    );
    
    URL: https://www.postgresql.org/docs/15/sql-createtransform.html
    
    Command:     CREATE TRIGGER
    Description: define a new trigger
    Syntax:
    CREATE [ OR REPLACE ] [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
        ON table_name
        [ FROM referenced_table_name ]
        [ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ]
        [ REFERENCING { { OLD | NEW } TABLE [ AS ] transition_relation_name } [ ... ] ]
        [ FOR [ EACH ] { ROW | STATEMENT } ]
        [ WHEN ( condition ) ]
        EXECUTE { FUNCTION | PROCEDURE } function_name ( arguments )
    
    where event can be one of:
    
        INSERT
        UPDATE [ OF column_name [, ... ] ]
        DELETE
        TRUNCATE
    
    URL: https://www.postgresql.org/docs/15/sql-createtrigger.html
    
    Command:     CREATE TYPE
    Description: define a new data type
    Syntax:
    CREATE TYPE name AS
        ( [ attribute_name data_type [ COLLATE collation ] [, ... ] ] )
    
    CREATE TYPE name AS ENUM
        ( [ 'label' [, ... ] ] )
    
    CREATE TYPE name AS RANGE (
        SUBTYPE = subtype
        [ , SUBTYPE_OPCLASS = subtype_operator_class ]
        [ , COLLATION = collation ]
        [ , CANONICAL = canonical_function ]
        [ , SUBTYPE_DIFF = subtype_diff_function ]
        [ , MULTIRANGE_TYPE_NAME = multirange_type_name ]
    )
    
    CREATE TYPE name (
        INPUT = input_function,
        OUTPUT = output_function
        [ , RECEIVE = receive_function ]
        [ , SEND = send_function ]
        [ , TYPMOD_IN = type_modifier_input_function ]
        [ , TYPMOD_OUT = type_modifier_output_function ]
        [ , ANALYZE = analyze_function ]
        [ , SUBSCRIPT = subscript_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 TYPE name
    
    URL: https://www.postgresql.org/docs/15/sql-createtype.html
    
    Command:     CREATE USER
    Description: define a new database role
    Syntax:
    CREATE USER name [ [ WITH ] option [ ... ] ]
    
    where option can be:
    
          SUPERUSER | NOSUPERUSER
        | CREATEDB | NOCREATEDB
        | CREATEROLE | NOCREATEROLE
        | INHERIT | NOINHERIT
        | LOGIN | NOLOGIN
        | REPLICATION | NOREPLICATION
        | BYPASSRLS | NOBYPASSRLS
        | 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
    
    URL: https://www.postgresql.org/docs/15/sql-createuser.html
    
    Command:     CREATE USER MAPPING
    Description: define a new mapping of a user to a foreign server
    Syntax:
    CREATE USER MAPPING [ IF NOT EXISTS ] FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC }
        SERVER server_name
        [ OPTIONS ( option 'value' [ , ... ] ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-createusermapping.html
    
    Command:     CREATE VIEW
    Description: define a new view
    Syntax:
    CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW name [ ( column_name [, ...] ) ]
        [ WITH ( view_option_name [= view_option_value] [, ... ] ) ]
        AS query
        [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]
    
    URL: https://www.postgresql.org/docs/15/sql-createview.html
    
    Command:     DEALLOCATE
    Description: deallocate a prepared statement
    Syntax:
    DEALLOCATE [ PREPARE ] { name | ALL }
    
    URL: https://www.postgresql.org/docs/15/sql-deallocate.html
    
    Command:     DECLARE
    Description: define a cursor
    Syntax:
    DECLARE name [ BINARY ] [ ASENSITIVE | INSENSITIVE ] [ [ NO ] SCROLL ]
        CURSOR [ { WITH | WITHOUT } HOLD ] FOR query
    
    URL: https://www.postgresql.org/docs/15/sql-declare.html
    
    Command:     DELETE
    Description: delete rows of a table
    Syntax:
    [ WITH [ RECURSIVE ] with_query [, ...] ]
    DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
        [ USING from_item [, ...] ]
        [ WHERE condition | WHERE CURRENT OF cursor_name ]
        [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
    
    URL: https://www.postgresql.org/docs/15/sql-delete.html
    
    Command:     DISCARD
    Description: discard session state
    Syntax:
    DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }
    
    URL: https://www.postgresql.org/docs/15/sql-discard.html
    
    Command:     DO
    Description: execute an anonymous code block
    Syntax:
    DO [ LANGUAGE lang_name ] code
    
    URL: https://www.postgresql.org/docs/15/sql-do.html
    
    Command:     DROP ACCESS METHOD
    Description: remove an access method
    Syntax:
    DROP ACCESS METHOD [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-drop-access-method.html
    
    Command:     DROP AGGREGATE
    Description: remove an aggregate function
    Syntax:
    DROP AGGREGATE [ IF EXISTS ] name ( aggregate_signature ) [, ...] [ CASCADE | RESTRICT ]
    
    where aggregate_signature is:
    
    * |
    [ argmode ] [ argname ] argtype [ , ... ] |
    [ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropaggregate.html
    
    Command:     DROP CAST
    Description: remove a cast
    Syntax:
    DROP CAST [ IF EXISTS ] (source_type AS target_type) [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropcast.html
    
    Command:     DROP COLLATION
    Description: remove a collation
    Syntax:
    DROP COLLATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropcollation.html
    
    Command:     DROP CONVERSION
    Description: remove a conversion
    Syntax:
    DROP CONVERSION [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropconversion.html
    
    Command:     DROP DATABASE
    Description: remove a database
    Syntax:
    DROP DATABASE [ IF EXISTS ] name [ [ WITH ] ( option [, ...] ) ]
    
    where option can be:
    
        FORCE
    
    URL: https://www.postgresql.org/docs/15/sql-dropdatabase.html
    
    Command:     DROP DOMAIN
    Description: remove a domain
    Syntax:
    DROP DOMAIN [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropdomain.html
    
    Command:     DROP EVENT TRIGGER
    Description: remove an event trigger
    Syntax:
    DROP EVENT TRIGGER [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropeventtrigger.html
    
    Command:     DROP EXTENSION
    Description: remove an extension
    Syntax:
    DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropextension.html
    
    Command:     DROP FOREIGN DATA WRAPPER
    Description: remove a foreign-data wrapper
    Syntax:
    DROP FOREIGN DATA WRAPPER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropforeigndatawrapper.html
    
    Command:     DROP FOREIGN TABLE
    Description: remove a foreign table
    Syntax:
    DROP FOREIGN TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropforeigntable.html
    
    Command:     DROP FUNCTION
    Description: remove a function
    Syntax:
    DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
        [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropfunction.html
    
    Command:     DROP GROUP
    Description: remove a database role
    Syntax:
    DROP GROUP [ IF EXISTS ] name [, ...]
    
    URL: https://www.postgresql.org/docs/15/sql-dropgroup.html
    
    Command:     DROP INDEX
    Description: remove an index
    Syntax:
    DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropindex.html
    
    Command:     DROP LANGUAGE
    Description: remove a procedural language
    Syntax:
    DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droplanguage.html
    
    Command:     DROP MATERIALIZED VIEW
    Description: remove a materialized view
    Syntax:
    DROP MATERIALIZED VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropmaterializedview.html
    
    Command:     DROP OPERATOR
    Description: remove an operator
    Syntax:
    DROP OPERATOR [ IF EXISTS ] name ( { left_type | NONE } , right_type ) [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropoperator.html
    
    Command:     DROP OPERATOR CLASS
    Description: remove an operator class
    Syntax:
    DROP OPERATOR CLASS [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropopclass.html
    
    Command:     DROP OPERATOR FAMILY
    Description: remove an operator family
    Syntax:
    DROP OPERATOR FAMILY [ IF EXISTS ] name USING index_method [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropopfamily.html
    
    Command:     DROP OWNED
    Description: remove database objects owned by a database role
    Syntax:
    DROP OWNED BY { name | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-drop-owned.html
    
    Command:     DROP POLICY
    Description: remove a row-level security policy from a table
    Syntax:
    DROP POLICY [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droppolicy.html
    
    Command:     DROP PROCEDURE
    Description: remove a procedure
    Syntax:
    DROP PROCEDURE [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
        [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropprocedure.html
    
    Command:     DROP PUBLICATION
    Description: remove a publication
    Syntax:
    DROP PUBLICATION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droppublication.html
    
    Command:     DROP ROLE
    Description: remove a database role
    Syntax:
    DROP ROLE [ IF EXISTS ] name [, ...]
    
    URL: https://www.postgresql.org/docs/15/sql-droprole.html
    
    Command:     DROP ROUTINE
    Description: remove a routine
    Syntax:
    DROP ROUTINE [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
        [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droproutine.html
    
    Command:     DROP RULE
    Description: remove a rewrite rule
    Syntax:
    DROP RULE [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droprule.html
    
    Command:     DROP SCHEMA
    Description: remove a schema
    Syntax:
    DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropschema.html
    
    Command:     DROP SEQUENCE
    Description: remove a sequence
    Syntax:
    DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropsequence.html
    
    Command:     DROP SERVER
    Description: remove a foreign server descriptor
    Syntax:
    DROP SERVER [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropserver.html
    
    Command:     DROP STATISTICS
    Description: remove extended statistics
    Syntax:
    DROP STATISTICS [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropstatistics.html
    
    Command:     DROP SUBSCRIPTION
    Description: remove a subscription
    Syntax:
    DROP SUBSCRIPTION [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropsubscription.html
    
    Command:     DROP TABLE
    Description: remove a table
    Syntax:
    DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droptable.html
    
    Command:     DROP TABLESPACE
    Description: remove a tablespace
    Syntax:
    DROP TABLESPACE [ IF EXISTS ] name
    
    URL: https://www.postgresql.org/docs/15/sql-droptablespace.html
    
    Command:     DROP TEXT SEARCH CONFIGURATION
    Description: remove a text search configuration
    Syntax:
    DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droptsconfig.html
    
    Command:     DROP TEXT SEARCH DICTIONARY
    Description: remove a text search dictionary
    Syntax:
    DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droptsdictionary.html
    
    Command:     DROP TEXT SEARCH PARSER
    Description: remove a text search parser
    Syntax:
    DROP TEXT SEARCH PARSER [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droptsparser.html
    
    Command:     DROP TEXT SEARCH TEMPLATE
    Description: remove a text search template
    Syntax:
    DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droptstemplate.html
    
    Command:     DROP TRANSFORM
    Description: remove a transform
    Syntax:
    DROP TRANSFORM [ IF EXISTS ] FOR type_name LANGUAGE lang_name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droptransform.html
    
    Command:     DROP TRIGGER
    Description: remove a trigger
    Syntax:
    DROP TRIGGER [ IF EXISTS ] name ON table_name [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droptrigger.html
    
    Command:     DROP TYPE
    Description: remove a data type
    Syntax:
    DROP TYPE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-droptype.html
    
    Command:     DROP USER
    Description: remove a database role
    Syntax:
    DROP USER [ IF EXISTS ] name [, ...]
    
    URL: https://www.postgresql.org/docs/15/sql-dropuser.html
    
    Command:     DROP USER MAPPING
    Description: remove a user mapping for a foreign server
    Syntax:
    DROP USER MAPPING [ IF EXISTS ] FOR { user_name | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC } SERVER server_name
    
    URL: https://www.postgresql.org/docs/15/sql-dropusermapping.html
    
    Command:     DROP VIEW
    Description: remove a view
    Syntax:
    DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-dropview.html
    
    Command:     END
    Description: commit the current transaction
    Syntax:
    END [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
    
    URL: https://www.postgresql.org/docs/15/sql-end.html
    
    Command:     EXECUTE
    Description: execute a prepared statement
    Syntax:
    EXECUTE name [ ( parameter [, ...] ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-execute.html
    
    Command:     EXPLAIN
    Description: show the execution plan of a statement
    Syntax:
    EXPLAIN [ ( option [, ...] ) ] statement
    EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
    
    where option can be one of:
    
        ANALYZE [ boolean ]
        VERBOSE [ boolean ]
        COSTS [ boolean ]
        SETTINGS [ boolean ]
        BUFFERS [ boolean ]
        WAL [ boolean ]
        TIMING [ boolean ]
        SUMMARY [ boolean ]
        FORMAT { TEXT | XML | JSON | YAML }
    
    URL: https://www.postgresql.org/docs/15/sql-explain.html
    
    Command:     FETCH
    Description: retrieve rows from a query using a cursor
    Syntax:
    FETCH [ direction ] [ FROM | IN ] cursor_name
    
    where direction can be one of:
    
        NEXT
        PRIOR
        FIRST
        LAST
        ABSOLUTE count
        RELATIVE count
        count
        ALL
        FORWARD
        FORWARD count
        FORWARD ALL
        BACKWARD
        BACKWARD count
        BACKWARD ALL
    
    URL: https://www.postgresql.org/docs/15/sql-fetch.html
    
    Command:     GRANT
    Description: define access privileges
    Syntax:
    GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
        [, ...] | ALL [ PRIVILEGES ] }
        ON { [ TABLE ] table_name [, ...]
             | ALL TABLES IN SCHEMA schema_name [, ...] }
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
        [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
        ON [ TABLE ] table_name [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { { USAGE | SELECT | UPDATE }
        [, ...] | ALL [ PRIVILEGES ] }
        ON { SEQUENCE sequence_name [, ...]
             | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
        ON DATABASE database_name [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { USAGE | ALL [ PRIVILEGES ] }
        ON DOMAIN domain_name [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { USAGE | ALL [ PRIVILEGES ] }
        ON FOREIGN DATA WRAPPER fdw_name [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { USAGE | ALL [ PRIVILEGES ] }
        ON FOREIGN SERVER server_name [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { EXECUTE | ALL [ PRIVILEGES ] }
        ON { { FUNCTION | PROCEDURE | ROUTINE } routine_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
             | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { USAGE | ALL [ PRIVILEGES ] }
        ON LANGUAGE lang_name [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
        ON LARGE OBJECT loid [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { { SET | ALTER SYSTEM } [, ... ] | ALL [ PRIVILEGES ] }
        ON PARAMETER configuration_parameter [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
        ON SCHEMA schema_name [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { CREATE | ALL [ PRIVILEGES ] }
        ON TABLESPACE tablespace_name [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT { USAGE | ALL [ PRIVILEGES ] }
        ON TYPE type_name [, ...]
        TO role_specification [, ...] [ WITH GRANT OPTION ]
        [ GRANTED BY role_specification ]
    
    GRANT role_name [, ...] TO role_specification [, ...]
        [ WITH ADMIN OPTION ]
        [ GRANTED BY role_specification ]
    
    where role_specification can be:
    
        [ GROUP ] role_name
      | PUBLIC
      | CURRENT_ROLE
      | CURRENT_USER
      | SESSION_USER
    
    URL: https://www.postgresql.org/docs/15/sql-grant.html
    
    Command:     IMPORT FOREIGN SCHEMA
    Description: import table definitions from a foreign server
    Syntax:
    IMPORT FOREIGN SCHEMA remote_schema
        [ { LIMIT TO | EXCEPT } ( table_name [, ...] ) ]
        FROM SERVER server_name
        INTO local_schema
        [ OPTIONS ( option 'value' [, ... ] ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-importforeignschema.html
    
    Command:     INSERT
    Description: create new rows in a table
    Syntax:
    [ WITH [ RECURSIVE ] with_query [, ...] ]
    INSERT INTO table_name [ AS alias ] [ ( column_name [, ...] ) ]
        [ OVERRIDING { SYSTEM | USER } VALUE ]
        { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
        [ ON CONFLICT [ conflict_target ] conflict_action ]
        [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
    
    where conflict_target can be one of:
    
        ( { index_column_name | ( index_expression ) } [ COLLATE collation ] [ opclass ] [, ...] ) [ WHERE index_predicate ]
        ON CONSTRAINT constraint_name
    
    and conflict_action is one of:
    
        DO NOTHING
        DO UPDATE SET { column_name = { expression | DEFAULT } |
                        ( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) |
                        ( column_name [, ...] ) = ( sub-SELECT )
                      } [, ...]
                  [ WHERE condition ]
    
    URL: https://www.postgresql.org/docs/15/sql-insert.html
    
    Command:     LISTEN
    Description: listen for a notification
    Syntax:
    LISTEN channel
    
    URL: https://www.postgresql.org/docs/15/sql-listen.html
    
    Command:     LOAD
    Description: load a shared library file
    Syntax:
    LOAD 'filename'
    
    URL: https://www.postgresql.org/docs/15/sql-load.html
    
    Command:     LOCK
    Description: lock a table
    Syntax:
    LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ]
    
    where lockmode is one of:
    
        ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE
        | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE
    
    URL: https://www.postgresql.org/docs/15/sql-lock.html
    
    Command:     MERGE
    Description: conditionally insert, update, or delete rows of a table
    Syntax:
    [ WITH with_query [, ...] ]
    MERGE INTO [ ONLY ] target_table_name [ * ] [ [ AS ] target_alias ]
    USING data_source ON join_condition
    when_clause [...]
    
    where data_source is:
    
    { [ ONLY ] source_table_name [ * ] | ( source_query ) } [ [ AS ] source_alias ]
    
    and when_clause is:
    
    { WHEN MATCHED [ AND condition ] THEN { merge_update | merge_delete | DO NOTHING } |
      WHEN NOT MATCHED [ AND condition ] THEN { merge_insert | DO NOTHING } }
    
    and merge_insert is:
    
    INSERT [( column_name [, ...] )]
    [ OVERRIDING { SYSTEM | USER } VALUE ]
    { VALUES ( { expression | DEFAULT } [, ...] ) | DEFAULT VALUES }
    
    and merge_update is:
    
    UPDATE SET { column_name = { expression | DEFAULT } |
                 ( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]
    
    and merge_delete is:
    
    DELETE
    
    URL: https://www.postgresql.org/docs/15/sql-merge.html
    
    Command:     MOVE
    Description: position a cursor
    Syntax:
    MOVE [ direction ] [ FROM | IN ] cursor_name
    
    where direction can be one of:
    
        NEXT
        PRIOR
        FIRST
        LAST
        ABSOLUTE count
        RELATIVE count
        count
        ALL
        FORWARD
        FORWARD count
        FORWARD ALL
        BACKWARD
        BACKWARD count
        BACKWARD ALL
    
    URL: https://www.postgresql.org/docs/15/sql-move.html
    
    Command:     NOTIFY
    Description: generate a notification
    Syntax:
    NOTIFY channel [ , payload ]
    
    URL: https://www.postgresql.org/docs/15/sql-notify.html
    
    Command:     PREPARE
    Description: prepare a statement for execution
    Syntax:
    PREPARE name [ ( data_type [, ...] ) ] AS statement
    
    URL: https://www.postgresql.org/docs/15/sql-prepare.html
    
    Command:     PREPARE TRANSACTION
    Description: prepare the current transaction for two-phase commit
    Syntax:
    PREPARE TRANSACTION transaction_id
    
    URL: https://www.postgresql.org/docs/15/sql-prepare-transaction.html
    
    Command:     REASSIGN OWNED
    Description: change the ownership of database objects owned by a database role
    Syntax:
    REASSIGN OWNED BY { old_role | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...]
                   TO { new_role | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    
    URL: https://www.postgresql.org/docs/15/sql-reassign-owned.html
    
    Command:     REFRESH MATERIALIZED VIEW
    Description: replace the contents of a materialized view
    Syntax:
    REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
        [ WITH [ NO ] DATA ]
    
    URL: https://www.postgresql.org/docs/15/sql-refreshmaterializedview.html
    
    Command:     REINDEX
    Description: rebuild indexes
    Syntax:
    REINDEX [ ( option [, ...] ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } [ CONCURRENTLY ] name
    
    where option can be one of:
    
        CONCURRENTLY [ boolean ]
        TABLESPACE new_tablespace
        VERBOSE [ boolean ]
    
    URL: https://www.postgresql.org/docs/15/sql-reindex.html
    
    Command:     RELEASE SAVEPOINT
    Description: destroy a previously defined savepoint
    Syntax:
    RELEASE [ SAVEPOINT ] savepoint_name
    
    URL: https://www.postgresql.org/docs/15/sql-release-savepoint.html
    
    Command:     RESET
    Description: restore the value of a run-time parameter to the default value
    Syntax:
    RESET configuration_parameter
    RESET ALL
    
    URL: https://www.postgresql.org/docs/15/sql-reset.html
    
    Command:     REVOKE
    Description: remove access privileges
    Syntax:
    REVOKE [ GRANT OPTION FOR ]
        { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }
        [, ...] | ALL [ PRIVILEGES ] }
        ON { [ TABLE ] table_name [, ...]
             | ALL TABLES IN SCHEMA schema_name [, ...] }
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { { SELECT | INSERT | UPDATE | REFERENCES } ( column_name [, ...] )
        [, ...] | ALL [ PRIVILEGES ] ( column_name [, ...] ) }
        ON [ TABLE ] table_name [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { { USAGE | SELECT | UPDATE }
        [, ...] | ALL [ PRIVILEGES ] }
        ON { SEQUENCE sequence_name [, ...]
             | ALL SEQUENCES IN SCHEMA schema_name [, ...] }
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
        ON DATABASE database_name [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { USAGE | ALL [ PRIVILEGES ] }
        ON DOMAIN domain_name [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { USAGE | ALL [ PRIVILEGES ] }
        ON FOREIGN DATA WRAPPER fdw_name [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { USAGE | ALL [ PRIVILEGES ] }
        ON FOREIGN SERVER server_name [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { EXECUTE | ALL [ PRIVILEGES ] }
        ON { { FUNCTION | PROCEDURE | ROUTINE } function_name [ ( [ [ argmode ] [ arg_name ] arg_type [, ...] ] ) ] [, ...]
             | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { USAGE | ALL [ PRIVILEGES ] }
        ON LANGUAGE lang_name [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }
        ON LARGE OBJECT loid [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { { SET | ALTER SYSTEM } [, ...] | ALL [ PRIVILEGES ] }
        ON PARAMETER configuration_parameter [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }
        ON SCHEMA schema_name [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { CREATE | ALL [ PRIVILEGES ] }
        ON TABLESPACE tablespace_name [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ GRANT OPTION FOR ]
        { USAGE | ALL [ PRIVILEGES ] }
        ON TYPE type_name [, ...]
        FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    REVOKE [ ADMIN OPTION FOR ]
        role_name [, ...] FROM role_specification [, ...]
        [ GRANTED BY role_specification ]
        [ CASCADE | RESTRICT ]
    
    where role_specification can be:
    
        [ GROUP ] role_name
      | PUBLIC
      | CURRENT_ROLE
      | CURRENT_USER
      | SESSION_USER
    
    URL: https://www.postgresql.org/docs/15/sql-revoke.html
    
    Command:     ROLLBACK
    Description: abort the current transaction
    Syntax:
    ROLLBACK [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]
    
    URL: https://www.postgresql.org/docs/15/sql-rollback.html
    
    Command:     ROLLBACK PREPARED
    Description: cancel a transaction that was earlier prepared for two-phase commit
    Syntax:
    ROLLBACK PREPARED transaction_id
    
    URL: https://www.postgresql.org/docs/15/sql-rollback-prepared.html
    
    Command:     ROLLBACK TO SAVEPOINT
    Description: roll back to a savepoint
    Syntax:
    ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] savepoint_name
    
    URL: https://www.postgresql.org/docs/15/sql-rollback-to.html
    
    Command:     SAVEPOINT
    Description: define a new savepoint within the current transaction
    Syntax:
    SAVEPOINT savepoint_name
    
    URL: https://www.postgresql.org/docs/15/sql-savepoint.html
    
    Command:     SECURITY LABEL
    Description: define or change a security label applied to an object
    Syntax:
    SECURITY LABEL [ FOR provider ] ON
    {
      TABLE object_name |
      COLUMN table_name.column_name |
      AGGREGATE aggregate_name ( aggregate_signature ) |
      DATABASE object_name |
      DOMAIN object_name |
      EVENT TRIGGER object_name |
      FOREIGN TABLE object_name
      FUNCTION function_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
      LARGE OBJECT large_object_oid |
      MATERIALIZED VIEW object_name |
      [ PROCEDURAL ] LANGUAGE object_name |
      PROCEDURE procedure_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
      PUBLICATION object_name |
      ROLE object_name |
      ROUTINE routine_name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] |
      SCHEMA object_name |
      SEQUENCE object_name |
      SUBSCRIPTION object_name |
      TABLESPACE object_name |
      TYPE object_name |
      VIEW object_name
    } IS { string_literal | NULL }
    
    where aggregate_signature is:
    
    * |
    [ argmode ] [ argname ] argtype [ , ... ] |
    [ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]
    
    URL: https://www.postgresql.org/docs/15/sql-security-label.html
    
    Command:     SELECT
    Description: retrieve rows from a table or view
    Syntax:
    [ WITH [ RECURSIVE ] with_query [, ...] ]
    SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
        [ * | expression [ [ AS ] output_name ] [, ...] ]
        [ FROM from_item [, ...] ]
        [ WHERE condition ]
        [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
        [ HAVING condition ]
        [ WINDOW window_name AS ( window_definition ) [, ...] ]
        [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
        [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
        [ LIMIT { count | ALL } ]
        [ OFFSET start [ ROW | ROWS ] ]
        [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES } ]
        [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]
    
    where from_item can be one of:
    
        [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
                    [ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ]
        [ LATERAL ] ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
        with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        [ LATERAL ] function_name ( [ argument [, ...] ] )
                    [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        [ LATERAL ] function_name ( [ argument [, ...] ] ) [ AS ] alias ( column_definition [, ...] )
        [ LATERAL ] function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
        [ LATERAL ] ROWS FROM( function_name ( [ argument [, ...] ] ) [ AS ( column_definition [, ...] ) ] [, ...] )
                    [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        from_item join_type from_item { ON join_condition | USING ( join_column [, ...] ) [ AS join_using_alias ] }
        from_item NATURAL join_type from_item
        from_item CROSS JOIN from_item
    
    and grouping_element can be one of:
    
        ( )
        expression
        ( expression [, ...] )
        ROLLUP ( { expression | ( expression [, ...] ) } [, ...] )
        CUBE ( { expression | ( expression [, ...] ) } [, ...] )
        GROUPING SETS ( grouping_element [, ...] )
    
    and with_query is:
    
        with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( select | values | insert | update | delete )
            [ SEARCH { BREADTH | DEPTH } FIRST BY column_name [, ...] SET search_seq_col_name ]
            [ CYCLE column_name [, ...] SET cycle_mark_col_name [ TO cycle_mark_value DEFAULT cycle_mark_default ] USING cycle_path_col_name ]
    
    TABLE [ ONLY ] table_name [ * ]
    
    URL: https://www.postgresql.org/docs/15/sql-select.html
    
    Command:     SELECT INTO
    Description: define a new table from the results of a query
    Syntax:
    [ WITH [ RECURSIVE ] with_query [, ...] ]
    SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
        * | expression [ [ AS ] output_name ] [, ...]
        INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] new_table
        [ FROM from_item [, ...] ]
        [ WHERE condition ]
        [ GROUP BY expression [, ...] ]
        [ HAVING condition ]
        [ WINDOW window_name AS ( window_definition ) [, ...] ]
        [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
        [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
        [ LIMIT { count | ALL } ]
        [ OFFSET start [ ROW | ROWS ] ]
        [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
        [ FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT ] [...] ]
    
    URL: https://www.postgresql.org/docs/15/sql-selectinto.html
    
    Command:     SET
    Description: change a run-time parameter
    Syntax:
    SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
    SET [ SESSION | LOCAL ] TIME ZONE { value | 'value' | LOCAL | DEFAULT }
    
    URL: https://www.postgresql.org/docs/15/sql-set.html
    
    Command:     SET CONSTRAINTS
    Description: set constraint check timing for the current transaction
    Syntax:
    SET CONSTRAINTS { ALL | name [, ...] } { DEFERRED | IMMEDIATE }
    
    URL: https://www.postgresql.org/docs/15/sql-set-constraints.html
    
    Command:     SET ROLE
    Description: set the current user identifier of the current session
    Syntax:
    SET [ SESSION | LOCAL ] ROLE role_name
    SET [ SESSION | LOCAL ] ROLE NONE
    RESET ROLE
    
    URL: https://www.postgresql.org/docs/15/sql-set-role.html
    
    Command:     SET SESSION AUTHORIZATION
    Description: set the session user identifier and the current user identifier of the current session
    Syntax:
    SET [ SESSION | LOCAL ] SESSION AUTHORIZATION user_name
    SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT
    RESET SESSION AUTHORIZATION
    
    URL: https://www.postgresql.org/docs/15/sql-set-session-authorization.html
    
    Command:     SET TRANSACTION
    Description: set the characteristics of the current transaction
    Syntax:
    SET TRANSACTION transaction_mode [, ...]
    SET TRANSACTION SNAPSHOT snapshot_id
    SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]
    
    where transaction_mode is one of:
    
        ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
        READ WRITE | READ ONLY
        [ NOT ] DEFERRABLE
    
    URL: https://www.postgresql.org/docs/15/sql-set-transaction.html
    
    Command:     SHOW
    Description: show the value of a run-time parameter
    Syntax:
    SHOW name
    SHOW ALL
    
    URL: https://www.postgresql.org/docs/15/sql-show.html
    
    Command:     START TRANSACTION
    Description: start a transaction block
    Syntax:
    START TRANSACTION [ transaction_mode [, ...] ]
    
    where transaction_mode is one of:
    
        ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
        READ WRITE | READ ONLY
        [ NOT ] DEFERRABLE
    
    URL: https://www.postgresql.org/docs/15/sql-start-transaction.html
    
    Command:     TABLE
    Description: retrieve rows from a table or view
    Syntax:
    [ WITH [ RECURSIVE ] with_query [, ...] ]
    SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
        [ * | expression [ [ AS ] output_name ] [, ...] ]
        [ FROM from_item [, ...] ]
        [ WHERE condition ]
        [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
        [ HAVING condition ]
        [ WINDOW window_name AS ( window_definition ) [, ...] ]
        [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
        [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
        [ LIMIT { count | ALL } ]
        [ OFFSET start [ ROW | ROWS ] ]
        [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES } ]
        [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]
    
    where from_item can be one of:
    
        [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
                    [ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ]
        [ LATERAL ] ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
        with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        [ LATERAL ] function_name ( [ argument [, ...] ] )
                    [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        [ LATERAL ] function_name ( [ argument [, ...] ] ) [ AS ] alias ( column_definition [, ...] )
        [ LATERAL ] function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
        [ LATERAL ] ROWS FROM( function_name ( [ argument [, ...] ] ) [ AS ( column_definition [, ...] ) ] [, ...] )
                    [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        from_item join_type from_item { ON join_condition | USING ( join_column [, ...] ) [ AS join_using_alias ] }
        from_item NATURAL join_type from_item
        from_item CROSS JOIN from_item
    
    and grouping_element can be one of:
    
        ( )
        expression
        ( expression [, ...] )
        ROLLUP ( { expression | ( expression [, ...] ) } [, ...] )
        CUBE ( { expression | ( expression [, ...] ) } [, ...] )
        GROUPING SETS ( grouping_element [, ...] )
    
    and with_query is:
    
        with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( select | values | insert | update | delete )
            [ SEARCH { BREADTH | DEPTH } FIRST BY column_name [, ...] SET search_seq_col_name ]
            [ CYCLE column_name [, ...] SET cycle_mark_col_name [ TO cycle_mark_value DEFAULT cycle_mark_default ] USING cycle_path_col_name ]
    
    TABLE [ ONLY ] table_name [ * ]
    
    URL: https://www.postgresql.org/docs/15/sql-select.html
    
    Command:     TRUNCATE
    Description: empty a table or set of tables
    Syntax:
    TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]
        [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]
    
    URL: https://www.postgresql.org/docs/15/sql-truncate.html
    
    Command:     UNLISTEN
    Description: stop listening for a notification
    Syntax:
    UNLISTEN { channel | * }
    
    URL: https://www.postgresql.org/docs/15/sql-unlisten.html
    
    Command:     UPDATE
    Description: update rows of a table
    Syntax:
    [ WITH [ RECURSIVE ] with_query [, ...] ]
    UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
        SET { column_name = { expression | DEFAULT } |
              ( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) |
              ( column_name [, ...] ) = ( sub-SELECT )
            } [, ...]
        [ FROM from_item [, ...] ]
        [ WHERE condition | WHERE CURRENT OF cursor_name ]
        [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]
    
    URL: https://www.postgresql.org/docs/15/sql-update.html
    
    Command:     VACUUM
    Description: garbage-collect and optionally analyze a database
    Syntax:
    VACUUM [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
    VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ table_and_columns [, ...] ]
    
    where option can be one of:
    
        FULL [ boolean ]
        FREEZE [ boolean ]
        VERBOSE [ boolean ]
        ANALYZE [ boolean ]
        DISABLE_PAGE_SKIPPING [ boolean ]
        SKIP_LOCKED [ boolean ]
        INDEX_CLEANUP { AUTO | ON | OFF }
        PROCESS_TOAST [ boolean ]
        TRUNCATE [ boolean ]
        PARALLEL integer
    
    and table_and_columns is:
    
        table_name [ ( column_name [, ...] ) ]
    
    URL: https://www.postgresql.org/docs/15/sql-vacuum.html
    
    Command:     VALUES
    Description: compute a set of rows
    Syntax:
    VALUES ( expression [, ...] ) [, ...]
        [ ORDER BY sort_expression [ ASC | DESC | USING operator ] [, ...] ]
        [ LIMIT { count | ALL } ]
        [ OFFSET start [ ROW | ROWS ] ]
        [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ]
    
    URL: https://www.postgresql.org/docs/15/sql-values.html
    
    Command:     WITH
    Description: retrieve rows from a table or view
    Syntax:
    [ WITH [ RECURSIVE ] with_query [, ...] ]
    SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
        [ * | expression [ [ AS ] output_name ] [, ...] ]
        [ FROM from_item [, ...] ]
        [ WHERE condition ]
        [ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
        [ HAVING condition ]
        [ WINDOW window_name AS ( window_definition ) [, ...] ]
        [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
        [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
        [ LIMIT { count | ALL } ]
        [ OFFSET start [ ROW | ROWS ] ]
        [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES } ]
        [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]
    
    where from_item can be one of:
    
        [ ONLY ] table_name [ * ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
                    [ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ]
        [ LATERAL ] ( select ) [ AS ] alias [ ( column_alias [, ...] ) ]
        with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        [ LATERAL ] function_name ( [ argument [, ...] ] )
                    [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        [ LATERAL ] function_name ( [ argument [, ...] ] ) [ AS ] alias ( column_definition [, ...] )
        [ LATERAL ] function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] )
        [ LATERAL ] ROWS FROM( function_name ( [ argument [, ...] ] ) [ AS ( column_definition [, ...] ) ] [, ...] )
                    [ WITH ORDINALITY ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ]
        from_item join_type from_item { ON join_condition | USING ( join_column [, ...] ) [ AS join_using_alias ] }
        from_item NATURAL join_type from_item
        from_item CROSS JOIN from_item
    
    and grouping_element can be one of:
    
        ( )
        expression
        ( expression [, ...] )
        ROLLUP ( { expression | ( expression [, ...] ) } [, ...] )
        CUBE ( { expression | ( expression [, ...] ) } [, ...] )
        GROUPING SETS ( grouping_element [, ...] )
    
    and with_query is:
    
        with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( select | values | insert | update | delete )
            [ SEARCH { BREADTH | DEPTH } FIRST BY column_name [, ...] SET search_seq_col_name ]
            [ CYCLE column_name [, ...] SET cycle_mark_col_name [ TO cycle_mark_value DEFAULT cycle_mark_default ] USING cycle_path_col_name ]
    
    TABLE [ ONLY ] table_name [ * ]
    
    URL: https://www.postgresql.org/docs/15/sql-select.html
    
    ```

</details>

### 特定のコマンドの詳細を表示

```sql
\h ALTER INDEX
Command:     ALTER INDEX
Description: change the definition of an index
Syntax:
ALTER INDEX [ IF EXISTS ] name RENAME TO new_name
ALTER INDEX [ IF EXISTS ] name SET TABLESPACE tablespace_name
ALTER INDEX name ATTACH PARTITION index_name
ALTER INDEX name [ NO ] DEPENDS ON EXTENSION extension_name
ALTER INDEX [ IF EXISTS ] name SET ( storage_parameter [= value] [, ... ] )
ALTER INDEX [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
ALTER INDEX [ IF EXISTS ] name ALTER [ COLUMN ] column_number
    SET STATISTICS integer
ALTER INDEX ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
    SET TABLESPACE new_tablespace [ NOWAIT ]

URL: https://www.postgresql.org/docs/15/sql-alterindex.html
```

## まとめ

個人的には使い所はあまりないかと思っていたが、ブラウザで調べることを考えると公式へのリンクも表示されることを考えると効率的に調べることができそうですね。