/*
 * *** Do not change this file by hand. It is automatically
 * *** generated from the DocBook documentation.
 *
 * generated by src/bin/psql/create_help.pl
 *
 */

#define N_(x) (x)				/* gettext noop */

#include "postgres_fe.h"
#include "sql_help.h"

static void
sql_help_ABORT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ABORT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]");
}

static void
sql_help_ALTER_AGGREGATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER AGGREGATE %s ( %s ) RENAME TO %s\n"
					  "ALTER AGGREGATE %s ( %s )\n"
					  "                OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER AGGREGATE %s ( %s ) SET SCHEMA %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "* |\n"
					  "[ %s ] [ %s ] %s [ , ... ] |\n"
					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
					  _("name"),
					  _("aggregate_signature"),
					  _("new_name"),
					  _("name"),
					  _("aggregate_signature"),
					  _("new_owner"),
					  _("name"),
					  _("aggregate_signature"),
					  _("new_schema"),
					  _("where aggregate_signature is:"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"));
}

static void
sql_help_ALTER_COLLATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER COLLATION %s REFRESH VERSION\n"
					  "\n"
					  "ALTER COLLATION %s RENAME TO %s\n"
					  "ALTER COLLATION %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER COLLATION %s SET SCHEMA %s",
					  _("name"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_schema"));
}

static void
sql_help_ALTER_CONVERSION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER CONVERSION %s RENAME TO %s\n"
					  "ALTER CONVERSION %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER CONVERSION %s SET SCHEMA %s",
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_schema"));
}

static void
sql_help_ALTER_DATABASE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER DATABASE %s [ [ WITH ] %s [ ... ] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ALLOW_CONNECTIONS %s\n"
					  "    CONNECTION LIMIT %s\n"
					  "    IS_TEMPLATE %s\n"
					  "\n"
					  "ALTER DATABASE %s RENAME TO %s\n"
					  "\n"
					  "ALTER DATABASE %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "\n"
					  "ALTER DATABASE %s SET TABLESPACE %s\n"
					  "\n"
					  "ALTER DATABASE %s REFRESH COLLATION VERSION\n"
					  "\n"
					  "ALTER DATABASE %s SET %s { TO | = } { %s | DEFAULT }\n"
					  "ALTER DATABASE %s SET %s FROM CURRENT\n"
					  "ALTER DATABASE %s RESET %s\n"
					  "ALTER DATABASE %s RESET ALL",
					  _("name"),
					  _("option"),
					  _("where option can be:"),
					  _("allowconn"),
					  _("connlimit"),
					  _("istemplate"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_tablespace"),
					  _("name"),
					  _("name"),
					  _("configuration_parameter"),
					  _("value"),
					  _("name"),
					  _("configuration_parameter"),
					  _("name"),
					  _("configuration_parameter"),
					  _("name"));
}

static void
sql_help_ALTER_DEFAULT_PRIVILEGES(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER DEFAULT PRIVILEGES\n"
					  "    [ FOR { ROLE | USER } %s [, ...] ]\n"
					  "    [ IN SCHEMA %s [, ...] ]\n"
					  "    %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON TABLES\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { { USAGE | SELECT | UPDATE }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON SEQUENCES\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n"
					  "    ON { FUNCTIONS | ROUTINES }\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON TYPES\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { { USAGE | CREATE }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON SCHEMAS\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON TABLES\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { USAGE | SELECT | UPDATE }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON SEQUENCES\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { EXECUTE | ALL [ PRIVILEGES ] }\n"
					  "    ON { FUNCTIONS | ROUTINES }\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON TYPES\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { USAGE | CREATE }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON SCHEMAS\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]",
					  _("target_role"),
					  _("schema_name"),
					  _("abbreviated_grant_or_revoke"),
					  _("where abbreviated_grant_or_revoke is one of:"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"));
}

static void
sql_help_ALTER_DOMAIN(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER DOMAIN %s\n"
					  "    { SET DEFAULT %s | DROP DEFAULT }\n"
					  "ALTER DOMAIN %s\n"
					  "    { SET | DROP } NOT NULL\n"
					  "ALTER DOMAIN %s\n"
					  "    ADD %s [ NOT VALID ]\n"
					  "ALTER DOMAIN %s\n"
					  "    DROP CONSTRAINT [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
					  "ALTER DOMAIN %s\n"
					  "     RENAME CONSTRAINT %s TO %s\n"
					  "ALTER DOMAIN %s\n"
					  "    VALIDATE CONSTRAINT %s\n"
					  "ALTER DOMAIN %s\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER DOMAIN %s\n"
					  "    RENAME TO %s\n"
					  "ALTER DOMAIN %s\n"
					  "    SET SCHEMA %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ CONSTRAINT %s ]\n"
					  "{ NOT NULL | CHECK (%s) }",
					  _("name"),
					  _("expression"),
					  _("name"),
					  _("name"),
					  _("domain_constraint"),
					  _("name"),
					  _("constraint_name"),
					  _("name"),
					  _("constraint_name"),
					  _("new_constraint_name"),
					  _("name"),
					  _("constraint_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("where domain_constraint is:"),
					  _("constraint_name"),
					  _("expression"));
}

static void
sql_help_ALTER_EVENT_TRIGGER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER EVENT TRIGGER %s DISABLE\n"
					  "ALTER EVENT TRIGGER %s ENABLE [ REPLICA | ALWAYS ]\n"
					  "ALTER EVENT TRIGGER %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER EVENT TRIGGER %s RENAME TO %s",
					  _("name"),
					  _("name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"));
}

static void
sql_help_ALTER_EXTENSION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER EXTENSION %s UPDATE [ TO %s ]\n"
					  "ALTER EXTENSION %s SET SCHEMA %s\n"
					  "ALTER EXTENSION %s ADD %s\n"
					  "ALTER EXTENSION %s DROP %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "  ACCESS METHOD %s |\n"
					  "  AGGREGATE %s ( %s ) |\n"
					  "  CAST (%s AS %s) |\n"
					  "  COLLATION %s |\n"
					  "  CONVERSION %s |\n"
					  "  DOMAIN %s |\n"
					  "  EVENT TRIGGER %s |\n"
					  "  FOREIGN DATA WRAPPER %s |\n"
					  "  FOREIGN TABLE %s |\n"
					  "  FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
					  "  MATERIALIZED VIEW %s |\n"
					  "  OPERATOR %s (%s, %s) |\n"
					  "  OPERATOR CLASS %s USING %s |\n"
					  "  OPERATOR FAMILY %s USING %s |\n"
					  "  [ PROCEDURAL ] LANGUAGE %s |\n"
					  "  PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
					  "  ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
					  "  SCHEMA %s |\n"
					  "  SEQUENCE %s |\n"
					  "  SERVER %s |\n"
					  "  TABLE %s |\n"
					  "  TEXT SEARCH CONFIGURATION %s |\n"
					  "  TEXT SEARCH DICTIONARY %s |\n"
					  "  TEXT SEARCH PARSER %s |\n"
					  "  TEXT SEARCH TEMPLATE %s |\n"
					  "  TRANSFORM FOR %s LANGUAGE %s |\n"
					  "  TYPE %s |\n"
					  "  VIEW %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "* |\n"
					  "[ %s ] [ %s ] %s [ , ... ] |\n"
					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
					  _("name"),
					  _("new_version"),
					  _("name"),
					  _("new_schema"),
					  _("name"),
					  _("member_object"),
					  _("name"),
					  _("member_object"),
					  _("where member_object is:"),
					  _("object_name"),
					  _("aggregate_name"),
					  _("aggregate_signature"),
					  _("source_type"),
					  _("target_type"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("function_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("object_name"),
					  _("operator_name"),
					  _("left_type"),
					  _("right_type"),
					  _("object_name"),
					  _("index_method"),
					  _("object_name"),
					  _("index_method"),
					  _("object_name"),
					  _("procedure_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("routine_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("type_name"),
					  _("lang_name"),
					  _("object_name"),
					  _("object_name"),
					  _("and aggregate_signature is:"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"));
}

static void
sql_help_ALTER_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER FOREIGN DATA WRAPPER %s\n"
					  "    [ HANDLER %s | NO HANDLER ]\n"
					  "    [ VALIDATOR %s | NO VALIDATOR ]\n"
					  "    [ OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ]) ]\n"
					  "ALTER FOREIGN DATA WRAPPER %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER FOREIGN DATA WRAPPER %s RENAME TO %s",
					  _("name"),
					  _("handler_function"),
					  _("validator_function"),
					  _("option"),
					  _("value"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"));
}

static void
sql_help_ALTER_FOREIGN_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
					  "    %s [, ... ]\n"
					  "ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
					  "    RENAME [ COLUMN ] %s TO %s\n"
					  "ALTER FOREIGN TABLE [ IF EXISTS ] %s\n"
					  "    RENAME TO %s\n"
					  "ALTER FOREIGN TABLE [ IF EXISTS ] %s\n"
					  "    SET SCHEMA %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ADD [ COLUMN ] %s %s [ COLLATE %s ] [ %s [ ... ] ]\n"
					  "    DROP [ COLUMN ] [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
					  "    ALTER [ COLUMN ] %s [ SET DATA ] TYPE %s [ COLLATE %s ]\n"
					  "    ALTER [ COLUMN ] %s SET DEFAULT %s\n"
					  "    ALTER [ COLUMN ] %s DROP DEFAULT\n"
					  "    ALTER [ COLUMN ] %s { SET | DROP } NOT NULL\n"
					  "    ALTER [ COLUMN ] %s SET STATISTICS %s\n"
					  "    ALTER [ COLUMN ] %s SET ( %s = %s [, ... ] )\n"
					  "    ALTER [ COLUMN ] %s RESET ( %s [, ... ] )\n"
					  "    ALTER [ COLUMN ] %s SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }\n"
					  "    ALTER [ COLUMN ] %s OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ])\n"
					  "    ADD %s [ NOT VALID ]\n"
					  "    VALIDATE CONSTRAINT %s\n"
					  "    DROP CONSTRAINT [ IF EXISTS ]  %s [ RESTRICT | CASCADE ]\n"
					  "    DISABLE TRIGGER [ %s | ALL | USER ]\n"
					  "    ENABLE TRIGGER [ %s | ALL | USER ]\n"
					  "    ENABLE REPLICA TRIGGER %s\n"
					  "    ENABLE ALWAYS TRIGGER %s\n"
					  "    SET WITHOUT OIDS\n"
					  "    INHERIT %s\n"
					  "    NO INHERIT %s\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "    OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ])",
					  _("name"),
					  _("action"),
					  _("name"),
					  _("column_name"),
					  _("new_column_name"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("where action is one of:"),
					  _("column_name"),
					  _("data_type"),
					  _("collation"),
					  _("column_constraint"),
					  _("column_name"),
					  _("column_name"),
					  _("data_type"),
					  _("collation"),
					  _("column_name"),
					  _("expression"),
					  _("column_name"),
					  _("column_name"),
					  _("column_name"),
					  _("integer"),
					  _("column_name"),
					  _("attribute_option"),
					  _("value"),
					  _("column_name"),
					  _("attribute_option"),
					  _("column_name"),
					  _("column_name"),
					  _("option"),
					  _("value"),
					  _("table_constraint"),
					  _("constraint_name"),
					  _("constraint_name"),
					  _("trigger_name"),
					  _("trigger_name"),
					  _("trigger_name"),
					  _("trigger_name"),
					  _("parent_table"),
					  _("parent_table"),
					  _("new_owner"),
					  _("option"),
					  _("value"));
}

static void
sql_help_ALTER_FUNCTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    %s [ ... ] [ RESTRICT ]\n"
					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    RENAME TO %s\n"
					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    SET SCHEMA %s\n"
					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    [ NO ] DEPENDS ON EXTENSION %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
					  "    IMMUTABLE | STABLE | VOLATILE\n"
					  "    [ NOT ] LEAKPROOF\n"
					  "    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
					  "    PARALLEL { UNSAFE | RESTRICTED | SAFE }\n"
					  "    COST %s\n"
					  "    ROWS %s\n"
					  "    SUPPORT %s\n"
					  "    SET %s { TO | = } { %s | DEFAULT }\n"
					  "    SET %s FROM CURRENT\n"
					  "    RESET %s\n"
					  "    RESET ALL",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("action"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("new_name"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("new_owner"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("new_schema"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("extension_name"),
					  _("where action is one of:"),
					  _("execution_cost"),
					  _("result_rows"),
					  _("support_function"),
					  _("configuration_parameter"),
					  _("value"),
					  _("configuration_parameter"),
					  _("configuration_parameter"));
}

static void
sql_help_ALTER_GROUP(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER GROUP %s ADD USER %s [, ... ]\n"
					  "ALTER GROUP %s DROP USER %s [, ... ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s\n"
					  "  | CURRENT_ROLE\n"
					  "  | CURRENT_USER\n"
					  "  | SESSION_USER\n"
					  "\n"
					  "ALTER GROUP %s RENAME TO %s",
					  _("role_specification"),
					  _("user_name"),
					  _("role_specification"),
					  _("user_name"),
					  _("where role_specification can be:"),
					  _("role_name"),
					  _("group_name"),
					  _("new_name"));
}

static void
sql_help_ALTER_INDEX(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER INDEX [ IF EXISTS ] %s RENAME TO %s\n"
					  "ALTER INDEX [ IF EXISTS ] %s SET TABLESPACE %s\n"
					  "ALTER INDEX %s ATTACH PARTITION %s\n"
					  "ALTER INDEX %s [ NO ] DEPENDS ON EXTENSION %s\n"
					  "ALTER INDEX [ IF EXISTS ] %s SET ( %s [= %s] [, ... ] )\n"
					  "ALTER INDEX [ IF EXISTS ] %s RESET ( %s [, ... ] )\n"
					  "ALTER INDEX [ IF EXISTS ] %s ALTER [ COLUMN ] %s\n"
					  "    SET STATISTICS %s\n"
					  "ALTER INDEX ALL IN TABLESPACE %s [ OWNED BY %s [, ... ] ]\n"
					  "    SET TABLESPACE %s [ NOWAIT ]",
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("tablespace_name"),
					  _("name"),
					  _("index_name"),
					  _("name"),
					  _("extension_name"),
					  _("name"),
					  _("storage_parameter"),
					  _("value"),
					  _("name"),
					  _("storage_parameter"),
					  _("name"),
					  _("column_number"),
					  _("integer"),
					  _("name"),
					  _("role_name"),
					  _("new_tablespace"));
}

static void
sql_help_ALTER_LANGUAGE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER [ PROCEDURAL ] LANGUAGE %s RENAME TO %s\n"
					  "ALTER [ PROCEDURAL ] LANGUAGE %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }",
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"));
}

static void
sql_help_ALTER_LARGE_OBJECT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER LARGE OBJECT %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }",
					  _("large_object_oid"),
					  _("new_owner"));
}

static void
sql_help_ALTER_MATERIALIZED_VIEW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
					  "    %s [, ... ]\n"
					  "ALTER MATERIALIZED VIEW %s\n"
					  "    [ NO ] DEPENDS ON EXTENSION %s\n"
					  "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
					  "    RENAME [ COLUMN ] %s TO %s\n"
					  "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
					  "    RENAME TO %s\n"
					  "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
					  "    SET SCHEMA %s\n"
					  "ALTER MATERIALIZED VIEW ALL IN TABLESPACE %s [ OWNED BY %s [, ... ] ]\n"
					  "    SET TABLESPACE %s [ NOWAIT ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ALTER [ COLUMN ] %s SET STATISTICS %s\n"
					  "    ALTER [ COLUMN ] %s SET ( %s = %s [, ... ] )\n"
					  "    ALTER [ COLUMN ] %s RESET ( %s [, ... ] )\n"
					  "    ALTER [ COLUMN ] %s SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }\n"
					  "    ALTER [ COLUMN ] %s SET COMPRESSION %s\n"
					  "    CLUSTER ON %s\n"
					  "    SET WITHOUT CLUSTER\n"
					  "    SET ACCESS METHOD %s\n"
					  "    SET TABLESPACE %s\n"
					  "    SET ( %s [= %s] [, ... ] )\n"
					  "    RESET ( %s [, ... ] )\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }",
					  _("name"),
					  _("action"),
					  _("name"),
					  _("extension_name"),
					  _("name"),
					  _("column_name"),
					  _("new_column_name"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("name"),
					  _("role_name"),
					  _("new_tablespace"),
					  _("where action is one of:"),
					  _("column_name"),
					  _("integer"),
					  _("column_name"),
					  _("attribute_option"),
					  _("value"),
					  _("column_name"),
					  _("attribute_option"),
					  _("column_name"),
					  _("column_name"),
					  _("compression_method"),
					  _("index_name"),
					  _("new_access_method"),
					  _("new_tablespace"),
					  _("storage_parameter"),
					  _("value"),
					  _("storage_parameter"),
					  _("new_owner"));
}

static void
sql_help_ALTER_OPERATOR(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER OPERATOR %s ( { %s | NONE } , %s )\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "\n"
					  "ALTER OPERATOR %s ( { %s | NONE } , %s )\n"
					  "    SET SCHEMA %s\n"
					  "\n"
					  "ALTER OPERATOR %s ( { %s | NONE } , %s )\n"
					  "    SET ( {  RESTRICT = { %s | NONE }\n"
					  "           | JOIN = { %s | NONE }\n"
					  "         } [, ... ] )",
					  _("name"),
					  _("left_type"),
					  _("right_type"),
					  _("new_owner"),
					  _("name"),
					  _("left_type"),
					  _("right_type"),
					  _("new_schema"),
					  _("name"),
					  _("left_type"),
					  _("right_type"),
					  _("res_proc"),
					  _("join_proc"));
}

static void
sql_help_ALTER_OPERATOR_CLASS(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER OPERATOR CLASS %s USING %s\n"
					  "    RENAME TO %s\n"
					  "\n"
					  "ALTER OPERATOR CLASS %s USING %s\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "\n"
					  "ALTER OPERATOR CLASS %s USING %s\n"
					  "    SET SCHEMA %s",
					  _("name"),
					  _("index_method"),
					  _("new_name"),
					  _("name"),
					  _("index_method"),
					  _("new_owner"),
					  _("name"),
					  _("index_method"),
					  _("new_schema"));
}

static void
sql_help_ALTER_OPERATOR_FAMILY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER OPERATOR FAMILY %s USING %s ADD\n"
					  "  {  OPERATOR %s %s ( %s, %s )\n"
					  "              [ FOR SEARCH | FOR ORDER BY %s ]\n"
					  "   | FUNCTION %s [ ( %s [ , %s ] ) ]\n"
					  "              %s [ ( %s [, ...] ) ]\n"
					  "  } [, ... ]\n"
					  "\n"
					  "ALTER OPERATOR FAMILY %s USING %s DROP\n"
					  "  {  OPERATOR %s ( %s [ , %s ] )\n"
					  "   | FUNCTION %s ( %s [ , %s ] )\n"
					  "  } [, ... ]\n"
					  "\n"
					  "ALTER OPERATOR FAMILY %s USING %s\n"
					  "    RENAME TO %s\n"
					  "\n"
					  "ALTER OPERATOR FAMILY %s USING %s\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "\n"
					  "ALTER OPERATOR FAMILY %s USING %s\n"
					  "    SET SCHEMA %s",
					  _("name"),
					  _("index_method"),
					  _("strategy_number"),
					  _("operator_name"),
					  _("op_type"),
					  _("op_type"),
					  _("sort_family_name"),
					  _("support_number"),
					  _("op_type"),
					  _("op_type"),
					  _("function_name"),
					  _("argument_type"),
					  _("name"),
					  _("index_method"),
					  _("strategy_number"),
					  _("op_type"),
					  _("op_type"),
					  _("support_number"),
					  _("op_type"),
					  _("op_type"),
					  _("name"),
					  _("index_method"),
					  _("new_name"),
					  _("name"),
					  _("index_method"),
					  _("new_owner"),
					  _("name"),
					  _("index_method"),
					  _("new_schema"));
}

static void
sql_help_ALTER_POLICY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER POLICY %s ON %s RENAME TO %s\n"
					  "\n"
					  "ALTER POLICY %s ON %s\n"
					  "    [ TO { %s | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]\n"
					  "    [ USING ( %s ) ]\n"
					  "    [ WITH CHECK ( %s ) ]",
					  _("name"),
					  _("table_name"),
					  _("new_name"),
					  _("name"),
					  _("table_name"),
					  _("role_name"),
					  _("using_expression"),
					  _("check_expression"));
}

static void
sql_help_ALTER_PROCEDURE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    %s [ ... ] [ RESTRICT ]\n"
					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    RENAME TO %s\n"
					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    SET SCHEMA %s\n"
					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    [ NO ] DEPENDS ON EXTENSION %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
					  "    SET %s { TO | = } { %s | DEFAULT }\n"
					  "    SET %s FROM CURRENT\n"
					  "    RESET %s\n"
					  "    RESET ALL",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("action"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("new_name"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("new_owner"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("new_schema"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("extension_name"),
					  _("where action is one of:"),
					  _("configuration_parameter"),
					  _("value"),
					  _("configuration_parameter"),
					  _("configuration_parameter"));
}

static void
sql_help_ALTER_PUBLICATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER PUBLICATION %s ADD %s [, ...]\n"
					  "ALTER PUBLICATION %s SET %s [, ...]\n"
					  "ALTER PUBLICATION %s DROP %s [, ...]\n"
					  "ALTER PUBLICATION %s SET ( %s [= %s] [, ... ] )\n"
					  "ALTER PUBLICATION %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER PUBLICATION %s RENAME TO %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    TABLE [ ONLY ] %s [ * ] [ ( %s [, ... ] ) ] [ WHERE ( %s ) ] [, ... ]\n"
					  "    TABLES IN SCHEMA { %s | CURRENT_SCHEMA } [, ... ]",
					  _("name"),
					  _("publication_object"),
					  _("name"),
					  _("publication_object"),
					  _("name"),
					  _("publication_object"),
					  _("name"),
					  _("publication_parameter"),
					  _("value"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"),
					  _("where publication_object is one of:"),
					  _("table_name"),
					  _("column_name"),
					  _("expression"),
					  _("schema_name"));
}

static void
sql_help_ALTER_ROLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER ROLE %s [ WITH ] %s [ ... ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "      SUPERUSER | NOSUPERUSER\n"
					  "    | CREATEDB | NOCREATEDB\n"
					  "    | CREATEROLE | NOCREATEROLE\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | REPLICATION | NOREPLICATION\n"
					  "    | BYPASSRLS | NOBYPASSRLS\n"
					  "    | CONNECTION LIMIT %s\n"
					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
					  "    | VALID UNTIL '%s'\n"
					  "\n"
					  "ALTER ROLE %s RENAME TO %s\n"
					  "\n"
					  "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] SET %s { TO | = } { %s | DEFAULT }\n"
					  "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] SET %s FROM CURRENT\n"
					  "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] RESET %s\n"
					  "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] RESET ALL\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s\n"
					  "  | CURRENT_ROLE\n"
					  "  | CURRENT_USER\n"
					  "  | SESSION_USER",
					  _("role_specification"),
					  _("option"),
					  _("where option can be:"),
					  _("connlimit"),
					  _("password"),
					  _("timestamp"),
					  _("name"),
					  _("new_name"),
					  _("role_specification"),
					  _("database_name"),
					  _("configuration_parameter"),
					  _("value"),
					  _("role_specification"),
					  _("database_name"),
					  _("configuration_parameter"),
					  _("role_specification"),
					  _("database_name"),
					  _("configuration_parameter"),
					  _("role_specification"),
					  _("database_name"),
					  _("where role_specification can be:"),
					  _("role_name"));
}

static void
sql_help_ALTER_ROUTINE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    %s [ ... ] [ RESTRICT ]\n"
					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    RENAME TO %s\n"
					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    SET SCHEMA %s\n"
					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
					  "    [ NO ] DEPENDS ON EXTENSION %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    IMMUTABLE | STABLE | VOLATILE\n"
					  "    [ NOT ] LEAKPROOF\n"
					  "    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
					  "    PARALLEL { UNSAFE | RESTRICTED | SAFE }\n"
					  "    COST %s\n"
					  "    ROWS %s\n"
					  "    SET %s { TO | = } { %s | DEFAULT }\n"
					  "    SET %s FROM CURRENT\n"
					  "    RESET %s\n"
					  "    RESET ALL",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("action"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("new_name"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("new_owner"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("new_schema"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("extension_name"),
					  _("where action is one of:"),
					  _("execution_cost"),
					  _("result_rows"),
					  _("configuration_parameter"),
					  _("value"),
					  _("configuration_parameter"),
					  _("configuration_parameter"));
}

static void
sql_help_ALTER_RULE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER RULE %s ON %s RENAME TO %s",
					  _("name"),
					  _("table_name"),
					  _("new_name"));
}

static void
sql_help_ALTER_SCHEMA(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER SCHEMA %s RENAME TO %s\n"
					  "ALTER SCHEMA %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }",
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"));
}

static void
sql_help_ALTER_SEQUENCE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER SEQUENCE [ IF EXISTS ] %s\n"
					  "    [ AS %s ]\n"
					  "    [ INCREMENT [ BY ] %s ]\n"
					  "    [ MINVALUE %s | NO MINVALUE ] [ MAXVALUE %s | NO MAXVALUE ]\n"
					  "    [ START [ WITH ] %s ]\n"
					  "    [ RESTART [ [ WITH ] %s ] ]\n"
					  "    [ CACHE %s ] [ [ NO ] CYCLE ]\n"
					  "    [ OWNED BY { %s.%s | NONE } ]\n"
					  "ALTER SEQUENCE [ IF EXISTS ] %s SET { LOGGED | UNLOGGED }\n"
					  "ALTER SEQUENCE [ IF EXISTS ] %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER SEQUENCE [ IF EXISTS ] %s RENAME TO %s\n"
					  "ALTER SEQUENCE [ IF EXISTS ] %s SET SCHEMA %s",
					  _("name"),
					  _("data_type"),
					  _("increment"),
					  _("minvalue"),
					  _("maxvalue"),
					  _("start"),
					  _("restart"),
					  _("cache"),
					  _("table_name"),
					  _("column_name"),
					  _("name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"));
}

static void
sql_help_ALTER_SERVER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER SERVER %s [ VERSION '%s' ]\n"
					  "    [ OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ] ) ]\n"
					  "ALTER SERVER %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER SERVER %s RENAME TO %s",
					  _("name"),
					  _("new_version"),
					  _("option"),
					  _("value"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"));
}

static void
sql_help_ALTER_STATISTICS(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER STATISTICS %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER STATISTICS %s RENAME TO %s\n"
					  "ALTER STATISTICS %s SET SCHEMA %s\n"
					  "ALTER STATISTICS %s SET STATISTICS %s",
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("name"),
					  _("new_target"));
}

static void
sql_help_ALTER_SUBSCRIPTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER SUBSCRIPTION %s CONNECTION '%s'\n"
					  "ALTER SUBSCRIPTION %s SET PUBLICATION %s [, ...] [ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "ALTER SUBSCRIPTION %s ADD PUBLICATION %s [, ...] [ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "ALTER SUBSCRIPTION %s DROP PUBLICATION %s [, ...] [ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "ALTER SUBSCRIPTION %s REFRESH PUBLICATION [ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "ALTER SUBSCRIPTION %s ENABLE\n"
					  "ALTER SUBSCRIPTION %s DISABLE\n"
					  "ALTER SUBSCRIPTION %s SET ( %s [= %s] [, ... ] )\n"
					  "ALTER SUBSCRIPTION %s SKIP ( %s = %s )\n"
					  "ALTER SUBSCRIPTION %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER SUBSCRIPTION %s RENAME TO %s",
					  _("name"),
					  _("conninfo"),
					  _("name"),
					  _("publication_name"),
					  _("publication_option"),
					  _("value"),
					  _("name"),
					  _("publication_name"),
					  _("publication_option"),
					  _("value"),
					  _("name"),
					  _("publication_name"),
					  _("publication_option"),
					  _("value"),
					  _("name"),
					  _("refresh_option"),
					  _("value"),
					  _("name"),
					  _("name"),
					  _("name"),
					  _("subscription_parameter"),
					  _("value"),
					  _("name"),
					  _("skip_option"),
					  _("value"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"));
}

static void
sql_help_ALTER_SYSTEM(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER SYSTEM SET %s { TO | = } { %s [, ...] | DEFAULT }\n"
					  "\n"
					  "ALTER SYSTEM RESET %s\n"
					  "ALTER SYSTEM RESET ALL",
					  _("configuration_parameter"),
					  _("value"),
					  _("configuration_parameter"));
}

static void
sql_help_ALTER_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
					  "    %s [, ... ]\n"
					  "ALTER TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
					  "    RENAME [ COLUMN ] %s TO %s\n"
					  "ALTER TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
					  "    RENAME CONSTRAINT %s TO %s\n"
					  "ALTER TABLE [ IF EXISTS ] %s\n"
					  "    RENAME TO %s\n"
					  "ALTER TABLE [ IF EXISTS ] %s\n"
					  "    SET SCHEMA %s\n"
					  "ALTER TABLE ALL IN TABLESPACE %s [ OWNED BY %s [, ... ] ]\n"
					  "    SET TABLESPACE %s [ NOWAIT ]\n"
					  "ALTER TABLE [ IF EXISTS ] %s\n"
					  "    ATTACH PARTITION %s { FOR VALUES %s | DEFAULT }\n"
					  "ALTER TABLE [ IF EXISTS ] %s\n"
					  "    DETACH PARTITION %s [ CONCURRENTLY | FINALIZE ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ADD [ COLUMN ] [ IF NOT EXISTS ] %s %s [ COLLATE %s ] [ %s [ ... ] ]\n"
					  "    DROP [ COLUMN ] [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
					  "    ALTER [ COLUMN ] %s [ SET DATA ] TYPE %s [ COLLATE %s ] [ USING %s ]\n"
					  "    ALTER [ COLUMN ] %s SET DEFAULT %s\n"
					  "    ALTER [ COLUMN ] %s DROP DEFAULT\n"
					  "    ALTER [ COLUMN ] %s { SET | DROP } NOT NULL\n"
					  "    ALTER [ COLUMN ] %s DROP EXPRESSION [ IF EXISTS ]\n"
					  "    ALTER [ COLUMN ] %s ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( %s ) ]\n"
					  "    ALTER [ COLUMN ] %s { SET GENERATED { ALWAYS | BY DEFAULT } | SET %s | RESTART [ [ WITH ] %s ] } [...]\n"
					  "    ALTER [ COLUMN ] %s DROP IDENTITY [ IF EXISTS ]\n"
					  "    ALTER [ COLUMN ] %s SET STATISTICS %s\n"
					  "    ALTER [ COLUMN ] %s SET ( %s = %s [, ... ] )\n"
					  "    ALTER [ COLUMN ] %s RESET ( %s [, ... ] )\n"
					  "    ALTER [ COLUMN ] %s SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }\n"
					  "    ALTER [ COLUMN ] %s SET COMPRESSION %s\n"
					  "    ADD %s [ NOT VALID ]\n"
					  "    ADD %s\n"
					  "    ALTER CONSTRAINT %s [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
					  "    VALIDATE CONSTRAINT %s\n"
					  "    DROP CONSTRAINT [ IF EXISTS ]  %s [ RESTRICT | CASCADE ]\n"
					  "    DISABLE TRIGGER [ %s | ALL | USER ]\n"
					  "    ENABLE TRIGGER [ %s | ALL | USER ]\n"
					  "    ENABLE REPLICA TRIGGER %s\n"
					  "    ENABLE ALWAYS TRIGGER %s\n"
					  "    DISABLE RULE %s\n"
					  "    ENABLE RULE %s\n"
					  "    ENABLE REPLICA RULE %s\n"
					  "    ENABLE ALWAYS RULE %s\n"
					  "    DISABLE ROW LEVEL SECURITY\n"
					  "    ENABLE ROW LEVEL SECURITY\n"
					  "    FORCE ROW LEVEL SECURITY\n"
					  "    NO FORCE ROW LEVEL SECURITY\n"
					  "    CLUSTER ON %s\n"
					  "    SET WITHOUT CLUSTER\n"
					  "    SET WITHOUT OIDS\n"
					  "    SET ACCESS METHOD %s\n"
					  "    SET TABLESPACE %s\n"
					  "    SET { LOGGED | UNLOGGED }\n"
					  "    SET ( %s [= %s] [, ... ] )\n"
					  "    RESET ( %s [, ... ] )\n"
					  "    INHERIT %s\n"
					  "    NO INHERIT %s\n"
					  "    OF %s\n"
					  "    NOT OF\n"
					  "    OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "    REPLICA IDENTITY { DEFAULT | USING INDEX %s | FULL | NOTHING }\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "IN ( %s [, ...] ) |\n"
					  "FROM ( { %s | MINVALUE | MAXVALUE } [, ...] )\n"
					  "  TO ( { %s | MINVALUE | MAXVALUE } [, ...] ) |\n"
					  "WITH ( MODULUS %s, REMAINDER %s )\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ CONSTRAINT %s ]\n"
					  "{ NOT NULL |\n"
					  "  NULL |\n"
					  "  CHECK ( %s ) [ NO INHERIT ] |\n"
					  "  DEFAULT %s |\n"
					  "  GENERATED ALWAYS AS ( %s ) STORED |\n"
					  "  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( %s ) ] |\n"
					  "  UNIQUE [ NULLS [ NOT ] DISTINCT ] %s |\n"
					  "  PRIMARY KEY %s |\n"
					  "  REFERENCES %s [ ( %s ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n"
					  "    [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
					  "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ CONSTRAINT %s ]\n"
					  "{ CHECK ( %s ) [ NO INHERIT ] |\n"
					  "  UNIQUE [ NULLS [ NOT ] DISTINCT ] ( %s [, ... ] ) %s |\n"
					  "  PRIMARY KEY ( %s [, ... ] ) %s |\n"
					  "  EXCLUDE [ USING %s ] ( %s WITH %s [, ... ] ) %s [ WHERE ( %s ) ] |\n"
					  "  FOREIGN KEY ( %s [, ... ] ) REFERENCES %s [ ( %s [, ... ] ) ]\n"
					  "    [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
					  "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ CONSTRAINT %s ]\n"
					  "    { UNIQUE | PRIMARY KEY } USING INDEX %s\n"
					  "    [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ INCLUDE ( %s [, ... ] ) ]\n"
					  "[ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "[ USING INDEX TABLESPACE %s ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "{ %s | ( %s ) } [ COLLATE %s ] [ %s [ ( %s = %s [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "{ NO ACTION | RESTRICT | CASCADE | SET NULL [ ( %s [, ... ] ) ] | SET DEFAULT [ ( %s [, ... ] ) ] }",
					  _("name"),
					  _("action"),
					  _("name"),
					  _("column_name"),
					  _("new_column_name"),
					  _("name"),
					  _("constraint_name"),
					  _("new_constraint_name"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("name"),
					  _("role_name"),
					  _("new_tablespace"),
					  _("name"),
					  _("partition_name"),
					  _("partition_bound_spec"),
					  _("name"),
					  _("partition_name"),
					  _("where action is one of:"),
					  _("column_name"),
					  _("data_type"),
					  _("collation"),
					  _("column_constraint"),
					  _("column_name"),
					  _("column_name"),
					  _("data_type"),
					  _("collation"),
					  _("expression"),
					  _("column_name"),
					  _("expression"),
					  _("column_name"),
					  _("column_name"),
					  _("column_name"),
					  _("column_name"),
					  _("sequence_options"),
					  _("column_name"),
					  _("sequence_option"),
					  _("restart"),
					  _("column_name"),
					  _("column_name"),
					  _("integer"),
					  _("column_name"),
					  _("attribute_option"),
					  _("value"),
					  _("column_name"),
					  _("attribute_option"),
					  _("column_name"),
					  _("column_name"),
					  _("compression_method"),
					  _("table_constraint"),
					  _("table_constraint_using_index"),
					  _("constraint_name"),
					  _("constraint_name"),
					  _("constraint_name"),
					  _("trigger_name"),
					  _("trigger_name"),
					  _("trigger_name"),
					  _("trigger_name"),
					  _("rewrite_rule_name"),
					  _("rewrite_rule_name"),
					  _("rewrite_rule_name"),
					  _("rewrite_rule_name"),
					  _("index_name"),
					  _("new_access_method"),
					  _("new_tablespace"),
					  _("storage_parameter"),
					  _("value"),
					  _("storage_parameter"),
					  _("parent_table"),
					  _("parent_table"),
					  _("type_name"),
					  _("new_owner"),
					  _("index_name"),
					  _("and partition_bound_spec is:"),
					  _("partition_bound_expr"),
					  _("partition_bound_expr"),
					  _("partition_bound_expr"),
					  _("numeric_literal"),
					  _("numeric_literal"),
					  _("and column_constraint is:"),
					  _("constraint_name"),
					  _("expression"),
					  _("default_expr"),
					  _("generation_expr"),
					  _("sequence_options"),
					  _("index_parameters"),
					  _("index_parameters"),
					  _("reftable"),
					  _("refcolumn"),
					  _("referential_action"),
					  _("referential_action"),
					  _("and table_constraint is:"),
					  _("constraint_name"),
					  _("expression"),
					  _("column_name"),
					  _("index_parameters"),
					  _("column_name"),
					  _("index_parameters"),
					  _("index_method"),
					  _("exclude_element"),
					  _("operator"),
					  _("index_parameters"),
					  _("predicate"),
					  _("column_name"),
					  _("reftable"),
					  _("refcolumn"),
					  _("referential_action"),
					  _("referential_action"),
					  _("and table_constraint_using_index is:"),
					  _("constraint_name"),
					  _("index_name"),
					  _("index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"),
					  _("column_name"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace_name"),
					  _("exclude_element in an EXCLUDE constraint is:"),
					  _("column_name"),
					  _("expression"),
					  _("collation"),
					  _("opclass"),
					  _("opclass_parameter"),
					  _("value"),
					  _("referential_action in a FOREIGN KEY/REFERENCES constraint is:"),
					  _("column_name"),
					  _("column_name"));
}

static void
sql_help_ALTER_TABLESPACE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TABLESPACE %s RENAME TO %s\n"
					  "ALTER TABLESPACE %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER TABLESPACE %s SET ( %s = %s [, ... ] )\n"
					  "ALTER TABLESPACE %s RESET ( %s [, ... ] )",
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("tablespace_option"),
					  _("value"),
					  _("name"),
					  _("tablespace_option"));
}

static void
sql_help_ALTER_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
					  "    ADD MAPPING FOR %s [, ... ] WITH %s [, ... ]\n"
					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
					  "    ALTER MAPPING FOR %s [, ... ] WITH %s [, ... ]\n"
					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
					  "    ALTER MAPPING REPLACE %s WITH %s\n"
					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
					  "    ALTER MAPPING FOR %s [, ... ] REPLACE %s WITH %s\n"
					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
					  "    DROP MAPPING [ IF EXISTS ] FOR %s [, ... ]\n"
					  "ALTER TEXT SEARCH CONFIGURATION %s RENAME TO %s\n"
					  "ALTER TEXT SEARCH CONFIGURATION %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER TEXT SEARCH CONFIGURATION %s SET SCHEMA %s",
					  _("name"),
					  _("token_type"),
					  _("dictionary_name"),
					  _("name"),
					  _("token_type"),
					  _("dictionary_name"),
					  _("name"),
					  _("old_dictionary"),
					  _("new_dictionary"),
					  _("name"),
					  _("token_type"),
					  _("old_dictionary"),
					  _("new_dictionary"),
					  _("name"),
					  _("token_type"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_schema"));
}

static void
sql_help_ALTER_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TEXT SEARCH DICTIONARY %s (\n"
					  "    %s [ = %s ] [, ... ]\n"
					  ")\n"
					  "ALTER TEXT SEARCH DICTIONARY %s RENAME TO %s\n"
					  "ALTER TEXT SEARCH DICTIONARY %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER TEXT SEARCH DICTIONARY %s SET SCHEMA %s",
					  _("name"),
					  _("option"),
					  _("value"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_schema"));
}

static void
sql_help_ALTER_TEXT_SEARCH_PARSER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TEXT SEARCH PARSER %s RENAME TO %s\n"
					  "ALTER TEXT SEARCH PARSER %s SET SCHEMA %s",
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"));
}

static void
sql_help_ALTER_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TEXT SEARCH TEMPLATE %s RENAME TO %s\n"
					  "ALTER TEXT SEARCH TEMPLATE %s SET SCHEMA %s",
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"));
}

static void
sql_help_ALTER_TRIGGER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TRIGGER %s ON %s RENAME TO %s\n"
					  "ALTER TRIGGER %s ON %s [ NO ] DEPENDS ON EXTENSION %s",
					  _("name"),
					  _("table_name"),
					  _("new_name"),
					  _("name"),
					  _("table_name"),
					  _("extension_name"));
}

static void
sql_help_ALTER_TYPE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TYPE %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER TYPE %s RENAME TO %s\n"
					  "ALTER TYPE %s SET SCHEMA %s\n"
					  "ALTER TYPE %s RENAME ATTRIBUTE %s TO %s [ CASCADE | RESTRICT ]\n"
					  "ALTER TYPE %s %s [, ... ]\n"
					  "ALTER TYPE %s ADD VALUE [ IF NOT EXISTS ] %s [ { BEFORE | AFTER } %s ]\n"
					  "ALTER TYPE %s RENAME VALUE %s TO %s\n"
					  "ALTER TYPE %s SET ( %s = %s [, ... ] )\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ADD ATTRIBUTE %s %s [ COLLATE %s ] [ CASCADE | RESTRICT ]\n"
					  "    DROP ATTRIBUTE [ IF EXISTS ] %s [ CASCADE | RESTRICT ]\n"
					  "    ALTER ATTRIBUTE %s [ SET DATA ] TYPE %s [ COLLATE %s ] [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("name"),
					  _("attribute_name"),
					  _("new_attribute_name"),
					  _("name"),
					  _("action"),
					  _("name"),
					  _("new_enum_value"),
					  _("neighbor_enum_value"),
					  _("name"),
					  _("existing_enum_value"),
					  _("new_enum_value"),
					  _("name"),
					  _("property"),
					  _("value"),
					  _("where action is one of:"),
					  _("attribute_name"),
					  _("data_type"),
					  _("collation"),
					  _("attribute_name"),
					  _("attribute_name"),
					  _("data_type"),
					  _("collation"));
}

static void
sql_help_ALTER_USER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER USER %s [ WITH ] %s [ ... ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "      SUPERUSER | NOSUPERUSER\n"
					  "    | CREATEDB | NOCREATEDB\n"
					  "    | CREATEROLE | NOCREATEROLE\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | REPLICATION | NOREPLICATION\n"
					  "    | BYPASSRLS | NOBYPASSRLS\n"
					  "    | CONNECTION LIMIT %s\n"
					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
					  "    | VALID UNTIL '%s'\n"
					  "\n"
					  "ALTER USER %s RENAME TO %s\n"
					  "\n"
					  "ALTER USER { %s | ALL } [ IN DATABASE %s ] SET %s { TO | = } { %s | DEFAULT }\n"
					  "ALTER USER { %s | ALL } [ IN DATABASE %s ] SET %s FROM CURRENT\n"
					  "ALTER USER { %s | ALL } [ IN DATABASE %s ] RESET %s\n"
					  "ALTER USER { %s | ALL } [ IN DATABASE %s ] RESET ALL\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s\n"
					  "  | CURRENT_ROLE\n"
					  "  | CURRENT_USER\n"
					  "  | SESSION_USER",
					  _("role_specification"),
					  _("option"),
					  _("where option can be:"),
					  _("connlimit"),
					  _("password"),
					  _("timestamp"),
					  _("name"),
					  _("new_name"),
					  _("role_specification"),
					  _("database_name"),
					  _("configuration_parameter"),
					  _("value"),
					  _("role_specification"),
					  _("database_name"),
					  _("configuration_parameter"),
					  _("role_specification"),
					  _("database_name"),
					  _("configuration_parameter"),
					  _("role_specification"),
					  _("database_name"),
					  _("where role_specification can be:"),
					  _("role_name"));
}

static void
sql_help_ALTER_USER_MAPPING(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER USER MAPPING FOR { %s | USER | CURRENT_ROLE | CURRENT_USER | SESSION_USER | PUBLIC }\n"
					  "    SERVER %s\n"
					  "    OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ] )",
					  _("user_name"),
					  _("server_name"),
					  _("option"),
					  _("value"));
}

static void
sql_help_ALTER_VIEW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER VIEW [ IF EXISTS ] %s ALTER [ COLUMN ] %s SET DEFAULT %s\n"
					  "ALTER VIEW [ IF EXISTS ] %s ALTER [ COLUMN ] %s DROP DEFAULT\n"
					  "ALTER VIEW [ IF EXISTS ] %s OWNER TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\n"
					  "ALTER VIEW [ IF EXISTS ] %s RENAME [ COLUMN ] %s TO %s\n"
					  "ALTER VIEW [ IF EXISTS ] %s RENAME TO %s\n"
					  "ALTER VIEW [ IF EXISTS ] %s SET SCHEMA %s\n"
					  "ALTER VIEW [ IF EXISTS ] %s SET ( %s [= %s] [, ... ] )\n"
					  "ALTER VIEW [ IF EXISTS ] %s RESET ( %s [, ... ] )",
					  _("name"),
					  _("column_name"),
					  _("expression"),
					  _("name"),
					  _("column_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("column_name"),
					  _("new_column_name"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("name"),
					  _("view_option_name"),
					  _("view_option_value"),
					  _("name"),
					  _("view_option_name"));
}

static void
sql_help_ANALYZE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ANALYZE [ ( %s [, ...] ) ] [ %s [, ...] ]\n"
					  "ANALYZE [ VERBOSE ] [ %s [, ...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    VERBOSE [ %s ]\n"
					  "    SKIP_LOCKED [ %s ]\n"
					  "    BUFFER_USAGE_LIMIT %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s [ ( %s [, ...] ) ]",
					  _("option"),
					  _("table_and_columns"),
					  _("table_and_columns"),
					  _("where option can be one of:"),
					  _("boolean"),
					  _("boolean"),
					  _("size"),
					  _("and table_and_columns is:"),
					  _("table_name"),
					  _("column_name"));
}

static void
sql_help_BEGIN(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "BEGIN [ WORK | TRANSACTION ] [ %s [, ...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
					  "    READ WRITE | READ ONLY\n"
					  "    [ NOT ] DEFERRABLE",
					  _("transaction_mode"),
					  _("where transaction_mode is one of:"));
}

static void
sql_help_CALL(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CALL %s ( [ %s ] [, ...] )",
					  _("name"),
					  _("argument"));
}

static void
sql_help_CHECKPOINT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CHECKPOINT");
}

static void
sql_help_CLOSE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CLOSE { %s | ALL }",
					  _("name"));
}

static void
sql_help_CLUSTER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CLUSTER [VERBOSE] %s [ USING %s ]\n"
					  "CLUSTER ( %s [, ...] ) %s [ USING %s ]\n"
					  "CLUSTER [VERBOSE]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    VERBOSE [ %s ]",
					  _("table_name"),
					  _("index_name"),
					  _("option"),
					  _("table_name"),
					  _("index_name"),
					  _("where option can be one of:"),
					  _("boolean"));
}

static void
sql_help_COMMENT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "COMMENT ON\n"
					  "{\n"
					  "  ACCESS METHOD %s |\n"
					  "  AGGREGATE %s ( %s ) |\n"
					  "  CAST (%s AS %s) |\n"
					  "  COLLATION %s |\n"
					  "  COLUMN %s.%s |\n"
					  "  CONSTRAINT %s ON %s |\n"
					  "  CONSTRAINT %s ON DOMAIN %s |\n"
					  "  CONVERSION %s |\n"
					  "  DATABASE %s |\n"
					  "  DOMAIN %s |\n"
					  "  EXTENSION %s |\n"
					  "  EVENT TRIGGER %s |\n"
					  "  FOREIGN DATA WRAPPER %s |\n"
					  "  FOREIGN TABLE %s |\n"
					  "  FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
					  "  INDEX %s |\n"
					  "  LARGE OBJECT %s |\n"
					  "  MATERIALIZED VIEW %s |\n"
					  "  OPERATOR %s (%s, %s) |\n"
					  "  OPERATOR CLASS %s USING %s |\n"
					  "  OPERATOR FAMILY %s USING %s |\n"
					  "  POLICY %s ON %s |\n"
					  "  [ PROCEDURAL ] LANGUAGE %s |\n"
					  "  PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
					  "  PUBLICATION %s |\n"
					  "  ROLE %s |\n"
					  "  ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
					  "  RULE %s ON %s |\n"
					  "  SCHEMA %s |\n"
					  "  SEQUENCE %s |\n"
					  "  SERVER %s |\n"
					  "  STATISTICS %s |\n"
					  "  SUBSCRIPTION %s |\n"
					  "  TABLE %s |\n"
					  "  TABLESPACE %s |\n"
					  "  TEXT SEARCH CONFIGURATION %s |\n"
					  "  TEXT SEARCH DICTIONARY %s |\n"
					  "  TEXT SEARCH PARSER %s |\n"
					  "  TEXT SEARCH TEMPLATE %s |\n"
					  "  TRANSFORM FOR %s LANGUAGE %s |\n"
					  "  TRIGGER %s ON %s |\n"
					  "  TYPE %s |\n"
					  "  VIEW %s\n"
					  "} IS { %s | NULL }\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "* |\n"
					  "[ %s ] [ %s ] %s [ , ... ] |\n"
					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
					  _("object_name"),
					  _("aggregate_name"),
					  _("aggregate_signature"),
					  _("source_type"),
					  _("target_type"),
					  _("object_name"),
					  _("relation_name"),
					  _("column_name"),
					  _("constraint_name"),
					  _("table_name"),
					  _("constraint_name"),
					  _("domain_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("function_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("object_name"),
					  _("large_object_oid"),
					  _("object_name"),
					  _("operator_name"),
					  _("left_type"),
					  _("right_type"),
					  _("object_name"),
					  _("index_method"),
					  _("object_name"),
					  _("index_method"),
					  _("policy_name"),
					  _("table_name"),
					  _("object_name"),
					  _("procedure_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("object_name"),
					  _("object_name"),
					  _("routine_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("rule_name"),
					  _("table_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("type_name"),
					  _("lang_name"),
					  _("trigger_name"),
					  _("table_name"),
					  _("object_name"),
					  _("object_name"),
					  _("string_literal"),
					  _("where aggregate_signature is:"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"));
}

static void
sql_help_COMMIT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "COMMIT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]");
}

static void
sql_help_COMMIT_PREPARED(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "COMMIT PREPARED %s",
					  _("transaction_id"));
}

static void
sql_help_COPY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "COPY %s [ ( %s [, ...] ) ]\n"
					  "    FROM { '%s' | PROGRAM '%s' | STDIN }\n"
					  "    [ [ WITH ] ( %s [, ...] ) ]\n"
					  "    [ WHERE %s ]\n"
					  "\n"
					  "COPY { %s [ ( %s [, ...] ) ] | ( %s ) }\n"
					  "    TO { '%s' | PROGRAM '%s' | STDOUT }\n"
					  "    [ [ WITH ] ( %s [, ...] ) ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    FORMAT %s\n"
					  "    FREEZE [ %s ]\n"
					  "    DELIMITER '%s'\n"
					  "    NULL '%s'\n"
					  "    DEFAULT '%s'\n"
					  "    HEADER [ %s | MATCH ]\n"
					  "    QUOTE '%s'\n"
					  "    ESCAPE '%s'\n"
					  "    FORCE_QUOTE { ( %s [, ...] ) | * }\n"
					  "    FORCE_NOT_NULL ( %s [, ...] )\n"
					  "    FORCE_NULL ( %s [, ...] )\n"
					  "    ENCODING '%s'",
					  _("table_name"),
					  _("column_name"),
					  _("filename"),
					  _("command"),
					  _("option"),
					  _("condition"),
					  _("table_name"),
					  _("column_name"),
					  _("query"),
					  _("filename"),
					  _("command"),
					  _("option"),
					  _("where option can be one of:"),
					  _("format_name"),
					  _("boolean"),
					  _("delimiter_character"),
					  _("null_string"),
					  _("default_string"),
					  _("boolean"),
					  _("quote_character"),
					  _("escape_character"),
					  _("column_name"),
					  _("column_name"),
					  _("column_name"),
					  _("encoding_name"));
}

static void
sql_help_CREATE_ACCESS_METHOD(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE ACCESS METHOD %s\n"
					  "    TYPE %s\n"
					  "    HANDLER %s",
					  _("name"),
					  _("access_method_type"),
					  _("handler_function"));
}

static void
sql_help_CREATE_AGGREGATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ OR REPLACE ] AGGREGATE %s ( [ %s ] [ %s ] %s [ , ... ] ) (\n"
					  "    SFUNC = %s,\n"
					  "    STYPE = %s\n"
					  "    [ , SSPACE = %s ]\n"
					  "    [ , FINALFUNC = %s ]\n"
					  "    [ , FINALFUNC_EXTRA ]\n"
					  "    [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
					  "    [ , COMBINEFUNC = %s ]\n"
					  "    [ , SERIALFUNC = %s ]\n"
					  "    [ , DESERIALFUNC = %s ]\n"
					  "    [ , INITCOND = %s ]\n"
					  "    [ , MSFUNC = %s ]\n"
					  "    [ , MINVFUNC = %s ]\n"
					  "    [ , MSTYPE = %s ]\n"
					  "    [ , MSSPACE = %s ]\n"
					  "    [ , MFINALFUNC = %s ]\n"
					  "    [ , MFINALFUNC_EXTRA ]\n"
					  "    [ , MFINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
					  "    [ , MINITCOND = %s ]\n"
					  "    [ , SORTOP = %s ]\n"
					  "    [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]\n"
					  ")\n"
					  "\n"
					  "CREATE [ OR REPLACE ] AGGREGATE %s ( [ [ %s ] [ %s ] %s [ , ... ] ]\n"
					  "                        ORDER BY [ %s ] [ %s ] %s [ , ... ] ) (\n"
					  "    SFUNC = %s,\n"
					  "    STYPE = %s\n"
					  "    [ , SSPACE = %s ]\n"
					  "    [ , FINALFUNC = %s ]\n"
					  "    [ , FINALFUNC_EXTRA ]\n"
					  "    [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
					  "    [ , INITCOND = %s ]\n"
					  "    [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]\n"
					  "    [ , HYPOTHETICAL ]\n"
					  ")\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "CREATE [ OR REPLACE ] AGGREGATE %s (\n"
					  "    BASETYPE = %s,\n"
					  "    SFUNC = %s,\n"
					  "    STYPE = %s\n"
					  "    [ , SSPACE = %s ]\n"
					  "    [ , FINALFUNC = %s ]\n"
					  "    [ , FINALFUNC_EXTRA ]\n"
					  "    [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
					  "    [ , COMBINEFUNC = %s ]\n"
					  "    [ , SERIALFUNC = %s ]\n"
					  "    [ , DESERIALFUNC = %s ]\n"
					  "    [ , INITCOND = %s ]\n"
					  "    [ , MSFUNC = %s ]\n"
					  "    [ , MINVFUNC = %s ]\n"
					  "    [ , MSTYPE = %s ]\n"
					  "    [ , MSSPACE = %s ]\n"
					  "    [ , MFINALFUNC = %s ]\n"
					  "    [ , MFINALFUNC_EXTRA ]\n"
					  "    [ , MFINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
					  "    [ , MINITCOND = %s ]\n"
					  "    [ , SORTOP = %s ]\n"
					  ")",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("arg_data_type"),
					  _("sfunc"),
					  _("state_data_type"),
					  _("state_data_size"),
					  _("ffunc"),
					  _("combinefunc"),
					  _("serialfunc"),
					  _("deserialfunc"),
					  _("initial_condition"),
					  _("msfunc"),
					  _("minvfunc"),
					  _("mstate_data_type"),
					  _("mstate_data_size"),
					  _("mffunc"),
					  _("minitial_condition"),
					  _("sort_operator"),
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("arg_data_type"),
					  _("argmode"),
					  _("argname"),
					  _("arg_data_type"),
					  _("sfunc"),
					  _("state_data_type"),
					  _("state_data_size"),
					  _("ffunc"),
					  _("initial_condition"),
					  _("or the old syntax"),
					  _("name"),
					  _("base_type"),
					  _("sfunc"),
					  _("state_data_type"),
					  _("state_data_size"),
					  _("ffunc"),
					  _("combinefunc"),
					  _("serialfunc"),
					  _("deserialfunc"),
					  _("initial_condition"),
					  _("msfunc"),
					  _("minvfunc"),
					  _("mstate_data_type"),
					  _("mstate_data_size"),
					  _("mffunc"),
					  _("minitial_condition"),
					  _("sort_operator"));
}

static void
sql_help_CREATE_CAST(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE CAST (%s AS %s)\n"
					  "    WITH FUNCTION %s [ (%s [, ...]) ]\n"
					  "    [ AS ASSIGNMENT | AS IMPLICIT ]\n"
					  "\n"
					  "CREATE CAST (%s AS %s)\n"
					  "    WITHOUT FUNCTION\n"
					  "    [ AS ASSIGNMENT | AS IMPLICIT ]\n"
					  "\n"
					  "CREATE CAST (%s AS %s)\n"
					  "    WITH INOUT\n"
					  "    [ AS ASSIGNMENT | AS IMPLICIT ]",
					  _("source_type"),
					  _("target_type"),
					  _("function_name"),
					  _("argument_type"),
					  _("source_type"),
					  _("target_type"),
					  _("source_type"),
					  _("target_type"));
}

static void
sql_help_CREATE_COLLATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE COLLATION [ IF NOT EXISTS ] %s (\n"
					  "    [ LOCALE = %s, ]\n"
					  "    [ LC_COLLATE = %s, ]\n"
					  "    [ LC_CTYPE = %s, ]\n"
					  "    [ PROVIDER = %s, ]\n"
					  "    [ DETERMINISTIC = %s, ]\n"
					  "    [ RULES = %s, ]\n"
					  "    [ VERSION = %s ]\n"
					  ")\n"
					  "CREATE COLLATION [ IF NOT EXISTS ] %s FROM %s",
					  _("name"),
					  _("locale"),
					  _("lc_collate"),
					  _("lc_ctype"),
					  _("provider"),
					  _("boolean"),
					  _("rules"),
					  _("version"),
					  _("name"),
					  _("existing_collation"));
}

static void
sql_help_CREATE_CONVERSION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ DEFAULT ] CONVERSION %s\n"
					  "    FOR %s TO %s FROM %s",
					  _("name"),
					  _("source_encoding"),
					  _("dest_encoding"),
					  _("function_name"));
}

static void
sql_help_CREATE_DATABASE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE DATABASE %s\n"
					  "    [ WITH ] [ OWNER [=] %s ]\n"
					  "           [ TEMPLATE [=] %s ]\n"
					  "           [ ENCODING [=] %s ]\n"
					  "           [ STRATEGY [=] %s ]\n"
					  "           [ LOCALE [=] %s ]\n"
					  "           [ LC_COLLATE [=] %s ]\n"
					  "           [ LC_CTYPE [=] %s ]\n"
					  "           [ ICU_LOCALE [=] %s ]\n"
					  "           [ ICU_RULES [=] %s ]\n"
					  "           [ LOCALE_PROVIDER [=] %s ]\n"
					  "           [ COLLATION_VERSION = %s ]\n"
					  "           [ TABLESPACE [=] %s ]\n"
					  "           [ ALLOW_CONNECTIONS [=] %s ]\n"
					  "           [ CONNECTION LIMIT [=] %s ]\n"
					  "           [ IS_TEMPLATE [=] %s ]\n"
					  "           [ OID [=] %s ]",
					  _("name"),
					  _("user_name"),
					  _("template"),
					  _("encoding"),
					  _("strategy"),
					  _("locale"),
					  _("lc_collate"),
					  _("lc_ctype"),
					  _("icu_locale"),
					  _("icu_rules"),
					  _("locale_provider"),
					  _("collation_version"),
					  _("tablespace_name"),
					  _("allowconn"),
					  _("connlimit"),
					  _("istemplate"),
					  _("oid"));
}

static void
sql_help_CREATE_DOMAIN(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE DOMAIN %s [ AS ] %s\n"
					  "    [ COLLATE %s ]\n"
					  "    [ DEFAULT %s ]\n"
					  "    [ %s [ ... ] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ CONSTRAINT %s ]\n"
					  "{ NOT NULL | NULL | CHECK (%s) }",
					  _("name"),
					  _("data_type"),
					  _("collation"),
					  _("expression"),
					  _("constraint"),
					  _("where constraint is:"),
					  _("constraint_name"),
					  _("expression"));
}

static void
sql_help_CREATE_EVENT_TRIGGER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE EVENT TRIGGER %s\n"
					  "    ON %s\n"
					  "    [ WHEN %s IN (%s [, ... ]) [ AND ... ] ]\n"
					  "    EXECUTE { FUNCTION | PROCEDURE } %s()",
					  _("name"),
					  _("event"),
					  _("filter_variable"),
					  _("filter_value"),
					  _("function_name"));
}

static void
sql_help_CREATE_EXTENSION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE EXTENSION [ IF NOT EXISTS ] %s\n"
					  "    [ WITH ] [ SCHEMA %s ]\n"
					  "             [ VERSION %s ]\n"
					  "             [ CASCADE ]",
					  _("extension_name"),
					  _("schema_name"),
					  _("version"));
}

static void
sql_help_CREATE_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE FOREIGN DATA WRAPPER %s\n"
					  "    [ HANDLER %s | NO HANDLER ]\n"
					  "    [ VALIDATOR %s | NO VALIDATOR ]\n"
					  "    [ OPTIONS ( %s '%s' [, ... ] ) ]",
					  _("name"),
					  _("handler_function"),
					  _("validator_function"),
					  _("option"),
					  _("value"));
}

static void
sql_help_CREATE_FOREIGN_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE FOREIGN TABLE [ IF NOT EXISTS ] %s ( [\n"
					  "  { %s %s [ OPTIONS ( %s '%s' [, ... ] ) ] [ COLLATE %s ] [ %s [ ... ] ]\n"
					  "    | %s }\n"
					  "    [, ... ]\n"
					  "] )\n"
					  "[ INHERITS ( %s [, ... ] ) ]\n"
					  "  SERVER %s\n"
					  "[ OPTIONS ( %s '%s' [, ... ] ) ]\n"
					  "\n"
					  "CREATE FOREIGN TABLE [ IF NOT EXISTS ] %s\n"
					  "  PARTITION OF %s [ (\n"
					  "  { %s [ WITH OPTIONS ] [ %s [ ... ] ]\n"
					  "    | %s }\n"
					  "    [, ... ]\n"
					  ") ]\n"
					  "{ FOR VALUES %s | DEFAULT }\n"
					  "  SERVER %s\n"
					  "[ OPTIONS ( %s '%s' [, ... ] ) ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ CONSTRAINT %s ]\n"
					  "{ NOT NULL |\n"
					  "  NULL |\n"
					  "  CHECK ( %s ) [ NO INHERIT ] |\n"
					  "  DEFAULT %s |\n"
					  "  GENERATED ALWAYS AS ( %s ) STORED }\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ CONSTRAINT %s ]\n"
					  "CHECK ( %s ) [ NO INHERIT ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "IN ( %s [, ...] ) |\n"
					  "FROM ( { %s | MINVALUE | MAXVALUE } [, ...] )\n"
					  "  TO ( { %s | MINVALUE | MAXVALUE } [, ...] ) |\n"
					  "WITH ( MODULUS %s, REMAINDER %s )",
					  _("table_name"),
					  _("column_name"),
					  _("data_type"),
					  _("option"),
					  _("value"),
					  _("collation"),
					  _("column_constraint"),
					  _("table_constraint"),
					  _("parent_table"),
					  _("server_name"),
					  _("option"),
					  _("value"),
					  _("table_name"),
					  _("parent_table"),
					  _("column_name"),
					  _("column_constraint"),
					  _("table_constraint"),
					  _("partition_bound_spec"),
					  _("server_name"),
					  _("option"),
					  _("value"),
					  _("where column_constraint is:"),
					  _("constraint_name"),
					  _("expression"),
					  _("default_expr"),
					  _("generation_expr"),
					  _("and table_constraint is:"),
					  _("constraint_name"),
					  _("expression"),
					  _("and partition_bound_spec is:"),
					  _("partition_bound_expr"),
					  _("partition_bound_expr"),
					  _("partition_bound_expr"),
					  _("numeric_literal"),
					  _("numeric_literal"));
}

static void
sql_help_CREATE_FUNCTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ OR REPLACE ] FUNCTION\n"
					  "    %s ( [ [ %s ] [ %s ] %s [ { DEFAULT | = } %s ] [, ...] ] )\n"
					  "    [ RETURNS %s\n"
					  "      | RETURNS TABLE ( %s %s [, ...] ) ]\n"
					  "  { LANGUAGE %s\n"
					  "    | TRANSFORM { FOR TYPE %s } [, ... ]\n"
					  "    | WINDOW\n"
					  "    | { IMMUTABLE | STABLE | VOLATILE }\n"
					  "    | [ NOT ] LEAKPROOF\n"
					  "    | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT }\n"
					  "    | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER }\n"
					  "    | PARALLEL { UNSAFE | RESTRICTED | SAFE }\n"
					  "    | COST %s\n"
					  "    | ROWS %s\n"
					  "    | SUPPORT %s\n"
					  "    | SET %s { TO %s | = %s | FROM CURRENT }\n"
					  "    | AS '%s'\n"
					  "    | AS '%s', '%s'\n"
					  "    | %s\n"
					  "  } ...",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("default_expr"),
					  _("rettype"),
					  _("column_name"),
					  _("column_type"),
					  _("lang_name"),
					  _("type_name"),
					  _("execution_cost"),
					  _("result_rows"),
					  _("support_function"),
					  _("configuration_parameter"),
					  _("value"),
					  _("value"),
					  _("definition"),
					  _("obj_file"),
					  _("link_symbol"),
					  _("sql_body"));
}

static void
sql_help_CREATE_GROUP(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE GROUP %s [ [ WITH ] %s [ ... ] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "      SUPERUSER | NOSUPERUSER\n"
					  "    | CREATEDB | NOCREATEDB\n"
					  "    | CREATEROLE | NOCREATEROLE\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | REPLICATION | NOREPLICATION\n"
					  "    | BYPASSRLS | NOBYPASSRLS\n"
					  "    | CONNECTION LIMIT %s\n"
					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
					  "    | VALID UNTIL '%s'\n"
					  "    | IN ROLE %s [, ...]\n"
					  "    | IN GROUP %s [, ...]\n"
					  "    | ROLE %s [, ...]\n"
					  "    | ADMIN %s [, ...]\n"
					  "    | USER %s [, ...]\n"
					  "    | SYSID %s",
					  _("name"),
					  _("option"),
					  _("where option can be:"),
					  _("connlimit"),
					  _("password"),
					  _("timestamp"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("uid"));
}

static void
sql_help_CREATE_INDEX(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] %s ] ON [ ONLY ] %s [ USING %s ]\n"
					  "    ( { %s | ( %s ) } [ COLLATE %s ] [ %s [ ( %s = %s [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n"
					  "    [ INCLUDE ( %s [, ...] ) ]\n"
					  "    [ NULLS [ NOT ] DISTINCT ]\n"
					  "    [ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "    [ TABLESPACE %s ]\n"
					  "    [ WHERE %s ]",
					  _("name"),
					  _("table_name"),
					  _("method"),
					  _("column_name"),
					  _("expression"),
					  _("collation"),
					  _("opclass"),
					  _("opclass_parameter"),
					  _("value"),
					  _("column_name"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace_name"),
					  _("predicate"));
}

static void
sql_help_CREATE_LANGUAGE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE %s\n"
					  "    HANDLER %s [ INLINE %s ] [ VALIDATOR %s ]\n"
					  "CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE %s",
					  _("name"),
					  _("call_handler"),
					  _("inline_handler"),
					  _("valfunction"),
					  _("name"));
}

static void
sql_help_CREATE_MATERIALIZED_VIEW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] %s\n"
					  "    [ (%s [, ...] ) ]\n"
					  "    [ USING %s ]\n"
					  "    [ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "    [ TABLESPACE %s ]\n"
					  "    AS %s\n"
					  "    [ WITH [ NO ] DATA ]",
					  _("table_name"),
					  _("column_name"),
					  _("method"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace_name"),
					  _("query"));
}

static void
sql_help_CREATE_OPERATOR(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE OPERATOR %s (\n"
					  "    {FUNCTION|PROCEDURE} = %s\n"
					  "    [, LEFTARG = %s ] [, RIGHTARG = %s ]\n"
					  "    [, COMMUTATOR = %s ] [, NEGATOR = %s ]\n"
					  "    [, RESTRICT = %s ] [, JOIN = %s ]\n"
					  "    [, HASHES ] [, MERGES ]\n"
					  ")",
					  _("name"),
					  _("function_name"),
					  _("left_type"),
					  _("right_type"),
					  _("com_op"),
					  _("neg_op"),
					  _("res_proc"),
					  _("join_proc"));
}

static void
sql_help_CREATE_OPERATOR_CLASS(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE OPERATOR CLASS %s [ DEFAULT ] FOR TYPE %s\n"
					  "  USING %s [ FAMILY %s ] AS\n"
					  "  {  OPERATOR %s %s [ ( %s, %s ) ] [ FOR SEARCH | FOR ORDER BY %s ]\n"
					  "   | FUNCTION %s [ ( %s [ , %s ] ) ] %s ( %s [, ...] )\n"
					  "   | STORAGE %s\n"
					  "  } [, ... ]",
					  _("name"),
					  _("data_type"),
					  _("index_method"),
					  _("family_name"),
					  _("strategy_number"),
					  _("operator_name"),
					  _("op_type"),
					  _("op_type"),
					  _("sort_family_name"),
					  _("support_number"),
					  _("op_type"),
					  _("op_type"),
					  _("function_name"),
					  _("argument_type"),
					  _("storage_type"));
}

static void
sql_help_CREATE_OPERATOR_FAMILY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE OPERATOR FAMILY %s USING %s",
					  _("name"),
					  _("index_method"));
}

static void
sql_help_CREATE_POLICY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE POLICY %s ON %s\n"
					  "    [ AS { PERMISSIVE | RESTRICTIVE } ]\n"
					  "    [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]\n"
					  "    [ TO { %s | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]\n"
					  "    [ USING ( %s ) ]\n"
					  "    [ WITH CHECK ( %s ) ]",
					  _("name"),
					  _("table_name"),
					  _("role_name"),
					  _("using_expression"),
					  _("check_expression"));
}

static void
sql_help_CREATE_PROCEDURE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ OR REPLACE ] PROCEDURE\n"
					  "    %s ( [ [ %s ] [ %s ] %s [ { DEFAULT | = } %s ] [, ...] ] )\n"
					  "  { LANGUAGE %s\n"
					  "    | TRANSFORM { FOR TYPE %s } [, ... ]\n"
					  "    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
					  "    | SET %s { TO %s | = %s | FROM CURRENT }\n"
					  "    | AS '%s'\n"
					  "    | AS '%s', '%s'\n"
					  "    | %s\n"
					  "  } ...",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("default_expr"),
					  _("lang_name"),
					  _("type_name"),
					  _("configuration_parameter"),
					  _("value"),
					  _("value"),
					  _("definition"),
					  _("obj_file"),
					  _("link_symbol"),
					  _("sql_body"));
}

static void
sql_help_CREATE_PUBLICATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE PUBLICATION %s\n"
					  "    [ FOR ALL TABLES\n"
					  "      | FOR %s [, ... ] ]\n"
					  "    [ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    TABLE [ ONLY ] %s [ * ] [ ( %s [, ... ] ) ] [ WHERE ( %s ) ] [, ... ]\n"
					  "    TABLES IN SCHEMA { %s | CURRENT_SCHEMA } [, ... ]",
					  _("name"),
					  _("publication_object"),
					  _("publication_parameter"),
					  _("value"),
					  _("where publication_object is one of:"),
					  _("table_name"),
					  _("column_name"),
					  _("expression"),
					  _("schema_name"));
}

static void
sql_help_CREATE_ROLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE ROLE %s [ [ WITH ] %s [ ... ] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "      SUPERUSER | NOSUPERUSER\n"
					  "    | CREATEDB | NOCREATEDB\n"
					  "    | CREATEROLE | NOCREATEROLE\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | REPLICATION | NOREPLICATION\n"
					  "    | BYPASSRLS | NOBYPASSRLS\n"
					  "    | CONNECTION LIMIT %s\n"
					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
					  "    | VALID UNTIL '%s'\n"
					  "    | IN ROLE %s [, ...]\n"
					  "    | IN GROUP %s [, ...]\n"
					  "    | ROLE %s [, ...]\n"
					  "    | ADMIN %s [, ...]\n"
					  "    | USER %s [, ...]\n"
					  "    | SYSID %s",
					  _("name"),
					  _("option"),
					  _("where option can be:"),
					  _("connlimit"),
					  _("password"),
					  _("timestamp"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("uid"));
}

static void
sql_help_CREATE_RULE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ OR REPLACE ] RULE %s AS ON %s\n"
					  "    TO %s [ WHERE %s ]\n"
					  "    DO [ ALSO | INSTEAD ] { NOTHING | %s | ( %s ; %s ... ) }\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    SELECT | INSERT | UPDATE | DELETE",
					  _("name"),
					  _("event"),
					  _("table_name"),
					  _("condition"),
					  _("command"),
					  _("command"),
					  _("command"),
					  _("where event can be one of:"));
}

static void
sql_help_CREATE_SCHEMA(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE SCHEMA %s [ AUTHORIZATION %s ] [ %s [ ... ] ]\n"
					  "CREATE SCHEMA AUTHORIZATION %s [ %s [ ... ] ]\n"
					  "CREATE SCHEMA IF NOT EXISTS %s [ AUTHORIZATION %s ]\n"
					  "CREATE SCHEMA IF NOT EXISTS AUTHORIZATION %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s\n"
					  "  | CURRENT_ROLE\n"
					  "  | CURRENT_USER\n"
					  "  | SESSION_USER",
					  _("schema_name"),
					  _("role_specification"),
					  _("schema_element"),
					  _("role_specification"),
					  _("schema_element"),
					  _("schema_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("where role_specification can be:"),
					  _("user_name"));
}

static void
sql_help_CREATE_SEQUENCE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ { TEMPORARY | TEMP } | UNLOGGED ] SEQUENCE [ IF NOT EXISTS ] %s\n"
					  "    [ AS %s ]\n"
					  "    [ INCREMENT [ BY ] %s ]\n"
					  "    [ MINVALUE %s | NO MINVALUE ] [ MAXVALUE %s | NO MAXVALUE ]\n"
					  "    [ START [ WITH ] %s ] [ CACHE %s ] [ [ NO ] CYCLE ]\n"
					  "    [ OWNED BY { %s.%s | NONE } ]",
					  _("name"),
					  _("data_type"),
					  _("increment"),
					  _("minvalue"),
					  _("maxvalue"),
					  _("start"),
					  _("cache"),
					  _("table_name"),
					  _("column_name"));
}

static void
sql_help_CREATE_SERVER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE SERVER [ IF NOT EXISTS ] %s [ TYPE '%s' ] [ VERSION '%s' ]\n"
					  "    FOREIGN DATA WRAPPER %s\n"
					  "    [ OPTIONS ( %s '%s' [, ... ] ) ]",
					  _("server_name"),
					  _("server_type"),
					  _("server_version"),
					  _("fdw_name"),
					  _("option"),
					  _("value"));
}

static void
sql_help_CREATE_STATISTICS(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE STATISTICS [ [ IF NOT EXISTS ] %s ]\n"
					  "    ON ( %s )\n"
					  "    FROM %s\n"
					  "\n"
					  "CREATE STATISTICS [ [ IF NOT EXISTS ] %s ]\n"
					  "    [ ( %s [, ... ] ) ]\n"
					  "    ON { %s | ( %s ) }, { %s | ( %s ) } [, ...]\n"
					  "    FROM %s",
					  _("statistics_name"),
					  _("expression"),
					  _("table_name"),
					  _("statistics_name"),
					  _("statistics_kind"),
					  _("column_name"),
					  _("expression"),
					  _("column_name"),
					  _("expression"),
					  _("table_name"));
}

static void
sql_help_CREATE_SUBSCRIPTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE SUBSCRIPTION %s\n"
					  "    CONNECTION '%s'\n"
					  "    PUBLICATION %s [, ...]\n"
					  "    [ WITH ( %s [= %s] [, ... ] ) ]",
					  _("subscription_name"),
					  _("conninfo"),
					  _("publication_name"),
					  _("subscription_parameter"),
					  _("value"));
}

static void
sql_help_CREATE_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s ( [\n"
					  "  { %s %s [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] [ COMPRESSION %s ] [ COLLATE %s ] [ %s [ ... ] ]\n"
					  "    | %s\n"
					  "    | LIKE %s [ %s ... ] }\n"
					  "    [, ... ]\n"
					  "] )\n"
					  "[ INHERITS ( %s [, ... ] ) ]\n"
					  "[ PARTITION BY { RANGE | LIST | HASH } ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ... ] ) ]\n"
					  "[ USING %s ]\n"
					  "[ WITH ( %s [= %s] [, ... ] ) | WITHOUT OIDS ]\n"
					  "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
					  "[ TABLESPACE %s ]\n"
					  "\n"
					  "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s\n"
					  "    OF %s [ (\n"
					  "  { %s [ WITH OPTIONS ] [ %s [ ... ] ]\n"
					  "    | %s }\n"
					  "    [, ... ]\n"
					  ") ]\n"
					  "[ PARTITION BY { RANGE | LIST | HASH } ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ... ] ) ]\n"
					  "[ USING %s ]\n"
					  "[ WITH ( %s [= %s] [, ... ] ) | WITHOUT OIDS ]\n"
					  "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
					  "[ TABLESPACE %s ]\n"
					  "\n"
					  "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s\n"
					  "    PARTITION OF %s [ (\n"
					  "  { %s [ WITH OPTIONS ] [ %s [ ... ] ]\n"
					  "    | %s }\n"
					  "    [, ... ]\n"
					  ") ] { FOR VALUES %s | DEFAULT }\n"
					  "[ PARTITION BY { RANGE | LIST | HASH } ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ... ] ) ]\n"
					  "[ USING %s ]\n"
					  "[ WITH ( %s [= %s] [, ... ] ) | WITHOUT OIDS ]\n"
					  "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
					  "[ TABLESPACE %s ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ CONSTRAINT %s ]\n"
					  "{ NOT NULL |\n"
					  "  NULL |\n"
					  "  CHECK ( %s ) [ NO INHERIT ] |\n"
					  "  DEFAULT %s |\n"
					  "  GENERATED ALWAYS AS ( %s ) STORED |\n"
					  "  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( %s ) ] |\n"
					  "  UNIQUE [ NULLS [ NOT ] DISTINCT ] %s |\n"
					  "  PRIMARY KEY %s |\n"
					  "  REFERENCES %s [ ( %s ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n"
					  "    [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
					  "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ CONSTRAINT %s ]\n"
					  "{ CHECK ( %s ) [ NO INHERIT ] |\n"
					  "  UNIQUE [ NULLS [ NOT ] DISTINCT ] ( %s [, ... ] ) %s |\n"
					  "  PRIMARY KEY ( %s [, ... ] ) %s |\n"
					  "  EXCLUDE [ USING %s ] ( %s WITH %s [, ... ] ) %s [ WHERE ( %s ) ] |\n"
					  "  FOREIGN KEY ( %s [, ... ] ) REFERENCES %s [ ( %s [, ... ] ) ]\n"
					  "    [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
					  "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "{ INCLUDING | EXCLUDING } { COMMENTS | COMPRESSION | CONSTRAINTS | DEFAULTS | GENERATED | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "IN ( %s [, ...] ) |\n"
					  "FROM ( { %s | MINVALUE | MAXVALUE } [, ...] )\n"
					  "  TO ( { %s | MINVALUE | MAXVALUE } [, ...] ) |\n"
					  "WITH ( MODULUS %s, REMAINDER %s )\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ INCLUDE ( %s [, ... ] ) ]\n"
					  "[ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "[ USING INDEX TABLESPACE %s ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "{ %s | ( %s ) } [ COLLATE %s ] [ %s [ ( %s = %s [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "{ NO ACTION | RESTRICT | CASCADE | SET NULL [ ( %s [, ... ] ) ] | SET DEFAULT [ ( %s [, ... ] ) ] }",
					  _("table_name"),
					  _("column_name"),
					  _("data_type"),
					  _("compression_method"),
					  _("collation"),
					  _("column_constraint"),
					  _("table_constraint"),
					  _("source_table"),
					  _("like_option"),
					  _("parent_table"),
					  _("column_name"),
					  _("expression"),
					  _("collation"),
					  _("opclass"),
					  _("method"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace_name"),
					  _("table_name"),
					  _("type_name"),
					  _("column_name"),
					  _("column_constraint"),
					  _("table_constraint"),
					  _("column_name"),
					  _("expression"),
					  _("collation"),
					  _("opclass"),
					  _("method"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace_name"),
					  _("table_name"),
					  _("parent_table"),
					  _("column_name"),
					  _("column_constraint"),
					  _("table_constraint"),
					  _("partition_bound_spec"),
					  _("column_name"),
					  _("expression"),
					  _("collation"),
					  _("opclass"),
					  _("method"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace_name"),
					  _("where column_constraint is:"),
					  _("constraint_name"),
					  _("expression"),
					  _("default_expr"),
					  _("generation_expr"),
					  _("sequence_options"),
					  _("index_parameters"),
					  _("index_parameters"),
					  _("reftable"),
					  _("refcolumn"),
					  _("referential_action"),
					  _("referential_action"),
					  _("and table_constraint is:"),
					  _("constraint_name"),
					  _("expression"),
					  _("column_name"),
					  _("index_parameters"),
					  _("column_name"),
					  _("index_parameters"),
					  _("index_method"),
					  _("exclude_element"),
					  _("operator"),
					  _("index_parameters"),
					  _("predicate"),
					  _("column_name"),
					  _("reftable"),
					  _("refcolumn"),
					  _("referential_action"),
					  _("referential_action"),
					  _("and like_option is:"),
					  _("and partition_bound_spec is:"),
					  _("partition_bound_expr"),
					  _("partition_bound_expr"),
					  _("partition_bound_expr"),
					  _("numeric_literal"),
					  _("numeric_literal"),
					  _("index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"),
					  _("column_name"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace_name"),
					  _("exclude_element in an EXCLUDE constraint is:"),
					  _("column_name"),
					  _("expression"),
					  _("collation"),
					  _("opclass"),
					  _("opclass_parameter"),
					  _("value"),
					  _("referential_action in a FOREIGN KEY/REFERENCES constraint is:"),
					  _("column_name"),
					  _("column_name"));
}

static void
sql_help_CREATE_TABLE_AS(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s\n"
					  "    [ (%s [, ...] ) ]\n"
					  "    [ USING %s ]\n"
					  "    [ WITH ( %s [= %s] [, ... ] ) | WITHOUT OIDS ]\n"
					  "    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
					  "    [ TABLESPACE %s ]\n"
					  "    AS %s\n"
					  "    [ WITH [ NO ] DATA ]",
					  _("table_name"),
					  _("column_name"),
					  _("method"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace_name"),
					  _("query"));
}

static void
sql_help_CREATE_TABLESPACE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE TABLESPACE %s\n"
					  "    [ OWNER { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ]\n"
					  "    LOCATION '%s'\n"
					  "    [ WITH ( %s = %s [, ... ] ) ]",
					  _("tablespace_name"),
					  _("new_owner"),
					  _("directory"),
					  _("tablespace_option"),
					  _("value"));
}

static void
sql_help_CREATE_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE TEXT SEARCH CONFIGURATION %s (\n"
					  "    PARSER = %s |\n"
					  "    COPY = %s\n"
					  ")",
					  _("name"),
					  _("parser_name"),
					  _("source_config"));
}

static void
sql_help_CREATE_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE TEXT SEARCH DICTIONARY %s (\n"
					  "    TEMPLATE = %s\n"
					  "    [, %s = %s [, ... ]]\n"
					  ")",
					  _("name"),
					  _("template"),
					  _("option"),
					  _("value"));
}

static void
sql_help_CREATE_TEXT_SEARCH_PARSER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE TEXT SEARCH PARSER %s (\n"
					  "    START = %s ,\n"
					  "    GETTOKEN = %s ,\n"
					  "    END = %s ,\n"
					  "    LEXTYPES = %s\n"
					  "    [, HEADLINE = %s ]\n"
					  ")",
					  _("name"),
					  _("start_function"),
					  _("gettoken_function"),
					  _("end_function"),
					  _("lextypes_function"),
					  _("headline_function"));
}

static void
sql_help_CREATE_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE TEXT SEARCH TEMPLATE %s (\n"
					  "    [ INIT = %s , ]\n"
					  "    LEXIZE = %s\n"
					  ")",
					  _("name"),
					  _("init_function"),
					  _("lexize_function"));
}

static void
sql_help_CREATE_TRANSFORM(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ OR REPLACE ] TRANSFORM FOR %s LANGUAGE %s (\n"
					  "    FROM SQL WITH FUNCTION %s [ (%s [, ...]) ],\n"
					  "    TO SQL WITH FUNCTION %s [ (%s [, ...]) ]\n"
					  ");",
					  _("type_name"),
					  _("lang_name"),
					  _("from_sql_function_name"),
					  _("argument_type"),
					  _("to_sql_function_name"),
					  _("argument_type"));
}

static void
sql_help_CREATE_TRIGGER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ OR REPLACE ] [ CONSTRAINT ] TRIGGER %s { BEFORE | AFTER | INSTEAD OF } { %s [ OR ... ] }\n"
					  "    ON %s\n"
					  "    [ FROM %s ]\n"
					  "    [ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ]\n"
					  "    [ REFERENCING { { OLD | NEW } TABLE [ AS ] %s } [ ... ] ]\n"
					  "    [ FOR [ EACH ] { ROW | STATEMENT } ]\n"
					  "    [ WHEN ( %s ) ]\n"
					  "    EXECUTE { FUNCTION | PROCEDURE } %s ( %s )\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    INSERT\n"
					  "    UPDATE [ OF %s [, ... ] ]\n"
					  "    DELETE\n"
					  "    TRUNCATE",
					  _("name"),
					  _("event"),
					  _("table_name"),
					  _("referenced_table_name"),
					  _("transition_relation_name"),
					  _("condition"),
					  _("function_name"),
					  _("arguments"),
					  _("where event can be one of:"),
					  _("column_name"));
}

static void
sql_help_CREATE_TYPE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE TYPE %s AS\n"
					  "    ( [ %s %s [ COLLATE %s ] [, ... ] ] )\n"
					  "\n"
					  "CREATE TYPE %s AS ENUM\n"
					  "    ( [ '%s' [, ... ] ] )\n"
					  "\n"
					  "CREATE TYPE %s AS RANGE (\n"
					  "    SUBTYPE = %s\n"
					  "    [ , SUBTYPE_OPCLASS = %s ]\n"
					  "    [ , COLLATION = %s ]\n"
					  "    [ , CANONICAL = %s ]\n"
					  "    [ , SUBTYPE_DIFF = %s ]\n"
					  "    [ , MULTIRANGE_TYPE_NAME = %s ]\n"
					  ")\n"
					  "\n"
					  "CREATE TYPE %s (\n"
					  "    INPUT = %s,\n"
					  "    OUTPUT = %s\n"
					  "    [ , RECEIVE = %s ]\n"
					  "    [ , SEND = %s ]\n"
					  "    [ , TYPMOD_IN = %s ]\n"
					  "    [ , TYPMOD_OUT = %s ]\n"
					  "    [ , ANALYZE = %s ]\n"
					  "    [ , SUBSCRIPT = %s ]\n"
					  "    [ , INTERNALLENGTH = { %s | VARIABLE } ]\n"
					  "    [ , PASSEDBYVALUE ]\n"
					  "    [ , ALIGNMENT = %s ]\n"
					  "    [ , STORAGE = %s ]\n"
					  "    [ , LIKE = %s ]\n"
					  "    [ , CATEGORY = %s ]\n"
					  "    [ , PREFERRED = %s ]\n"
					  "    [ , DEFAULT = %s ]\n"
					  "    [ , ELEMENT = %s ]\n"
					  "    [ , DELIMITER = %s ]\n"
					  "    [ , COLLATABLE = %s ]\n"
					  ")\n"
					  "\n"
					  "CREATE TYPE %s",
					  _("name"),
					  _("attribute_name"),
					  _("data_type"),
					  _("collation"),
					  _("name"),
					  _("label"),
					  _("name"),
					  _("subtype"),
					  _("subtype_operator_class"),
					  _("collation"),
					  _("canonical_function"),
					  _("subtype_diff_function"),
					  _("multirange_type_name"),
					  _("name"),
					  _("input_function"),
					  _("output_function"),
					  _("receive_function"),
					  _("send_function"),
					  _("type_modifier_input_function"),
					  _("type_modifier_output_function"),
					  _("analyze_function"),
					  _("subscript_function"),
					  _("internallength"),
					  _("alignment"),
					  _("storage"),
					  _("like_type"),
					  _("category"),
					  _("preferred"),
					  _("default"),
					  _("element"),
					  _("delimiter"),
					  _("collatable"),
					  _("name"));
}

static void
sql_help_CREATE_USER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE USER %s [ [ WITH ] %s [ ... ] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "      SUPERUSER | NOSUPERUSER\n"
					  "    | CREATEDB | NOCREATEDB\n"
					  "    | CREATEROLE | NOCREATEROLE\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | REPLICATION | NOREPLICATION\n"
					  "    | BYPASSRLS | NOBYPASSRLS\n"
					  "    | CONNECTION LIMIT %s\n"
					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
					  "    | VALID UNTIL '%s'\n"
					  "    | IN ROLE %s [, ...]\n"
					  "    | IN GROUP %s [, ...]\n"
					  "    | ROLE %s [, ...]\n"
					  "    | ADMIN %s [, ...]\n"
					  "    | USER %s [, ...]\n"
					  "    | SYSID %s",
					  _("name"),
					  _("option"),
					  _("where option can be:"),
					  _("connlimit"),
					  _("password"),
					  _("timestamp"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("uid"));
}

static void
sql_help_CREATE_USER_MAPPING(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE USER MAPPING [ IF NOT EXISTS ] FOR { %s | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC }\n"
					  "    SERVER %s\n"
					  "    [ OPTIONS ( %s '%s' [ , ... ] ) ]",
					  _("user_name"),
					  _("server_name"),
					  _("option"),
					  _("value"));
}

static void
sql_help_CREATE_VIEW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW %s [ ( %s [, ...] ) ]\n"
					  "    [ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "    AS %s\n"
					  "    [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]",
					  _("name"),
					  _("column_name"),
					  _("view_option_name"),
					  _("view_option_value"),
					  _("query"));
}

static void
sql_help_DEALLOCATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DEALLOCATE [ PREPARE ] { %s | ALL }",
					  _("name"));
}

static void
sql_help_DECLARE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DECLARE %s [ BINARY ] [ ASENSITIVE | INSENSITIVE ] [ [ NO ] SCROLL ]\n"
					  "    CURSOR [ { WITH | WITHOUT } HOLD ] FOR %s",
					  _("name"),
					  _("query"));
}

static void
sql_help_DELETE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
					  "DELETE FROM [ ONLY ] %s [ * ] [ [ AS ] %s ]\n"
					  "    [ USING %s [, ...] ]\n"
					  "    [ WHERE %s | WHERE CURRENT OF %s ]\n"
					  "    [ RETURNING { * | %s [ [ AS ] %s ] } [, ...] ]",
					  _("with_query"),
					  _("table_name"),
					  _("alias"),
					  _("from_item"),
					  _("condition"),
					  _("cursor_name"),
					  _("output_expression"),
					  _("output_name"));
}

static void
sql_help_DISCARD(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }");
}

static void
sql_help_DO(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DO [ LANGUAGE %s ] %s",
					  _("lang_name"),
					  _("code"));
}

static void
sql_help_DROP_ACCESS_METHOD(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP ACCESS METHOD [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_AGGREGATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP AGGREGATE [ IF EXISTS ] %s ( %s ) [, ...] [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "* |\n"
					  "[ %s ] [ %s ] %s [ , ... ] |\n"
					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
					  _("name"),
					  _("aggregate_signature"),
					  _("where aggregate_signature is:"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"));
}

static void
sql_help_DROP_CAST(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP CAST [ IF EXISTS ] (%s AS %s) [ CASCADE | RESTRICT ]",
					  _("source_type"),
					  _("target_type"));
}

static void
sql_help_DROP_COLLATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP COLLATION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_CONVERSION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP CONVERSION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_DATABASE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP DATABASE [ IF EXISTS ] %s [ [ WITH ] ( %s [, ...] ) ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    FORCE",
					  _("name"),
					  _("option"),
					  _("where option can be:"));
}

static void
sql_help_DROP_DOMAIN(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP DOMAIN [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_EVENT_TRIGGER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP EVENT TRIGGER [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_EXTENSION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP EXTENSION [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_FOREIGN_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP FOREIGN TABLE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_FUNCTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP FUNCTION [ IF EXISTS ] %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
					  "    [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"));
}

static void
sql_help_DROP_GROUP(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP GROUP [ IF EXISTS ] %s [, ...]",
					  _("name"));
}

static void
sql_help_DROP_INDEX(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_LANGUAGE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_MATERIALIZED_VIEW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP MATERIALIZED VIEW [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_OPERATOR(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP OPERATOR [ IF EXISTS ] %s ( { %s | NONE } , %s ) [, ...] [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("left_type"),
					  _("right_type"));
}

static void
sql_help_DROP_OPERATOR_CLASS(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP OPERATOR CLASS [ IF EXISTS ] %s USING %s [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("index_method"));
}

static void
sql_help_DROP_OPERATOR_FAMILY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP OPERATOR FAMILY [ IF EXISTS ] %s USING %s [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("index_method"));
}

static void
sql_help_DROP_OWNED(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP OWNED BY { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_POLICY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP POLICY [ IF EXISTS ] %s ON %s [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("table_name"));
}

static void
sql_help_DROP_PROCEDURE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP PROCEDURE [ IF EXISTS ] %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
					  "    [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"));
}

static void
sql_help_DROP_PUBLICATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP PUBLICATION [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_ROLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP ROLE [ IF EXISTS ] %s [, ...]",
					  _("name"));
}

static void
sql_help_DROP_ROUTINE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP ROUTINE [ IF EXISTS ] %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
					  "    [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"));
}

static void
sql_help_DROP_RULE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP RULE [ IF EXISTS ] %s ON %s [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("table_name"));
}

static void
sql_help_DROP_SCHEMA(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP SCHEMA [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_SEQUENCE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP SEQUENCE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_SERVER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP SERVER [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_STATISTICS(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP STATISTICS [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_SUBSCRIPTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP SUBSCRIPTION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP TABLE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_TABLESPACE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP TABLESPACE [ IF EXISTS ] %s",
					  _("name"));
}

static void
sql_help_DROP_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_TEXT_SEARCH_PARSER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP TEXT SEARCH PARSER [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_TRANSFORM(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP TRANSFORM [ IF EXISTS ] FOR %s LANGUAGE %s [ CASCADE | RESTRICT ]",
					  _("type_name"),
					  _("lang_name"));
}

static void
sql_help_DROP_TRIGGER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP TRIGGER [ IF EXISTS ] %s ON %s [ CASCADE | RESTRICT ]",
					  _("name"),
					  _("table_name"));
}

static void
sql_help_DROP_TYPE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP TYPE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_DROP_USER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP USER [ IF EXISTS ] %s [, ...]",
					  _("name"));
}

static void
sql_help_DROP_USER_MAPPING(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP USER MAPPING [ IF EXISTS ] FOR { %s | USER | CURRENT_ROLE | CURRENT_USER | PUBLIC } SERVER %s",
					  _("user_name"),
					  _("server_name"));
}

static void
sql_help_DROP_VIEW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "DROP VIEW [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_END(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "END [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]");
}

static void
sql_help_EXECUTE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "EXECUTE %s [ ( %s [, ...] ) ]",
					  _("name"),
					  _("parameter"));
}

static void
sql_help_EXPLAIN(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "EXPLAIN [ ( %s [, ...] ) ] %s\n"
					  "EXPLAIN [ ANALYZE ] [ VERBOSE ] %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ANALYZE [ %s ]\n"
					  "    VERBOSE [ %s ]\n"
					  "    COSTS [ %s ]\n"
					  "    SETTINGS [ %s ]\n"
					  "    GENERIC_PLAN [ %s ]\n"
					  "    BUFFERS [ %s ]\n"
					  "    WAL [ %s ]\n"
					  "    TIMING [ %s ]\n"
					  "    SUMMARY [ %s ]\n"
					  "    FORMAT { TEXT | XML | JSON | YAML }",
					  _("option"),
					  _("statement"),
					  _("statement"),
					  _("where option can be one of:"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"));
}

static void
sql_help_FETCH(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "FETCH [ %s ] [ FROM | IN ] %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    NEXT\n"
					  "    PRIOR\n"
					  "    FIRST\n"
					  "    LAST\n"
					  "    ABSOLUTE %s\n"
					  "    RELATIVE %s\n"
					  "    %s\n"
					  "    ALL\n"
					  "    FORWARD\n"
					  "    FORWARD %s\n"
					  "    FORWARD ALL\n"
					  "    BACKWARD\n"
					  "    BACKWARD %s\n"
					  "    BACKWARD ALL",
					  _("direction"),
					  _("cursor_name"),
					  _("where direction can be one of:"),
					  _("count"),
					  _("count"),
					  _("count"),
					  _("count"),
					  _("count"));
}

static void
sql_help_GRANT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON { [ TABLE ] %s [, ...]\n"
					  "         | ALL TABLES IN SCHEMA %s [, ...] }\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( %s [, ...] )\n"
					  "    [, ...] | ALL [ PRIVILEGES ] ( %s [, ...] ) }\n"
					  "    ON [ TABLE ] %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { { USAGE | SELECT | UPDATE }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON { SEQUENCE %s [, ...]\n"
					  "         | ALL SEQUENCES IN SCHEMA %s [, ...] }\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON DATABASE %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON DOMAIN %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON FOREIGN DATA WRAPPER %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON FOREIGN SERVER %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n"
					  "    ON { { FUNCTION | PROCEDURE | ROUTINE } %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
					  "         | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA %s [, ...] }\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON LANGUAGE %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON LARGE OBJECT %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { { SET | ALTER SYSTEM } [, ... ] | ALL [ PRIVILEGES ] }\n"
					  "    ON PARAMETER %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON SCHEMA %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { CREATE | ALL [ PRIVILEGES ] }\n"
					  "    ON TABLESPACE %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON TYPE %s [, ...]\n"
					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "GRANT %s [, ...] TO %s [, ...]\n"
					  "    [ WITH { ADMIN | INHERIT | SET } { OPTION | TRUE | FALSE } ]\n"
					  "    [ GRANTED BY %s ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ GROUP ] %s\n"
					  "  | PUBLIC\n"
					  "  | CURRENT_ROLE\n"
					  "  | CURRENT_USER\n"
					  "  | SESSION_USER",
					  _("table_name"),
					  _("schema_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("column_name"),
					  _("column_name"),
					  _("table_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("sequence_name"),
					  _("schema_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("database_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("domain_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("fdw_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("server_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("routine_name"),
					  _("argmode"),
					  _("arg_name"),
					  _("arg_type"),
					  _("schema_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("lang_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("loid"),
					  _("role_specification"),
					  _("role_specification"),
					  _("configuration_parameter"),
					  _("role_specification"),
					  _("role_specification"),
					  _("schema_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("tablespace_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("type_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("role_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("where role_specification can be:"),
					  _("role_name"));
}

static void
sql_help_IMPORT_FOREIGN_SCHEMA(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "IMPORT FOREIGN SCHEMA %s\n"
					  "    [ { LIMIT TO | EXCEPT } ( %s [, ...] ) ]\n"
					  "    FROM SERVER %s\n"
					  "    INTO %s\n"
					  "    [ OPTIONS ( %s '%s' [, ... ] ) ]",
					  _("remote_schema"),
					  _("table_name"),
					  _("server_name"),
					  _("local_schema"),
					  _("option"),
					  _("value"));
}

static void
sql_help_INSERT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
					  "INSERT INTO %s [ AS %s ] [ ( %s [, ...] ) ]\n"
					  "    [ OVERRIDING { SYSTEM | USER } VALUE ]\n"
					  "    { DEFAULT VALUES | VALUES ( { %s | DEFAULT } [, ...] ) [, ...] | %s }\n"
					  "    [ ON CONFLICT [ %s ] %s ]\n"
					  "    [ RETURNING { * | %s [ [ AS ] %s ] } [, ...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ...] ) [ WHERE %s ]\n"
					  "    ON CONSTRAINT %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    DO NOTHING\n"
					  "    DO UPDATE SET { %s = { %s | DEFAULT } |\n"
					  "                    ( %s [, ...] ) = [ ROW ] ( { %s | DEFAULT } [, ...] ) |\n"
					  "                    ( %s [, ...] ) = ( %s )\n"
					  "                  } [, ...]\n"
					  "              [ WHERE %s ]",
					  _("with_query"),
					  _("table_name"),
					  _("alias"),
					  _("column_name"),
					  _("expression"),
					  _("query"),
					  _("conflict_target"),
					  _("conflict_action"),
					  _("output_expression"),
					  _("output_name"),
					  _("where conflict_target can be one of:"),
					  _("index_column_name"),
					  _("index_expression"),
					  _("collation"),
					  _("opclass"),
					  _("index_predicate"),
					  _("constraint_name"),
					  _("and conflict_action is one of:"),
					  _("column_name"),
					  _("expression"),
					  _("column_name"),
					  _("expression"),
					  _("column_name"),
					  _("sub-SELECT"),
					  _("condition"));
}

static void
sql_help_LISTEN(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "LISTEN %s",
					  _("channel"));
}

static void
sql_help_LOAD(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "LOAD '%s'",
					  _("filename"));
}

static void
sql_help_LOCK(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "LOCK [ TABLE ] [ ONLY ] %s [ * ] [, ...] [ IN %s MODE ] [ NOWAIT ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n"
					  "    | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE",
					  _("name"),
					  _("lockmode"),
					  _("where lockmode is one of:"));
}

static void
sql_help_MERGE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH %s [, ...] ]\n"
					  "MERGE INTO [ ONLY ] %s [ * ] [ [ AS ] %s ]\n"
					  "USING %s ON %s\n"
					  "%s [...]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "{ [ ONLY ] %s [ * ] | ( %s ) } [ [ AS ] %s ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "{ WHEN MATCHED [ AND %s ] THEN { %s | %s | DO NOTHING } |\n"
					  "  WHEN NOT MATCHED [ AND %s ] THEN { %s | DO NOTHING } }\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "INSERT [( %s [, ...] )]\n"
					  "[ OVERRIDING { SYSTEM | USER } VALUE ]\n"
					  "{ VALUES ( { %s | DEFAULT } [, ...] ) | DEFAULT VALUES }\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "UPDATE SET { %s = { %s | DEFAULT } |\n"
					  "             ( %s [, ...] ) = [ ROW ] ( { %s | DEFAULT } [, ...] ) |\n"
					  "             ( %s [, ...] ) = ( %s )\n"
					  "           } [, ...]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "DELETE",
					  _("with_query"),
					  _("target_table_name"),
					  _("target_alias"),
					  _("data_source"),
					  _("join_condition"),
					  _("when_clause"),
					  _("where data_source is:"),
					  _("source_table_name"),
					  _("source_query"),
					  _("source_alias"),
					  _("and when_clause is:"),
					  _("condition"),
					  _("merge_update"),
					  _("merge_delete"),
					  _("condition"),
					  _("merge_insert"),
					  _("and merge_insert is:"),
					  _("column_name"),
					  _("expression"),
					  _("and merge_update is:"),
					  _("column_name"),
					  _("expression"),
					  _("column_name"),
					  _("expression"),
					  _("column_name"),
					  _("sub-SELECT"),
					  _("and merge_delete is:"));
}

static void
sql_help_MOVE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "MOVE [ %s ] [ FROM | IN ] %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    NEXT\n"
					  "    PRIOR\n"
					  "    FIRST\n"
					  "    LAST\n"
					  "    ABSOLUTE %s\n"
					  "    RELATIVE %s\n"
					  "    %s\n"
					  "    ALL\n"
					  "    FORWARD\n"
					  "    FORWARD %s\n"
					  "    FORWARD ALL\n"
					  "    BACKWARD\n"
					  "    BACKWARD %s\n"
					  "    BACKWARD ALL",
					  _("direction"),
					  _("cursor_name"),
					  _("where direction can be one of:"),
					  _("count"),
					  _("count"),
					  _("count"),
					  _("count"),
					  _("count"));
}

static void
sql_help_NOTIFY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "NOTIFY %s [ , %s ]",
					  _("channel"),
					  _("payload"));
}

static void
sql_help_PREPARE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "PREPARE %s [ ( %s [, ...] ) ] AS %s",
					  _("name"),
					  _("data_type"),
					  _("statement"));
}

static void
sql_help_PREPARE_TRANSACTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "PREPARE TRANSACTION %s",
					  _("transaction_id"));
}

static void
sql_help_REASSIGN_OWNED(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "REASSIGN OWNED BY { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...]\n"
					  "               TO { %s | CURRENT_ROLE | CURRENT_USER | SESSION_USER }",
					  _("old_role"),
					  _("new_role"));
}

static void
sql_help_REFRESH_MATERIALIZED_VIEW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] %s\n"
					  "    [ WITH [ NO ] DATA ]",
					  _("name"));
}

static void
sql_help_REINDEX(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "REINDEX [ ( %s [, ...] ) ] { INDEX | TABLE | SCHEMA } [ CONCURRENTLY ] %s\n"
					  "REINDEX [ ( %s [, ...] ) ] { DATABASE | SYSTEM } [ CONCURRENTLY ] [ %s ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    CONCURRENTLY [ %s ]\n"
					  "    TABLESPACE %s\n"
					  "    VERBOSE [ %s ]",
					  _("option"),
					  _("name"),
					  _("option"),
					  _("name"),
					  _("where option can be one of:"),
					  _("boolean"),
					  _("new_tablespace"),
					  _("boolean"));
}

static void
sql_help_RELEASE_SAVEPOINT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "RELEASE [ SAVEPOINT ] %s",
					  _("savepoint_name"));
}

static void
sql_help_RESET(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "RESET %s\n"
					  "RESET ALL",
					  _("configuration_parameter"));
}

static void
sql_help_REVOKE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON { [ TABLE ] %s [, ...]\n"
					  "         | ALL TABLES IN SCHEMA %s [, ...] }\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { SELECT | INSERT | UPDATE | REFERENCES } ( %s [, ...] )\n"
					  "    [, ...] | ALL [ PRIVILEGES ] ( %s [, ...] ) }\n"
					  "    ON [ TABLE ] %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { USAGE | SELECT | UPDATE }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON { SEQUENCE %s [, ...]\n"
					  "         | ALL SEQUENCES IN SCHEMA %s [, ...] }\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON DATABASE %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON DOMAIN %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON FOREIGN DATA WRAPPER %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON FOREIGN SERVER %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { EXECUTE | ALL [ PRIVILEGES ] }\n"
					  "    ON { { FUNCTION | PROCEDURE | ROUTINE } %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
					  "         | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA %s [, ...] }\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON LANGUAGE %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON LARGE OBJECT %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { SET | ALTER SYSTEM } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON PARAMETER %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON SCHEMA %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { CREATE | ALL [ PRIVILEGES ] }\n"
					  "    ON TABLESPACE %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON TYPE %s [, ...]\n"
					  "    FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ { ADMIN | INHERIT | SET } OPTION FOR ]\n"
					  "    %s [, ...] FROM %s [, ...]\n"
					  "    [ GRANTED BY %s ]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ GROUP ] %s\n"
					  "  | PUBLIC\n"
					  "  | CURRENT_ROLE\n"
					  "  | CURRENT_USER\n"
					  "  | SESSION_USER",
					  _("table_name"),
					  _("schema_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("column_name"),
					  _("column_name"),
					  _("table_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("sequence_name"),
					  _("schema_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("database_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("domain_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("fdw_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("server_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("function_name"),
					  _("argmode"),
					  _("arg_name"),
					  _("arg_type"),
					  _("schema_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("lang_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("loid"),
					  _("role_specification"),
					  _("role_specification"),
					  _("configuration_parameter"),
					  _("role_specification"),
					  _("role_specification"),
					  _("schema_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("tablespace_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("type_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("role_name"),
					  _("role_specification"),
					  _("role_specification"),
					  _("where role_specification can be:"),
					  _("role_name"));
}

static void
sql_help_ROLLBACK(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ROLLBACK [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]");
}

static void
sql_help_ROLLBACK_PREPARED(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ROLLBACK PREPARED %s",
					  _("transaction_id"));
}

static void
sql_help_ROLLBACK_TO_SAVEPOINT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] %s",
					  _("savepoint_name"));
}

static void
sql_help_SAVEPOINT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "SAVEPOINT %s",
					  _("savepoint_name"));
}

static void
sql_help_SECURITY_LABEL(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "SECURITY LABEL [ FOR %s ] ON\n"
					  "{\n"
					  "  TABLE %s |\n"
					  "  COLUMN %s.%s |\n"
					  "  AGGREGATE %s ( %s ) |\n"
					  "  DATABASE %s |\n"
					  "  DOMAIN %s |\n"
					  "  EVENT TRIGGER %s |\n"
					  "  FOREIGN TABLE %s |\n"
					  "  FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
					  "  LARGE OBJECT %s |\n"
					  "  MATERIALIZED VIEW %s |\n"
					  "  [ PROCEDURAL ] LANGUAGE %s |\n"
					  "  PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
					  "  PUBLICATION %s |\n"
					  "  ROLE %s |\n"
					  "  ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
					  "  SCHEMA %s |\n"
					  "  SEQUENCE %s |\n"
					  "  SUBSCRIPTION %s |\n"
					  "  TABLESPACE %s |\n"
					  "  TYPE %s |\n"
					  "  VIEW %s\n"
					  "} IS { %s | NULL }\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "* |\n"
					  "[ %s ] [ %s ] %s [ , ... ] |\n"
					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
					  _("provider"),
					  _("object_name"),
					  _("table_name"),
					  _("column_name"),
					  _("aggregate_name"),
					  _("aggregate_signature"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("function_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("large_object_oid"),
					  _("object_name"),
					  _("object_name"),
					  _("procedure_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("object_name"),
					  _("object_name"),
					  _("routine_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("string_literal"),
					  _("where aggregate_signature is:"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"));
}

static void
sql_help_SELECT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
					  "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
					  "    [ { * | %s [ [ AS ] %s ] } [, ...] ]\n"
					  "    [ FROM %s [, ...] ]\n"
					  "    [ WHERE %s ]\n"
					  "    [ GROUP BY [ ALL | DISTINCT ] %s [, ...] ]\n"
					  "    [ HAVING %s ]\n"
					  "    [ WINDOW %s AS ( %s ) [, ...] ]\n"
					  "    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
					  "    [ LIMIT { %s | ALL } ]\n"
					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } { ONLY | WITH TIES } ]\n"
					  "    [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF %s [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "                [ TABLESAMPLE %s ( %s [, ...] ) [ REPEATABLE ( %s ) ] ]\n"
					  "    [ LATERAL ] ( %s ) [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    [ LATERAL ] %s ( [ %s [, ...] ] )\n"
					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) [ AS ] %s ( %s [, ...] )\n"
					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
					  "    [ LATERAL ] ROWS FROM( %s ( [ %s [, ...] ] ) [ AS ( %s [, ...] ) ] [, ...] )\n"
					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    %s %s %s { ON %s | USING ( %s [, ...] ) [ AS %s ] }\n"
					  "    %s NATURAL %s %s\n"
					  "    %s CROSS JOIN %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ( )\n"
					  "    %s\n"
					  "    ( %s [, ...] )\n"
					  "    ROLLUP ( { %s | ( %s [, ...] ) } [, ...] )\n"
					  "    CUBE ( { %s | ( %s [, ...] ) } [, ...] )\n"
					  "    GROUPING SETS ( %s [, ...] )\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s [ ( %s [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( %s | %s | %s | %s | %s )\n"
					  "        [ SEARCH { BREADTH | DEPTH } FIRST BY %s [, ...] SET %s ]\n"
					  "        [ CYCLE %s [, ...] SET %s [ TO %s DEFAULT %s ] USING %s ]\n"
					  "\n"
					  "TABLE [ ONLY ] %s [ * ]",
					  _("with_query"),
					  _("expression"),
					  _("expression"),
					  _("output_name"),
					  _("from_item"),
					  _("condition"),
					  _("grouping_element"),
					  _("condition"),
					  _("window_name"),
					  _("window_definition"),
					  _("select"),
					  _("expression"),
					  _("operator"),
					  _("count"),
					  _("start"),
					  _("count"),
					  _("table_name"),
					  _("where from_item can be one of:"),
					  _("table_name"),
					  _("alias"),
					  _("column_alias"),
					  _("sampling_method"),
					  _("argument"),
					  _("seed"),
					  _("select"),
					  _("alias"),
					  _("column_alias"),
					  _("with_query_name"),
					  _("alias"),
					  _("column_alias"),
					  _("function_name"),
					  _("argument"),
					  _("alias"),
					  _("column_alias"),
					  _("function_name"),
					  _("argument"),
					  _("alias"),
					  _("column_definition"),
					  _("function_name"),
					  _("argument"),
					  _("column_definition"),
					  _("function_name"),
					  _("argument"),
					  _("column_definition"),
					  _("alias"),
					  _("column_alias"),
					  _("from_item"),
					  _("join_type"),
					  _("from_item"),
					  _("join_condition"),
					  _("join_column"),
					  _("join_using_alias"),
					  _("from_item"),
					  _("join_type"),
					  _("from_item"),
					  _("from_item"),
					  _("from_item"),
					  _("and grouping_element can be one of:"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("grouping_element"),
					  _("and with_query is:"),
					  _("with_query_name"),
					  _("column_name"),
					  _("select"),
					  _("values"),
					  _("insert"),
					  _("update"),
					  _("delete"),
					  _("column_name"),
					  _("search_seq_col_name"),
					  _("column_name"),
					  _("cycle_mark_col_name"),
					  _("cycle_mark_value"),
					  _("cycle_mark_default"),
					  _("cycle_path_col_name"),
					  _("table_name"));
}

static void
sql_help_SELECT_INTO(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
					  "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
					  "    [ { * | %s [ [ AS ] %s ] } [, ...] ]\n"
					  "    INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] %s\n"
					  "    [ FROM %s [, ...] ]\n"
					  "    [ WHERE %s ]\n"
					  "    [ GROUP BY %s [, ...] ]\n"
					  "    [ HAVING %s ]\n"
					  "    [ WINDOW %s AS ( %s ) [, ...] ]\n"
					  "    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
					  "    [ LIMIT { %s | ALL } ]\n"
					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } ONLY ]\n"
					  "    [ FOR { UPDATE | SHARE } [ OF %s [, ...] ] [ NOWAIT ] [...] ]",
					  _("with_query"),
					  _("expression"),
					  _("expression"),
					  _("output_name"),
					  _("new_table"),
					  _("from_item"),
					  _("condition"),
					  _("expression"),
					  _("condition"),
					  _("window_name"),
					  _("window_definition"),
					  _("select"),
					  _("expression"),
					  _("operator"),
					  _("count"),
					  _("start"),
					  _("count"),
					  _("table_name"));
}

static void
sql_help_SET(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "SET [ SESSION | LOCAL ] %s { TO | = } { %s | '%s' | DEFAULT }\n"
					  "SET [ SESSION | LOCAL ] TIME ZONE { %s | '%s' | LOCAL | DEFAULT }",
					  _("configuration_parameter"),
					  _("value"),
					  _("value"),
					  _("value"),
					  _("value"));
}

static void
sql_help_SET_CONSTRAINTS(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "SET CONSTRAINTS { ALL | %s [, ...] } { DEFERRED | IMMEDIATE }",
					  _("name"));
}

static void
sql_help_SET_ROLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "SET [ SESSION | LOCAL ] ROLE %s\n"
					  "SET [ SESSION | LOCAL ] ROLE NONE\n"
					  "RESET ROLE",
					  _("role_name"));
}

static void
sql_help_SET_SESSION_AUTHORIZATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION %s\n"
					  "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n"
					  "RESET SESSION AUTHORIZATION",
					  _("user_name"));
}

static void
sql_help_SET_TRANSACTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "SET TRANSACTION %s [, ...]\n"
					  "SET TRANSACTION SNAPSHOT %s\n"
					  "SET SESSION CHARACTERISTICS AS TRANSACTION %s [, ...]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
					  "    READ WRITE | READ ONLY\n"
					  "    [ NOT ] DEFERRABLE",
					  _("transaction_mode"),
					  _("snapshot_id"),
					  _("transaction_mode"),
					  _("where transaction_mode is one of:"));
}

static void
sql_help_SHOW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "SHOW %s\n"
					  "SHOW ALL",
					  _("name"));
}

static void
sql_help_START_TRANSACTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "START TRANSACTION [ %s [, ...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
					  "    READ WRITE | READ ONLY\n"
					  "    [ NOT ] DEFERRABLE",
					  _("transaction_mode"),
					  _("where transaction_mode is one of:"));
}

static void
sql_help_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
					  "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
					  "    [ { * | %s [ [ AS ] %s ] } [, ...] ]\n"
					  "    [ FROM %s [, ...] ]\n"
					  "    [ WHERE %s ]\n"
					  "    [ GROUP BY [ ALL | DISTINCT ] %s [, ...] ]\n"
					  "    [ HAVING %s ]\n"
					  "    [ WINDOW %s AS ( %s ) [, ...] ]\n"
					  "    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
					  "    [ LIMIT { %s | ALL } ]\n"
					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } { ONLY | WITH TIES } ]\n"
					  "    [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF %s [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "                [ TABLESAMPLE %s ( %s [, ...] ) [ REPEATABLE ( %s ) ] ]\n"
					  "    [ LATERAL ] ( %s ) [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    [ LATERAL ] %s ( [ %s [, ...] ] )\n"
					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) [ AS ] %s ( %s [, ...] )\n"
					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
					  "    [ LATERAL ] ROWS FROM( %s ( [ %s [, ...] ] ) [ AS ( %s [, ...] ) ] [, ...] )\n"
					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    %s %s %s { ON %s | USING ( %s [, ...] ) [ AS %s ] }\n"
					  "    %s NATURAL %s %s\n"
					  "    %s CROSS JOIN %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ( )\n"
					  "    %s\n"
					  "    ( %s [, ...] )\n"
					  "    ROLLUP ( { %s | ( %s [, ...] ) } [, ...] )\n"
					  "    CUBE ( { %s | ( %s [, ...] ) } [, ...] )\n"
					  "    GROUPING SETS ( %s [, ...] )\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s [ ( %s [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( %s | %s | %s | %s | %s )\n"
					  "        [ SEARCH { BREADTH | DEPTH } FIRST BY %s [, ...] SET %s ]\n"
					  "        [ CYCLE %s [, ...] SET %s [ TO %s DEFAULT %s ] USING %s ]\n"
					  "\n"
					  "TABLE [ ONLY ] %s [ * ]",
					  _("with_query"),
					  _("expression"),
					  _("expression"),
					  _("output_name"),
					  _("from_item"),
					  _("condition"),
					  _("grouping_element"),
					  _("condition"),
					  _("window_name"),
					  _("window_definition"),
					  _("select"),
					  _("expression"),
					  _("operator"),
					  _("count"),
					  _("start"),
					  _("count"),
					  _("table_name"),
					  _("where from_item can be one of:"),
					  _("table_name"),
					  _("alias"),
					  _("column_alias"),
					  _("sampling_method"),
					  _("argument"),
					  _("seed"),
					  _("select"),
					  _("alias"),
					  _("column_alias"),
					  _("with_query_name"),
					  _("alias"),
					  _("column_alias"),
					  _("function_name"),
					  _("argument"),
					  _("alias"),
					  _("column_alias"),
					  _("function_name"),
					  _("argument"),
					  _("alias"),
					  _("column_definition"),
					  _("function_name"),
					  _("argument"),
					  _("column_definition"),
					  _("function_name"),
					  _("argument"),
					  _("column_definition"),
					  _("alias"),
					  _("column_alias"),
					  _("from_item"),
					  _("join_type"),
					  _("from_item"),
					  _("join_condition"),
					  _("join_column"),
					  _("join_using_alias"),
					  _("from_item"),
					  _("join_type"),
					  _("from_item"),
					  _("from_item"),
					  _("from_item"),
					  _("and grouping_element can be one of:"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("grouping_element"),
					  _("and with_query is:"),
					  _("with_query_name"),
					  _("column_name"),
					  _("select"),
					  _("values"),
					  _("insert"),
					  _("update"),
					  _("delete"),
					  _("column_name"),
					  _("search_seq_col_name"),
					  _("column_name"),
					  _("cycle_mark_col_name"),
					  _("cycle_mark_value"),
					  _("cycle_mark_default"),
					  _("cycle_path_col_name"),
					  _("table_name"));
}

static void
sql_help_TRUNCATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "TRUNCATE [ TABLE ] [ ONLY ] %s [ * ] [, ... ]\n"
					  "    [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]",
					  _("name"));
}

static void
sql_help_UNLISTEN(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "UNLISTEN { %s | * }",
					  _("channel"));
}

static void
sql_help_UPDATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
					  "UPDATE [ ONLY ] %s [ * ] [ [ AS ] %s ]\n"
					  "    SET { %s = { %s | DEFAULT } |\n"
					  "          ( %s [, ...] ) = [ ROW ] ( { %s | DEFAULT } [, ...] ) |\n"
					  "          ( %s [, ...] ) = ( %s )\n"
					  "        } [, ...]\n"
					  "    [ FROM %s [, ...] ]\n"
					  "    [ WHERE %s | WHERE CURRENT OF %s ]\n"
					  "    [ RETURNING { * | %s [ [ AS ] %s ] } [, ...] ]",
					  _("with_query"),
					  _("table_name"),
					  _("alias"),
					  _("column_name"),
					  _("expression"),
					  _("column_name"),
					  _("expression"),
					  _("column_name"),
					  _("sub-SELECT"),
					  _("from_item"),
					  _("condition"),
					  _("cursor_name"),
					  _("output_expression"),
					  _("output_name"));
}

static void
sql_help_VACUUM(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "VACUUM [ ( %s [, ...] ) ] [ %s [, ...] ]\n"
					  "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ %s [, ...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    FULL [ %s ]\n"
					  "    FREEZE [ %s ]\n"
					  "    VERBOSE [ %s ]\n"
					  "    ANALYZE [ %s ]\n"
					  "    DISABLE_PAGE_SKIPPING [ %s ]\n"
					  "    SKIP_LOCKED [ %s ]\n"
					  "    INDEX_CLEANUP { AUTO | ON | OFF }\n"
					  "    PROCESS_MAIN [ %s ]\n"
					  "    PROCESS_TOAST [ %s ]\n"
					  "    TRUNCATE [ %s ]\n"
					  "    PARALLEL %s\n"
					  "    SKIP_DATABASE_STATS [ %s ]\n"
					  "    ONLY_DATABASE_STATS [ %s ]\n"
					  "    BUFFER_USAGE_LIMIT %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s [ ( %s [, ...] ) ]",
					  _("option"),
					  _("table_and_columns"),
					  _("table_and_columns"),
					  _("where option can be one of:"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("integer"),
					  _("boolean"),
					  _("boolean"),
					  _("size"),
					  _("and table_and_columns is:"),
					  _("table_name"),
					  _("column_name"));
}

static void
sql_help_VALUES(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "VALUES ( %s [, ...] ) [, ...]\n"
					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [, ...] ]\n"
					  "    [ LIMIT { %s | ALL } ]\n"
					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } ONLY ]",
					  _("expression"),
					  _("sort_expression"),
					  _("operator"),
					  _("count"),
					  _("start"),
					  _("count"));
}

static void
sql_help_WITH(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
					  "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
					  "    [ { * | %s [ [ AS ] %s ] } [, ...] ]\n"
					  "    [ FROM %s [, ...] ]\n"
					  "    [ WHERE %s ]\n"
					  "    [ GROUP BY [ ALL | DISTINCT ] %s [, ...] ]\n"
					  "    [ HAVING %s ]\n"
					  "    [ WINDOW %s AS ( %s ) [, ...] ]\n"
					  "    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
					  "    [ LIMIT { %s | ALL } ]\n"
					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } { ONLY | WITH TIES } ]\n"
					  "    [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF %s [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "                [ TABLESAMPLE %s ( %s [, ...] ) [ REPEATABLE ( %s ) ] ]\n"
					  "    [ LATERAL ] ( %s ) [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    [ LATERAL ] %s ( [ %s [, ...] ] )\n"
					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) [ AS ] %s ( %s [, ...] )\n"
					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
					  "    [ LATERAL ] ROWS FROM( %s ( [ %s [, ...] ] ) [ AS ( %s [, ...] ) ] [, ...] )\n"
					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    %s %s %s { ON %s | USING ( %s [, ...] ) [ AS %s ] }\n"
					  "    %s NATURAL %s %s\n"
					  "    %s CROSS JOIN %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ( )\n"
					  "    %s\n"
					  "    ( %s [, ...] )\n"
					  "    ROLLUP ( { %s | ( %s [, ...] ) } [, ...] )\n"
					  "    CUBE ( { %s | ( %s [, ...] ) } [, ...] )\n"
					  "    GROUPING SETS ( %s [, ...] )\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s [ ( %s [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( %s | %s | %s | %s | %s )\n"
					  "        [ SEARCH { BREADTH | DEPTH } FIRST BY %s [, ...] SET %s ]\n"
					  "        [ CYCLE %s [, ...] SET %s [ TO %s DEFAULT %s ] USING %s ]\n"
					  "\n"
					  "TABLE [ ONLY ] %s [ * ]",
					  _("with_query"),
					  _("expression"),
					  _("expression"),
					  _("output_name"),
					  _("from_item"),
					  _("condition"),
					  _("grouping_element"),
					  _("condition"),
					  _("window_name"),
					  _("window_definition"),
					  _("select"),
					  _("expression"),
					  _("operator"),
					  _("count"),
					  _("start"),
					  _("count"),
					  _("table_name"),
					  _("where from_item can be one of:"),
					  _("table_name"),
					  _("alias"),
					  _("column_alias"),
					  _("sampling_method"),
					  _("argument"),
					  _("seed"),
					  _("select"),
					  _("alias"),
					  _("column_alias"),
					  _("with_query_name"),
					  _("alias"),
					  _("column_alias"),
					  _("function_name"),
					  _("argument"),
					  _("alias"),
					  _("column_alias"),
					  _("function_name"),
					  _("argument"),
					  _("alias"),
					  _("column_definition"),
					  _("function_name"),
					  _("argument"),
					  _("column_definition"),
					  _("function_name"),
					  _("argument"),
					  _("column_definition"),
					  _("alias"),
					  _("column_alias"),
					  _("from_item"),
					  _("join_type"),
					  _("from_item"),
					  _("join_condition"),
					  _("join_column"),
					  _("join_using_alias"),
					  _("from_item"),
					  _("join_type"),
					  _("from_item"),
					  _("from_item"),
					  _("from_item"),
					  _("and grouping_element can be one of:"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("expression"),
					  _("grouping_element"),
					  _("and with_query is:"),
					  _("with_query_name"),
					  _("column_name"),
					  _("select"),
					  _("values"),
					  _("insert"),
					  _("update"),
					  _("delete"),
					  _("column_name"),
					  _("search_seq_col_name"),
					  _("column_name"),
					  _("cycle_mark_col_name"),
					  _("cycle_mark_value"),
					  _("cycle_mark_default"),
					  _("cycle_path_col_name"),
					  _("table_name"));
}


const struct _helpStruct QL_HELP[] = {
	{"ABORT",
		N_("abort the current transaction"),
		"sql-abort",
		sql_help_ABORT,
	0},

	{"ALTER AGGREGATE",
		N_("change the definition of an aggregate function"),
		"sql-alteraggregate",
		sql_help_ALTER_AGGREGATE,
	9},

	{"ALTER COLLATION",
		N_("change the definition of a collation"),
		"sql-altercollation",
		sql_help_ALTER_COLLATION,
	4},

	{"ALTER CONVERSION",
		N_("change the definition of a conversion"),
		"sql-alterconversion",
		sql_help_ALTER_CONVERSION,
	2},

	{"ALTER DATABASE",
		N_("change a database"),
		"sql-alterdatabase",
		sql_help_ALTER_DATABASE,
	19},

	{"ALTER DEFAULT PRIVILEGES",
		N_("define default access privileges"),
		"sql-alterdefaultprivileges",
		sql_help_ALTER_DEFAULT_PRIVILEGES,
	61},

	{"ALTER DOMAIN",
		N_("change the definition of a domain"),
		"sql-alterdomain",
		sql_help_ALTER_DOMAIN,
	22},

	{"ALTER EVENT TRIGGER",
		N_("change the definition of an event trigger"),
		"sql-altereventtrigger",
		sql_help_ALTER_EVENT_TRIGGER,
	3},

	{"ALTER EXTENSION",
		N_("change the definition of an extension"),
		"sql-alterextension",
		sql_help_ALTER_EXTENSION,
	40},

	{"ALTER FOREIGN DATA WRAPPER",
		N_("change the definition of a foreign-data wrapper"),
		"sql-alterforeigndatawrapper",
		sql_help_ALTER_FOREIGN_DATA_WRAPPER,
	5},

	{"ALTER FOREIGN TABLE",
		N_("change the definition of a foreign table"),
		"sql-alterforeigntable",
		sql_help_ALTER_FOREIGN_TABLE,
	33},

	{"ALTER FUNCTION",
		N_("change the definition of a function"),
		"sql-alterfunction",
		sql_help_ALTER_FUNCTION,
	24},

	{"ALTER GROUP",
		N_("change role name or membership"),
		"sql-altergroup",
		sql_help_ALTER_GROUP,
	10},

	{"ALTER INDEX",
		N_("change the definition of an index"),
		"sql-alterindex",
		sql_help_ALTER_INDEX,
	9},

	{"ALTER LANGUAGE",
		N_("change the definition of a procedural language"),
		"sql-alterlanguage",
		sql_help_ALTER_LANGUAGE,
	1},

	{"ALTER LARGE OBJECT",
		N_("change the definition of a large object"),
		"sql-alterlargeobject",
		sql_help_ALTER_LARGE_OBJECT,
	0},

	{"ALTER MATERIALIZED VIEW",
		N_("change the definition of a materialized view"),
		"sql-altermaterializedview",
		sql_help_ALTER_MATERIALIZED_VIEW,
	26},

	{"ALTER OPERATOR",
		N_("change the definition of an operator"),
		"sql-alteroperator",
		sql_help_ALTER_OPERATOR,
	9},

	{"ALTER OPERATOR CLASS",
		N_("change the definition of an operator class"),
		"sql-alteropclass",
		sql_help_ALTER_OPERATOR_CLASS,
	7},

	{"ALTER OPERATOR FAMILY",
		N_("change the definition of an operator family"),
		"sql-alteropfamily",
		sql_help_ALTER_OPERATOR_FAMILY,
	19},

	{"ALTER POLICY",
		N_("change the definition of a row-level security policy"),
		"sql-alterpolicy",
		sql_help_ALTER_POLICY,
	5},

	{"ALTER PROCEDURE",
		N_("change the definition of a procedure"),
		"sql-alterprocedure",
		sql_help_ALTER_PROCEDURE,
	17},

	{"ALTER PUBLICATION",
		N_("change the definition of a publication"),
		"sql-alterpublication",
		sql_help_ALTER_PUBLICATION,
	10},

	{"ALTER ROLE",
		N_("change a database role"),
		"sql-alterrole",
		sql_help_ALTER_ROLE,
	27},

	{"ALTER ROUTINE",
		N_("change the definition of a routine"),
		"sql-alterroutine",
		sql_help_ALTER_ROUTINE,
	22},

	{"ALTER RULE",
		N_("change the definition of a rule"),
		"sql-alterrule",
		sql_help_ALTER_RULE,
	0},

	{"ALTER SCHEMA",
		N_("change the definition of a schema"),
		"sql-alterschema",
		sql_help_ALTER_SCHEMA,
	1},

	{"ALTER SEQUENCE",
		N_("change the definition of a sequence generator"),
		"sql-altersequence",
		sql_help_ALTER_SEQUENCE,
	11},

	{"ALTER SERVER",
		N_("change the definition of a foreign server"),
		"sql-alterserver",
		sql_help_ALTER_SERVER,
	3},

	{"ALTER STATISTICS",
		N_("change the definition of an extended statistics object"),
		"sql-alterstatistics",
		sql_help_ALTER_STATISTICS,
	3},

	{"ALTER SUBSCRIPTION",
		N_("change the definition of a subscription"),
		"sql-altersubscription",
		sql_help_ALTER_SUBSCRIPTION,
	10},

	{"ALTER SYSTEM",
		N_("change a server configuration parameter"),
		"sql-altersystem",
		sql_help_ALTER_SYSTEM,
	3},

	{"ALTER TABLE",
		N_("change the definition of a table"),
		"sql-altertable",
		sql_help_ALTER_TABLE,
	117},

	{"ALTER TABLESPACE",
		N_("change the definition of a tablespace"),
		"sql-altertablespace",
		sql_help_ALTER_TABLESPACE,
	3},

	{"ALTER TEXT SEARCH CONFIGURATION",
		N_("change the definition of a text search configuration"),
		"sql-altertsconfig",
		sql_help_ALTER_TEXT_SEARCH_CONFIGURATION,
	12},

	{"ALTER TEXT SEARCH DICTIONARY",
		N_("change the definition of a text search dictionary"),
		"sql-altertsdictionary",
		sql_help_ALTER_TEXT_SEARCH_DICTIONARY,
	5},

	{"ALTER TEXT SEARCH PARSER",
		N_("change the definition of a text search parser"),
		"sql-altertsparser",
		sql_help_ALTER_TEXT_SEARCH_PARSER,
	1},

	{"ALTER TEXT SEARCH TEMPLATE",
		N_("change the definition of a text search template"),
		"sql-altertstemplate",
		sql_help_ALTER_TEXT_SEARCH_TEMPLATE,
	1},

	{"ALTER TRIGGER",
		N_("change the definition of a trigger"),
		"sql-altertrigger",
		sql_help_ALTER_TRIGGER,
	1},

	{"ALTER TYPE",
		N_("change the definition of a type"),
		"sql-altertype",
		sql_help_ALTER_TYPE,
	13},

	{"ALTER USER",
		N_("change a database role"),
		"sql-alteruser",
		sql_help_ALTER_USER,
	27},

	{"ALTER USER MAPPING",
		N_("change the definition of a user mapping"),
		"sql-alterusermapping",
		sql_help_ALTER_USER_MAPPING,
	2},

	{"ALTER VIEW",
		N_("change the definition of a view"),
		"sql-alterview",
		sql_help_ALTER_VIEW,
	7},

	{"ANALYZE",
		N_("collect statistics about a database"),
		"sql-analyze",
		sql_help_ANALYZE,
	11},

	{"BEGIN",
		N_("start a transaction block"),
		"sql-begin",
		sql_help_BEGIN,
	6},

	{"CALL",
		N_("invoke a procedure"),
		"sql-call",
		sql_help_CALL,
	0},

	{"CHECKPOINT",
		N_("force a write-ahead log checkpoint"),
		"sql-checkpoint",
		sql_help_CHECKPOINT,
	0},

	{"CLOSE",
		N_("close a cursor"),
		"sql-close",
		sql_help_CLOSE,
	0},

	{"CLUSTER",
		N_("cluster a table according to an index"),
		"sql-cluster",
		sql_help_CLUSTER,
	6},

	{"COMMENT",
		N_("define or change the comment of an object"),
		"sql-comment",
		sql_help_COMMENT,
	51},

	{"COMMIT",
		N_("commit the current transaction"),
		"sql-commit",
		sql_help_COMMIT,
	0},

	{"COMMIT PREPARED",
		N_("commit a transaction that was earlier prepared for two-phase commit"),
		"sql-commit-prepared",
		sql_help_COMMIT_PREPARED,
	0},

	{"COPY",
		N_("copy data between a file and a table"),
		"sql-copy",
		sql_help_COPY,
	22},

	{"CREATE ACCESS METHOD",
		N_("define a new access method"),
		"sql-create-access-method",
		sql_help_CREATE_ACCESS_METHOD,
	2},

	{"CREATE AGGREGATE",
		N_("define a new aggregate function"),
		"sql-createaggregate",
		sql_help_CREATE_AGGREGATE,
	59},

	{"CREATE CAST",
		N_("define a new cast"),
		"sql-createcast",
		sql_help_CREATE_CAST,
	10},

	{"CREATE COLLATION",
		N_("define a new collation"),
		"sql-createcollation",
		sql_help_CREATE_COLLATION,
	9},

	{"CREATE CONVERSION",
		N_("define a new encoding conversion"),
		"sql-createconversion",
		sql_help_CREATE_CONVERSION,
	1},

	{"CREATE DATABASE",
		N_("create a new database"),
		"sql-createdatabase",
		sql_help_CREATE_DATABASE,
	16},

	{"CREATE DOMAIN",
		N_("define a new domain"),
		"sql-createdomain",
		sql_help_CREATE_DOMAIN,
	8},

	{"CREATE EVENT TRIGGER",
		N_("define a new event trigger"),
		"sql-createeventtrigger",
		sql_help_CREATE_EVENT_TRIGGER,
	3},

	{"CREATE EXTENSION",
		N_("install an extension"),
		"sql-createextension",
		sql_help_CREATE_EXTENSION,
	3},

	{"CREATE FOREIGN DATA WRAPPER",
		N_("define a new foreign-data wrapper"),
		"sql-createforeigndatawrapper",
		sql_help_CREATE_FOREIGN_DATA_WRAPPER,
	3},

	{"CREATE FOREIGN TABLE",
		N_("define a new foreign table"),
		"sql-createforeigntable",
		sql_help_CREATE_FOREIGN_TABLE,
	38},

	{"CREATE FUNCTION",
		N_("define a new function"),
		"sql-createfunction",
		sql_help_CREATE_FUNCTION,
	19},

	{"CREATE GROUP",
		N_("define a new database role"),
		"sql-creategroup",
		sql_help_CREATE_GROUP,
	19},

	{"CREATE INDEX",
		N_("define a new index"),
		"sql-createindex",
		sql_help_CREATE_INDEX,
	6},

	{"CREATE LANGUAGE",
		N_("define a new procedural language"),
		"sql-createlanguage",
		sql_help_CREATE_LANGUAGE,
	2},

	{"CREATE MATERIALIZED VIEW",
		N_("define a new materialized view"),
		"sql-creatematerializedview",
		sql_help_CREATE_MATERIALIZED_VIEW,
	6},

	{"CREATE OPERATOR",
		N_("define a new operator"),
		"sql-createoperator",
		sql_help_CREATE_OPERATOR,
	6},

	{"CREATE OPERATOR CLASS",
		N_("define a new operator class"),
		"sql-createopclass",
		sql_help_CREATE_OPERATOR_CLASS,
	5},

	{"CREATE OPERATOR FAMILY",
		N_("define a new operator family"),
		"sql-createopfamily",
		sql_help_CREATE_OPERATOR_FAMILY,
	0},

	{"CREATE POLICY",
		N_("define a new row-level security policy for a table"),
		"sql-createpolicy",
		sql_help_CREATE_POLICY,
	5},

	{"CREATE PROCEDURE",
		N_("define a new procedure"),
		"sql-createprocedure",
		sql_help_CREATE_PROCEDURE,
	9},

	{"CREATE PUBLICATION",
		N_("define a new publication"),
		"sql-createpublication",
		sql_help_CREATE_PUBLICATION,
	8},

	{"CREATE ROLE",
		N_("define a new database role"),
		"sql-createrole",
		sql_help_CREATE_ROLE,
	19},

	{"CREATE RULE",
		N_("define a new rewrite rule"),
		"sql-createrule",
		sql_help_CREATE_RULE,
	6},

	{"CREATE SCHEMA",
		N_("define a new schema"),
		"sql-createschema",
		sql_help_CREATE_SCHEMA,
	10},

	{"CREATE SEQUENCE",
		N_("define a new sequence generator"),
		"sql-createsequence",
		sql_help_CREATE_SEQUENCE,
	5},

	{"CREATE SERVER",
		N_("define a new foreign server"),
		"sql-createserver",
		sql_help_CREATE_SERVER,
	2},

	{"CREATE STATISTICS",
		N_("define extended statistics"),
		"sql-createstatistics",
		sql_help_CREATE_STATISTICS,
	7},

	{"CREATE SUBSCRIPTION",
		N_("define a new subscription"),
		"sql-createsubscription",
		sql_help_CREATE_SUBSCRIPTION,
	3},

	{"CREATE TABLE",
		N_("define a new table"),
		"sql-createtable",
		sql_help_CREATE_TABLE,
	87},

	{"CREATE TABLE AS",
		N_("define a new table from the results of a query"),
		"sql-createtableas",
		sql_help_CREATE_TABLE_AS,
	7},

	{"CREATE TABLESPACE",
		N_("define a new tablespace"),
		"sql-createtablespace",
		sql_help_CREATE_TABLESPACE,
	3},

	{"CREATE TEXT SEARCH CONFIGURATION",
		N_("define a new text search configuration"),
		"sql-createtsconfig",
		sql_help_CREATE_TEXT_SEARCH_CONFIGURATION,
	3},

	{"CREATE TEXT SEARCH DICTIONARY",
		N_("define a new text search dictionary"),
		"sql-createtsdictionary",
		sql_help_CREATE_TEXT_SEARCH_DICTIONARY,
	3},

	{"CREATE TEXT SEARCH PARSER",
		N_("define a new text search parser"),
		"sql-createtsparser",
		sql_help_CREATE_TEXT_SEARCH_PARSER,
	6},

	{"CREATE TEXT SEARCH TEMPLATE",
		N_("define a new text search template"),
		"sql-createtstemplate",
		sql_help_CREATE_TEXT_SEARCH_TEMPLATE,
	3},

	{"CREATE TRANSFORM",
		N_("define a new transform"),
		"sql-createtransform",
		sql_help_CREATE_TRANSFORM,
	3},

	{"CREATE TRIGGER",
		N_("define a new trigger"),
		"sql-createtrigger",
		sql_help_CREATE_TRIGGER,
	14},

	{"CREATE TYPE",
		N_("define a new data type"),
		"sql-createtype",
		sql_help_CREATE_TYPE,
	37},

	{"CREATE USER",
		N_("define a new database role"),
		"sql-createuser",
		sql_help_CREATE_USER,
	19},

	{"CREATE USER MAPPING",
		N_("define a new mapping of a user to a foreign server"),
		"sql-createusermapping",
		sql_help_CREATE_USER_MAPPING,
	2},

	{"CREATE VIEW",
		N_("define a new view"),
		"sql-createview",
		sql_help_CREATE_VIEW,
	3},

	{"DEALLOCATE",
		N_("deallocate a prepared statement"),
		"sql-deallocate",
		sql_help_DEALLOCATE,
	0},

	{"DECLARE",
		N_("define a cursor"),
		"sql-declare",
		sql_help_DECLARE,
	1},

	{"DELETE",
		N_("delete rows of a table"),
		"sql-delete",
		sql_help_DELETE,
	4},

	{"DISCARD",
		N_("discard session state"),
		"sql-discard",
		sql_help_DISCARD,
	0},

	{"DO",
		N_("execute an anonymous code block"),
		"sql-do",
		sql_help_DO,
	0},

	{"DROP ACCESS METHOD",
		N_("remove an access method"),
		"sql-drop-access-method",
		sql_help_DROP_ACCESS_METHOD,
	0},

	{"DROP AGGREGATE",
		N_("remove an aggregate function"),
		"sql-dropaggregate",
		sql_help_DROP_AGGREGATE,
	6},

	{"DROP CAST",
		N_("remove a cast"),
		"sql-dropcast",
		sql_help_DROP_CAST,
	0},

	{"DROP COLLATION",
		N_("remove a collation"),
		"sql-dropcollation",
		sql_help_DROP_COLLATION,
	0},

	{"DROP CONVERSION",
		N_("remove a conversion"),
		"sql-dropconversion",
		sql_help_DROP_CONVERSION,
	0},

	{"DROP DATABASE",
		N_("remove a database"),
		"sql-dropdatabase",
		sql_help_DROP_DATABASE,
	4},

	{"DROP DOMAIN",
		N_("remove a domain"),
		"sql-dropdomain",
		sql_help_DROP_DOMAIN,
	0},

	{"DROP EVENT TRIGGER",
		N_("remove an event trigger"),
		"sql-dropeventtrigger",
		sql_help_DROP_EVENT_TRIGGER,
	0},

	{"DROP EXTENSION",
		N_("remove an extension"),
		"sql-dropextension",
		sql_help_DROP_EXTENSION,
	0},

	{"DROP FOREIGN DATA WRAPPER",
		N_("remove a foreign-data wrapper"),
		"sql-dropforeigndatawrapper",
		sql_help_DROP_FOREIGN_DATA_WRAPPER,
	0},

	{"DROP FOREIGN TABLE",
		N_("remove a foreign table"),
		"sql-dropforeigntable",
		sql_help_DROP_FOREIGN_TABLE,
	0},

	{"DROP FUNCTION",
		N_("remove a function"),
		"sql-dropfunction",
		sql_help_DROP_FUNCTION,
	1},

	{"DROP GROUP",
		N_("remove a database role"),
		"sql-dropgroup",
		sql_help_DROP_GROUP,
	0},

	{"DROP INDEX",
		N_("remove an index"),
		"sql-dropindex",
		sql_help_DROP_INDEX,
	0},

	{"DROP LANGUAGE",
		N_("remove a procedural language"),
		"sql-droplanguage",
		sql_help_DROP_LANGUAGE,
	0},

	{"DROP MATERIALIZED VIEW",
		N_("remove a materialized view"),
		"sql-dropmaterializedview",
		sql_help_DROP_MATERIALIZED_VIEW,
	0},

	{"DROP OPERATOR",
		N_("remove an operator"),
		"sql-dropoperator",
		sql_help_DROP_OPERATOR,
	0},

	{"DROP OPERATOR CLASS",
		N_("remove an operator class"),
		"sql-dropopclass",
		sql_help_DROP_OPERATOR_CLASS,
	0},

	{"DROP OPERATOR FAMILY",
		N_("remove an operator family"),
		"sql-dropopfamily",
		sql_help_DROP_OPERATOR_FAMILY,
	0},

	{"DROP OWNED",
		N_("remove database objects owned by a database role"),
		"sql-drop-owned",
		sql_help_DROP_OWNED,
	0},

	{"DROP POLICY",
		N_("remove a row-level security policy from a table"),
		"sql-droppolicy",
		sql_help_DROP_POLICY,
	0},

	{"DROP PROCEDURE",
		N_("remove a procedure"),
		"sql-dropprocedure",
		sql_help_DROP_PROCEDURE,
	1},

	{"DROP PUBLICATION",
		N_("remove a publication"),
		"sql-droppublication",
		sql_help_DROP_PUBLICATION,
	0},

	{"DROP ROLE",
		N_("remove a database role"),
		"sql-droprole",
		sql_help_DROP_ROLE,
	0},

	{"DROP ROUTINE",
		N_("remove a routine"),
		"sql-droproutine",
		sql_help_DROP_ROUTINE,
	1},

	{"DROP RULE",
		N_("remove a rewrite rule"),
		"sql-droprule",
		sql_help_DROP_RULE,
	0},

	{"DROP SCHEMA",
		N_("remove a schema"),
		"sql-dropschema",
		sql_help_DROP_SCHEMA,
	0},

	{"DROP SEQUENCE",
		N_("remove a sequence"),
		"sql-dropsequence",
		sql_help_DROP_SEQUENCE,
	0},

	{"DROP SERVER",
		N_("remove a foreign server descriptor"),
		"sql-dropserver",
		sql_help_DROP_SERVER,
	0},

	{"DROP STATISTICS",
		N_("remove extended statistics"),
		"sql-dropstatistics",
		sql_help_DROP_STATISTICS,
	0},

	{"DROP SUBSCRIPTION",
		N_("remove a subscription"),
		"sql-dropsubscription",
		sql_help_DROP_SUBSCRIPTION,
	0},

	{"DROP TABLE",
		N_("remove a table"),
		"sql-droptable",
		sql_help_DROP_TABLE,
	0},

	{"DROP TABLESPACE",
		N_("remove a tablespace"),
		"sql-droptablespace",
		sql_help_DROP_TABLESPACE,
	0},

	{"DROP TEXT SEARCH CONFIGURATION",
		N_("remove a text search configuration"),
		"sql-droptsconfig",
		sql_help_DROP_TEXT_SEARCH_CONFIGURATION,
	0},

	{"DROP TEXT SEARCH DICTIONARY",
		N_("remove a text search dictionary"),
		"sql-droptsdictionary",
		sql_help_DROP_TEXT_SEARCH_DICTIONARY,
	0},

	{"DROP TEXT SEARCH PARSER",
		N_("remove a text search parser"),
		"sql-droptsparser",
		sql_help_DROP_TEXT_SEARCH_PARSER,
	0},

	{"DROP TEXT SEARCH TEMPLATE",
		N_("remove a text search template"),
		"sql-droptstemplate",
		sql_help_DROP_TEXT_SEARCH_TEMPLATE,
	0},

	{"DROP TRANSFORM",
		N_("remove a transform"),
		"sql-droptransform",
		sql_help_DROP_TRANSFORM,
	0},

	{"DROP TRIGGER",
		N_("remove a trigger"),
		"sql-droptrigger",
		sql_help_DROP_TRIGGER,
	0},

	{"DROP TYPE",
		N_("remove a data type"),
		"sql-droptype",
		sql_help_DROP_TYPE,
	0},

	{"DROP USER",
		N_("remove a database role"),
		"sql-dropuser",
		sql_help_DROP_USER,
	0},

	{"DROP USER MAPPING",
		N_("remove a user mapping for a foreign server"),
		"sql-dropusermapping",
		sql_help_DROP_USER_MAPPING,
	0},

	{"DROP VIEW",
		N_("remove a view"),
		"sql-dropview",
		sql_help_DROP_VIEW,
	0},

	{"END",
		N_("commit the current transaction"),
		"sql-end",
		sql_help_END,
	0},

	{"EXECUTE",
		N_("execute a prepared statement"),
		"sql-execute",
		sql_help_EXECUTE,
	0},

	{"EXPLAIN",
		N_("show the execution plan of a statement"),
		"sql-explain",
		sql_help_EXPLAIN,
	14},

	{"FETCH",
		N_("retrieve rows from a query using a cursor"),
		"sql-fetch",
		sql_help_FETCH,
	17},

	{"GRANT",
		N_("define access privileges"),
		"sql-grant",
		sql_help_GRANT,
	86},

	{"IMPORT FOREIGN SCHEMA",
		N_("import table definitions from a foreign server"),
		"sql-importforeignschema",
		sql_help_IMPORT_FOREIGN_SCHEMA,
	4},

	{"INSERT",
		N_("create new rows in a table"),
		"sql-insert",
		sql_help_INSERT,
	19},

	{"LISTEN",
		N_("listen for a notification"),
		"sql-listen",
		sql_help_LISTEN,
	0},

	{"LOAD",
		N_("load a shared library file"),
		"sql-load",
		sql_help_LOAD,
	0},

	{"LOCK",
		N_("lock a table"),
		"sql-lock",
		sql_help_LOCK,
	5},

	{"MERGE",
		N_("conditionally insert, update, or delete rows of a table"),
		"sql-merge",
		sql_help_MERGE,
	29},

	{"MOVE",
		N_("position a cursor"),
		"sql-move",
		sql_help_MOVE,
	17},

	{"NOTIFY",
		N_("generate a notification"),
		"sql-notify",
		sql_help_NOTIFY,
	0},

	{"PREPARE",
		N_("prepare a statement for execution"),
		"sql-prepare",
		sql_help_PREPARE,
	0},

	{"PREPARE TRANSACTION",
		N_("prepare the current transaction for two-phase commit"),
		"sql-prepare-transaction",
		sql_help_PREPARE_TRANSACTION,
	0},

	{"REASSIGN OWNED",
		N_("change the ownership of database objects owned by a database role"),
		"sql-reassign-owned",
		sql_help_REASSIGN_OWNED,
	1},

	{"REFRESH MATERIALIZED VIEW",
		N_("replace the contents of a materialized view"),
		"sql-refreshmaterializedview",
		sql_help_REFRESH_MATERIALIZED_VIEW,
	1},

	{"REINDEX",
		N_("rebuild indexes"),
		"sql-reindex",
		sql_help_REINDEX,
	7},

	{"RELEASE SAVEPOINT",
		N_("release a previously defined savepoint"),
		"sql-release-savepoint",
		sql_help_RELEASE_SAVEPOINT,
	0},

	{"RESET",
		N_("restore the value of a run-time parameter to the default value"),
		"sql-reset",
		sql_help_RESET,
	1},

	{"REVOKE",
		N_("remove access privileges"),
		"sql-revoke",
		sql_help_REVOKE,
	115},

	{"ROLLBACK",
		N_("abort the current transaction"),
		"sql-rollback",
		sql_help_ROLLBACK,
	0},

	{"ROLLBACK PREPARED",
		N_("cancel a transaction that was earlier prepared for two-phase commit"),
		"sql-rollback-prepared",
		sql_help_ROLLBACK_PREPARED,
	0},

	{"ROLLBACK TO SAVEPOINT",
		N_("roll back to a savepoint"),
		"sql-rollback-to",
		sql_help_ROLLBACK_TO_SAVEPOINT,
	0},

	{"SAVEPOINT",
		N_("define a new savepoint within the current transaction"),
		"sql-savepoint",
		sql_help_SAVEPOINT,
	0},

	{"SECURITY LABEL",
		N_("define or change a security label applied to an object"),
		"sql-security-label",
		sql_help_SECURITY_LABEL,
	29},

	{"SELECT",
		N_("retrieve rows from a table or view"),
		"sql-select",
		sql_help_SELECT,
	46},

	{"SELECT INTO",
		N_("define a new table from the results of a query"),
		"sql-selectinto",
		sql_help_SELECT_INTO,
	14},

	{"SET",
		N_("change a run-time parameter"),
		"sql-set",
		sql_help_SET,
	1},

	{"SET CONSTRAINTS",
		N_("set constraint check timing for the current transaction"),
		"sql-set-constraints",
		sql_help_SET_CONSTRAINTS,
	0},

	{"SET ROLE",
		N_("set the current user identifier of the current session"),
		"sql-set-role",
		sql_help_SET_ROLE,
	2},

	{"SET SESSION AUTHORIZATION",
		N_("set the session user identifier and the current user identifier of the current session"),
		"sql-set-session-authorization",
		sql_help_SET_SESSION_AUTHORIZATION,
	2},

	{"SET TRANSACTION",
		N_("set the characteristics of the current transaction"),
		"sql-set-transaction",
		sql_help_SET_TRANSACTION,
	8},

	{"SHOW",
		N_("show the value of a run-time parameter"),
		"sql-show",
		sql_help_SHOW,
	1},

	{"START TRANSACTION",
		N_("start a transaction block"),
		"sql-start-transaction",
		sql_help_START_TRANSACTION,
	6},

	{"TABLE",
		N_("retrieve rows from a table or view"),
		"sql-select",
		sql_help_TABLE,
	46},

	{"TRUNCATE",
		N_("empty a table or set of tables"),
		"sql-truncate",
		sql_help_TRUNCATE,
	1},

	{"UNLISTEN",
		N_("stop listening for a notification"),
		"sql-unlisten",
		sql_help_UNLISTEN,
	0},

	{"UPDATE",
		N_("update rows of a table"),
		"sql-update",
		sql_help_UPDATE,
	8},

	{"VACUUM",
		N_("garbage-collect and optionally analyze a database"),
		"sql-vacuum",
		sql_help_VACUUM,
	22},

	{"VALUES",
		N_("compute a set of rows"),
		"sql-values",
		sql_help_VALUES,
	4},

	{"WITH",
		N_("retrieve rows from a table or view"),
		"sql-select",
		sql_help_WITH,
	46},


	{NULL, NULL, NULL}			/* End of list marker */
};
