/*
 * *** Do not change this file by hand. It is automatically
 * *** generated from the DocBook documentation.
 *
 * generated by
 *     /usr/local/bin/suidperl create_help.pl ../../../doc/src/sgml/ref sql_help
 *
 */

#include "sql_help.h"

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

void
sql_help_ALTER_AGGREGATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER AGGREGATE %s ( %s [ , ... ] ) RENAME TO %s\n"
					  "ALTER AGGREGATE %s ( %s [ , ... ] ) OWNER TO %s\n"
					  "ALTER AGGREGATE %s ( %s [ , ... ] ) SET SCHEMA %s",
					  _("name"),
					  _("type"),
					  _("new_name"),
					  _("name"),
					  _("type"),
					  _("new_owner"),
					  _("name"),
					  _("type"),
					  _("new_schema"));
}

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

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

void
sql_help_ALTER_DATABASE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER DATABASE %s [ [ WITH ] %s [ ... ] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    CONNECTION LIMIT %s\n"
					  "\n"
					  "ALTER DATABASE %s RENAME TO %s\n"
					  "\n"
					  "ALTER DATABASE %s OWNER TO %s\n"
					  "\n"
					  "ALTER DATABASE %s SET TABLESPACE %s\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:"),
					  _("connlimit"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_tablespace"),
					  _("name"),
					  _("configuration_parameter"),
					  _("value"),
					  _("name"),
					  _("configuration_parameter"),
					  _("name"),
					  _("configuration_parameter"),
					  _("name"));
}

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\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\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"));
}

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\n"
					  "ALTER DOMAIN %s\n"
					  "    DROP CONSTRAINT %s [ RESTRICT | CASCADE ]\n"
					  "ALTER DOMAIN %s\n"
					  "    OWNER TO %s\n"
					  "ALTER DOMAIN %s\n"
					  "    SET SCHEMA %s",
					  _("name"),
					  _("expression"),
					  _("name"),
					  _("name"),
					  _("domain_constraint"),
					  _("name"),
					  _("constraint_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_schema"));
}

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"
					  "  AGGREGATE %s (%s [, ...] ) |\n"
					  "  CAST (%s AS %s) |\n"
					  "  COLLATION %s |\n"
					  "  CONVERSION %s |\n"
					  "  DOMAIN %s |\n"
					  "  FOREIGN DATA WRAPPER %s |\n"
					  "  FOREIGN TABLE %s |\n"
					  "  FUNCTION %s ( [ [ %s ] [ %s ] %s [, ...] ] ) |\n"
					  "  OPERATOR %s (%s, %s) |\n"
					  "  OPERATOR CLASS %s USING %s |\n"
					  "  OPERATOR FAMILY %s USING %s |\n"
					  "  [ PROCEDURAL ] LANGUAGE %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"
					  "  TYPE %s |\n"
					  "  VIEW %s",
					  _("extension_name"),
					  _("new_version"),
					  _("extension_name"),
					  _("new_schema"),
					  _("extension_name"),
					  _("member_object"),
					  _("extension_name"),
					  _("member_object"),
					  _("where member_object is:"),
					  _("agg_name"),
					  _("agg_type"),
					  _("source_type"),
					  _("target_type"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("function_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("operator_name"),
					  _("left_type"),
					  _("right_type"),
					  _("object_name"),
					  _("index_method"),
					  _("object_name"),
					  _("index_method"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"));
}

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",
					  _("name"),
					  _("handler_function"),
					  _("validator_function"),
					  _("option"),
					  _("value"),
					  _("name"),
					  _("new_owner"));
}

void
sql_help_ALTER_FOREIGN_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER FOREIGN TABLE %s\n"
					  "    %s [, ... ]\n"
					  "ALTER FOREIGN TABLE %s\n"
					  "    RENAME [ COLUMN ] %s TO %s\n"
					  "ALTER FOREIGN TABLE %s\n"
					  "    RENAME TO %s\n"
					  "ALTER FOREIGN TABLE %s\n"
					  "    SET SCHEMA %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    ADD [ COLUMN ] %s %s [ NULL | NOT NULL ]\n"
					  "    DROP [ COLUMN ] [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
					  "    ALTER [ COLUMN ] %s [ SET DATA ] TYPE %s\n"
					  "    ALTER [ COLUMN ] %s { SET | DROP } NOT NULL\n"
					  "    OWNER TO %s\n"
					  "    OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ])",
					  _("name"),
					  _("action"),
					  _("name"),
					  _("column"),
					  _("new_column"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("where action is one of:"),
					  _("column"),
					  _("type"),
					  _("column"),
					  _("column"),
					  _("type"),
					  _("column"),
					  _("new_owner"),
					  _("option"),
					  _("value"));
}

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\n"
					  "ALTER FUNCTION %s ( [ [ %s ] [ %s ] %s [, ...] ] )\n"
					  "    SET SCHEMA %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
					  "    IMMUTABLE | STABLE | VOLATILE\n"
					  "    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\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"),
					  _("where action is one of:"),
					  _("execution_cost"),
					  _("result_rows"),
					  _("configuration_parameter"),
					  _("value"),
					  _("configuration_parameter"),
					  _("configuration_parameter"));
}

void
sql_help_ALTER_GROUP(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER GROUP %s ADD USER %s [, ... ]\n"
					  "ALTER GROUP %s DROP USER %s [, ... ]\n"
					  "\n"
					  "ALTER GROUP %s RENAME TO %s",
					  _("group_name"),
					  _("user_name"),
					  _("group_name"),
					  _("user_name"),
					  _("group_name"),
					  _("new_name"));
}

void
sql_help_ALTER_INDEX(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER INDEX %s RENAME TO %s\n"
					  "ALTER INDEX %s SET TABLESPACE %s\n"
					  "ALTER INDEX %s SET ( %s = %s [, ... ] )\n"
					  "ALTER INDEX %s RESET ( %s [, ... ] )",
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("tablespace_name"),
					  _("name"),
					  _("storage_parameter"),
					  _("value"),
					  _("name"),
					  _("storage_parameter"));
}

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

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

void
sql_help_ALTER_OPERATOR(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER OPERATOR %s ( { %s | NONE } , { %s | NONE } ) OWNER TO %s\n"
					  "ALTER OPERATOR %s ( { %s | NONE } , { %s | NONE } ) SET SCHEMA %s",
					  _("name"),
					  _("left_type"),
					  _("right_type"),
					  _("new_owner"),
					  _("name"),
					  _("left_type"),
					  _("right_type"),
					  _("new_schema"));
}

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

void
sql_help_ALTER_OPERATOR_FAMILY(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER OPERATOR FAMILY %s USING %s ADD\n"
					  "  {  OPERATOR %s %s ( %s, %s ) [ FOR SEARCH | FOR ORDER BY %s ]\n"
					  "   | FUNCTION %s [ ( %s [ , %s ] ) ] %s ( %s [, ...] )\n"
					  "  } [, ... ]\n"
					  "ALTER OPERATOR FAMILY %s USING %s DROP\n"
					  "  {  OPERATOR %s ( %s [ , %s ] )\n"
					  "   | FUNCTION %s ( %s [ , %s ] )\n"
					  "  } [, ... ]\n"
					  "ALTER OPERATOR FAMILY %s USING %s RENAME TO %s\n"
					  "ALTER OPERATOR FAMILY %s USING %s OWNER TO %s\n"
					  "ALTER OPERATOR FAMILY %s USING %s 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"));
}

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"
					  "    | CREATEUSER | NOCREATEUSER\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | REPLICATION | NOREPLICATION\n"
					  "    | CONNECTION LIMIT %s\n"
					  "    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '%s'\n"
					  "    | VALID UNTIL '%s'\n"
					  "\n"
					  "ALTER ROLE %s RENAME TO %s\n"
					  "\n"
					  "ALTER ROLE %s [ IN DATABASE %s ] SET %s { TO | = } { %s | DEFAULT }\n"
					  "ALTER ROLE %s [ IN DATABASE %s ] SET %s FROM CURRENT\n"
					  "ALTER ROLE %s [ IN DATABASE %s ] RESET %s\n"
					  "ALTER ROLE %s [ IN DATABASE %s ] RESET ALL",
					  _("name"),
					  _("option"),
					  _("where option can be:"),
					  _("connlimit"),
					  _("password"),
					  _("timestamp"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("database_name"),
					  _("configuration_parameter"),
					  _("value"),
					  _("name"),
					  _("database_name"),
					  _("configuration_parameter"),
					  _("name"),
					  _("database_name"),
					  _("configuration_parameter"),
					  _("name"),
					  _("database_name"));
}

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

void
sql_help_ALTER_SEQUENCE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER SEQUENCE %s [ 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 %s OWNER TO %s\n"
					  "ALTER SEQUENCE %s RENAME TO %s\n"
					  "ALTER SEQUENCE %s SET SCHEMA %s",
					  _("name"),
					  _("increment"),
					  _("minvalue"),
					  _("maxvalue"),
					  _("start"),
					  _("restart"),
					  _("cache"),
					  _("table"),
					  _("column"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"));
}

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",
					  _("server_name"),
					  _("new_version"),
					  _("option"),
					  _("value"),
					  _("server_name"),
					  _("new_owner"));
}

void
sql_help_ALTER_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TABLE [ ONLY ] %s [ * ]\n"
					  "    %s [, ... ]\n"
					  "ALTER TABLE [ ONLY ] %s [ * ]\n"
					  "    RENAME [ COLUMN ] %s TO %s\n"
					  "ALTER TABLE %s\n"
					  "    RENAME TO %s\n"
					  "ALTER TABLE %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 ] [ 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 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 }\n"
					  "    ADD %s [ NOT VALID ]\n"
					  "    ADD %s\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"
					  "    CLUSTER ON %s\n"
					  "    SET WITHOUT CLUSTER\n"
					  "    SET WITH OIDS\n"
					  "    SET WITHOUT OIDS\n"
					  "    SET ( %s = %s [, ... ] )\n"
					  "    RESET ( %s [, ... ] )\n"
					  "    INHERIT %s\n"
					  "    NO INHERIT %s\n"
					  "    OF %s\n"
					  "    NOT OF\n"
					  "    OWNER TO %s\n"
					  "    SET TABLESPACE %s\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ CONSTRAINT %s ]\n"
					  "    { UNIQUE | PRIMARY KEY } USING INDEX %s\n"
					  "    [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]",
					  _("name"),
					  _("action"),
					  _("name"),
					  _("column"),
					  _("new_column"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("where action is one of:"),
					  _("column"),
					  _("data_type"),
					  _("collation"),
					  _("column_constraint"),
					  _("column"),
					  _("column"),
					  _("data_type"),
					  _("collation"),
					  _("expression"),
					  _("column"),
					  _("expression"),
					  _("column"),
					  _("column"),
					  _("column"),
					  _("integer"),
					  _("column"),
					  _("attribute_option"),
					  _("value"),
					  _("column"),
					  _("attribute_option"),
					  _("column"),
					  _("table_constraint"),
					  _("table_constraint_using_index"),
					  _("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"),
					  _("storage_parameter"),
					  _("value"),
					  _("storage_parameter"),
					  _("parent_table"),
					  _("parent_table"),
					  _("type_name"),
					  _("new_owner"),
					  _("new_tablespace"),
					  _("and table_constraint_using_index is:"),
					  _("constraint_name"),
					  _("index_name"));
}

void
sql_help_ALTER_TABLESPACE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TABLESPACE %s RENAME TO %s\n"
					  "ALTER TABLESPACE %s OWNER TO %s\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"));
}

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\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"));
}

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\n"
					  "ALTER TEXT SEARCH DICTIONARY %s SET SCHEMA %s",
					  _("name"),
					  _("option"),
					  _("value"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_schema"));
}

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"));
}

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"));
}

void
sql_help_ALTER_TRIGGER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TRIGGER %s ON %s RENAME TO %s",
					  _("name"),
					  _("table"),
					  _("new_name"));
}

void
sql_help_ALTER_TYPE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER TYPE %s %s [, ... ]\n"
					  "ALTER TYPE %s OWNER TO %s\n"
					  "ALTER TYPE %s RENAME ATTRIBUTE %s TO %s\n"
					  "ALTER TYPE %s RENAME TO %s [ CASCADE | RESTRICT ]\n"
					  "ALTER TYPE %s SET SCHEMA %s\n"
					  "ALTER TYPE %s ADD VALUE %s [ { BEFORE | AFTER } %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"),
					  _("action"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("attribute_name"),
					  _("new_attribute_name"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"),
					  _("name"),
					  _("new_enum_value"),
					  _("existing_enum_value"),
					  _("where action is one of:"),
					  _("attribute_name"),
					  _("data_type"),
					  _("collation"),
					  _("attribute_name"),
					  _("attribute_name"),
					  _("data_type"),
					  _("collation"));
}

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"
					  "    | CREATEUSER | NOCREATEUSER\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | REPLICATION | NOREPLICATION\n"
					  "    | CONNECTION LIMIT %s\n"
					  "    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '%s'\n"
					  "    | VALID UNTIL '%s'\n"
					  "\n"
					  "ALTER USER %s RENAME TO %s\n"
					  "\n"
					  "ALTER USER %s SET %s { TO | = } { %s | DEFAULT }\n"
					  "ALTER USER %s SET %s FROM CURRENT\n"
					  "ALTER USER %s RESET %s\n"
					  "ALTER USER %s RESET ALL",
					  _("name"),
					  _("option"),
					  _("where option can be:"),
					  _("connlimit"),
					  _("password"),
					  _("timestamp"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("configuration_parameter"),
					  _("value"),
					  _("name"),
					  _("configuration_parameter"),
					  _("name"),
					  _("configuration_parameter"),
					  _("name"));
}

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

void
sql_help_ALTER_VIEW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ALTER VIEW %s ALTER [ COLUMN ] %s SET DEFAULT %s\n"
					  "ALTER VIEW %s ALTER [ COLUMN ] %s DROP DEFAULT\n"
					  "ALTER VIEW %s OWNER TO %s\n"
					  "ALTER VIEW %s RENAME TO %s\n"
					  "ALTER VIEW %s SET SCHEMA %s",
					  _("name"),
					  _("column"),
					  _("expression"),
					  _("name"),
					  _("column"),
					  _("name"),
					  _("new_owner"),
					  _("name"),
					  _("new_name"),
					  _("name"),
					  _("new_schema"));
}

void
sql_help_ANALYZE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "ANALYZE [ VERBOSE ] [ %s [ ( %s [, ...] ) ] ]",
					  _("table"),
					  _("column"));
}

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:"));
}

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

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

void
sql_help_CLUSTER(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CLUSTER [VERBOSE] %s [ USING %s ]\n"
					  "CLUSTER [VERBOSE]",
					  _("table_name"),
					  _("index_name"));
}

void
sql_help_COMMENT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "COMMENT ON\n"
					  "{\n"
					  "  AGGREGATE %s (%s [, ...] ) |\n"
					  "  CAST (%s AS %s) |\n"
					  "  COLLATION %s |\n"
					  "  COLUMN %s.%s |\n"
					  "  CONSTRAINT %s ON %s |\n"
					  "  CONVERSION %s |\n"
					  "  DATABASE %s |\n"
					  "  DOMAIN %s |\n"
					  "  EXTENSION %s |\n"
					  "  FOREIGN DATA WRAPPER %s |\n"
					  "  FOREIGN TABLE %s |\n"
					  "  FUNCTION %s ( [ [ %s ] [ %s ] %s [, ...] ] ) |\n"
					  "  INDEX %s |\n"
					  "  LARGE OBJECT %s |\n"
					  "  OPERATOR %s (%s, %s) |\n"
					  "  OPERATOR CLASS %s USING %s |\n"
					  "  OPERATOR FAMILY %s USING %s |\n"
					  "  [ PROCEDURAL ] LANGUAGE %s |\n"
					  "  ROLE %s |\n"
					  "  RULE %s ON %s |\n"
					  "  SCHEMA %s |\n"
					  "  SEQUENCE %s |\n"
					  "  SERVER %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"
					  "  TRIGGER %s ON %s |\n"
					  "  TYPE %s |\n"
					  "  VIEW %s\n"
					  "} IS '%s'",
					  _("agg_name"),
					  _("agg_type"),
					  _("source_type"),
					  _("target_type"),
					  _("object_name"),
					  _("relation_name"),
					  _("column_name"),
					  _("constraint_name"),
					  _("table_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("function_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("object_name"),
					  _("large_object_oid"),
					  _("operator_name"),
					  _("left_type"),
					  _("right_type"),
					  _("object_name"),
					  _("index_method"),
					  _("object_name"),
					  _("index_method"),
					  _("object_name"),
					  _("object_name"),
					  _("rule_name"),
					  _("table_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("trigger_name"),
					  _("table_name"),
					  _("object_name"),
					  _("object_name"),
					  _("text"));
}

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

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

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

void
sql_help_CREATE_AGGREGATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE AGGREGATE %s ( %s [ , ... ] ) (\n"
					  "    SFUNC = %s,\n"
					  "    STYPE = %s\n"
					  "    [ , FINALFUNC = %s ]\n"
					  "    [ , INITCOND = %s ]\n"
					  "    [ , SORTOP = %s ]\n"
					  ")\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "CREATE AGGREGATE %s (\n"
					  "    BASETYPE = %s,\n"
					  "    SFUNC = %s,\n"
					  "    STYPE = %s\n"
					  "    [ , FINALFUNC = %s ]\n"
					  "    [ , INITCOND = %s ]\n"
					  "    [ , SORTOP = %s ]\n"
					  ")",
					  _("name"),
					  _("input_data_type"),
					  _("sfunc"),
					  _("state_data_type"),
					  _("ffunc"),
					  _("initial_condition"),
					  _("sort_operator"),
					  _("or the old syntax"),
					  _("name"),
					  _("base_type"),
					  _("sfunc"),
					  _("state_data_type"),
					  _("ffunc"),
					  _("initial_condition"),
					  _("sort_operator"));
}

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"));
}

void
sql_help_CREATE_COLLATION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE COLLATION %s (\n"
					  "    [ LOCALE = %s, ]\n"
					  "    [ LC_COLLATE = %s, ]\n"
					  "    [ LC_CTYPE = %s ]\n"
					  ")\n"
					  "CREATE COLLATION %s FROM %s",
					  _("name"),
					  _("locale"),
					  _("lc_collate"),
					  _("lc_ctype"),
					  _("name"),
					  _("existing_collation"));
}

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"));
}

void
sql_help_CREATE_DATABASE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE DATABASE %s\n"
					  "    [ [ WITH ] [ OWNER [=] %s ]\n"
					  "           [ TEMPLATE [=] %s ]\n"
					  "           [ ENCODING [=] %s ]\n"
					  "           [ LC_COLLATE [=] %s ]\n"
					  "           [ LC_CTYPE [=] %s ]\n"
					  "           [ TABLESPACE [=] %s ]\n"
					  "           [ CONNECTION LIMIT [=] %s ] ]",
					  _("name"),
					  _("user_name"),
					  _("template"),
					  _("encoding"),
					  _("lc_collate"),
					  _("lc_ctype"),
					  _("tablespace"),
					  _("connlimit"));
}

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"));
}

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

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"));
}

void
sql_help_CREATE_FOREIGN_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE FOREIGN TABLE [ IF NOT EXISTS ] %s ( [\n"
					  "  { %s %s [ NULL | NOT NULL ] }\n"
					  "    [, ... ]\n"
					  "] )\n"
					  "  SERVER %s\n"
					  "[ OPTIONS ( %s '%s' [, ... ] ) ]",
					  _("table_name"),
					  _("column_name"),
					  _("data_type"),
					  _("server_name"),
					  _("option"),
					  _("value"));
}

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"
					  "    | WINDOW\n"
					  "    | IMMUTABLE | STABLE | VOLATILE\n"
					  "    | CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
					  "    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
					  "    | COST %s\n"
					  "    | ROWS %s\n"
					  "    | SET %s { TO %s | = %s | FROM CURRENT }\n"
					  "    | AS '%s'\n"
					  "    | AS '%s', '%s'\n"
					  "  } ...\n"
					  "    [ WITH ( %s [, ...] ) ]",
					  _("name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("default_expr"),
					  _("rettype"),
					  _("column_name"),
					  _("column_type"),
					  _("lang_name"),
					  _("execution_cost"),
					  _("result_rows"),
					  _("configuration_parameter"),
					  _("value"),
					  _("value"),
					  _("definition"),
					  _("obj_file"),
					  _("link_symbol"),
					  _("attribute"));
}

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"
					  "    | CREATEUSER | NOCREATEUSER\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '%s'\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:"),
					  _("password"),
					  _("timestamp"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"),
					  _("uid"));
}

void
sql_help_CREATE_INDEX(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ %s ] ON %s [ USING %s ]\n"
					  "    ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n"
					  "    [ WITH ( %s = %s [, ... ] ) ]\n"
					  "    [ TABLESPACE %s ]\n"
					  "    [ WHERE %s ]",
					  _("name"),
					  _("table"),
					  _("method"),
					  _("column"),
					  _("expression"),
					  _("collation"),
					  _("opclass"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace"),
					  _("predicate"));
}

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

void
sql_help_CREATE_OPERATOR(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE OPERATOR %s (\n"
					  "    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"));
}

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"));
}

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

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"
					  "    | CREATEUSER | NOCREATEUSER\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | REPLICATION | NOREPLICATION\n"
					  "    | CONNECTION LIMIT %s\n"
					  "    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '%s'\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"));
}

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 ... ) }",
					  _("name"),
					  _("event"),
					  _("table"),
					  _("condition"),
					  _("command"),
					  _("command"),
					  _("command"));
}

void
sql_help_CREATE_SCHEMA(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE SCHEMA %s [ AUTHORIZATION %s ] [ %s [ ... ] ]\n"
					  "CREATE SCHEMA AUTHORIZATION %s [ %s [ ... ] ]",
					  _("schema_name"),
					  _("user_name"),
					  _("schema_element"),
					  _("user_name"),
					  _("schema_element"));
}

void
sql_help_CREATE_SEQUENCE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ TEMPORARY | TEMP ] SEQUENCE %s [ 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"),
					  _("increment"),
					  _("minvalue"),
					  _("maxvalue"),
					  _("start"),
					  _("cache"),
					  _("table"),
					  _("column"));
}

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

void
sql_help_CREATE_TABLE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s ( [\n"
					  "  { %s %s [ COLLATE %s ] [ %s [ ... ] ]\n"
					  "    | %s\n"
					  "    | LIKE %s [ %s ... ] }\n"
					  "    [, ... ]\n"
					  "] )\n"
					  "[ INHERITS ( %s [, ... ] ) ]\n"
					  "[ WITH ( %s [= %s] [, ... ] ) | WITH OIDS | 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"
					  "[ WITH ( %s [= %s] [, ... ] ) | WITH OIDS | 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 ) |\n"
					  "  DEFAULT %s |\n"
					  "  UNIQUE %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 ) |\n"
					  "  UNIQUE ( %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 } { DEFAULTS | CONSTRAINTS | INDEXES | STORAGE | COMMENTS | ALL }\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "[ WITH ( %s [= %s] [, ... ] ) ]\n"
					  "[ USING INDEX TABLESPACE %s ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "{ %s | ( %s ) } [ %s ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]",
					  _("table_name"),
					  _("column_name"),
					  _("data_type"),
					  _("collation"),
					  _("column_constraint"),
					  _("table_constraint"),
					  _("parent_table"),
					  _("like_option"),
					  _("parent_table"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace"),
					  _("table_name"),
					  _("type_name"),
					  _("column_name"),
					  _("column_constraint"),
					  _("table_constraint"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace"),
					  _("where column_constraint is:"),
					  _("constraint_name"),
					  _("expression"),
					  _("default_expr"),
					  _("index_parameters"),
					  _("index_parameters"),
					  _("reftable"),
					  _("refcolumn"),
					  _("action"),
					  _("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"),
					  _("action"),
					  _("action"),
					  _("and like_option is:"),
					  _("index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"),
					  _("storage_parameter"),
					  _("value"),
					  _("tablespace"),
					  _("exclude_element in an EXCLUDE constraint is:"),
					  _("column"),
					  _("expression"),
					  _("opclass"));
}

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

void
sql_help_CREATE_TABLESPACE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE TABLESPACE %s [ OWNER %s ] LOCATION '%s'",
					  _("tablespace_name"),
					  _("user_name"),
					  _("directory"));
}

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"));
}

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"));
}

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"));
}

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"));
}

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

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 (\n"
					  "    INPUT = %s,\n"
					  "    OUTPUT = %s\n"
					  "    [ , RECEIVE = %s ]\n"
					  "    [ , SEND = %s ]\n"
					  "    [ , TYPMOD_IN = %s ]\n"
					  "    [ , TYPMOD_OUT = %s ]\n"
					  "    [ , ANALYZE = %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"),
					  _("input_function"),
					  _("output_function"),
					  _("receive_function"),
					  _("send_function"),
					  _("type_modifier_input_function"),
					  _("type_modifier_output_function"),
					  _("analyze_function"),
					  _("internallength"),
					  _("alignment"),
					  _("storage"),
					  _("like_type"),
					  _("category"),
					  _("preferred"),
					  _("default"),
					  _("element"),
					  _("delimiter"),
					  _("collatable"),
					  _("name"));
}

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"
					  "    | CREATEUSER | NOCREATEUSER\n"
					  "    | INHERIT | NOINHERIT\n"
					  "    | LOGIN | NOLOGIN\n"
					  "    | REPLICATION | NOREPLICATION\n"
					  "    | CONNECTION LIMIT %s\n"
					  "    | [ ENCRYPTED | UNENCRYPTED ] PASSWORD '%s'\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"));
}

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

void
sql_help_CREATE_VIEW(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] VIEW %s [ ( %s [, ...] ) ]\n"
					  "    AS %s",
					  _("name"),
					  _("column_name"),
					  _("query"));
}

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

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

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"),
					  _("alias"),
					  _("using_list"),
					  _("condition"),
					  _("cursor_name"),
					  _("output_expression"),
					  _("output_name"));
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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"
					  "    BUFFERS [ %s ]\n"
					  "    FORMAT { TEXT | XML | JSON | YAML }",
					  _("option"),
					  _("statement"),
					  _("statement"),
					  _("where option can be one of:"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"),
					  _("boolean"));
}

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 empty or one of:"),
					  _("count"),
					  _("count"),
					  _("count"),
					  _("count"),
					  _("count"));
}

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 { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( %s [, ...] )\n"
					  "    [, ...] | ALL [ PRIVILEGES ] ( %s [, ...] ) }\n"
					  "    ON [ TABLE ] %s [, ...]\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { { USAGE | SELECT | UPDATE }\n"
					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON { SEQUENCE %s [, ...]\n"
					  "         | ALL SEQUENCES IN SCHEMA %s [, ...] }\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON DATABASE %s [, ...]\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON FOREIGN DATA WRAPPER %s [, ...]\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON FOREIGN SERVER %s [, ...]\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n"
					  "    ON { FUNCTION %s ( [ [ %s ] [ %s ] %s [, ...] ] ) [, ...]\n"
					  "         | ALL FUNCTIONS IN SCHEMA %s [, ...] }\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON LANGUAGE %s [, ...]\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON LARGE OBJECT %s [, ...]\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON SCHEMA %s [, ...]\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT { CREATE | ALL [ PRIVILEGES ] }\n"
					  "    ON TABLESPACE %s [, ...]\n"
					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
					  "\n"
					  "GRANT %s [, ...] TO %s [, ...] [ WITH ADMIN OPTION ]",
					  _("table_name"),
					  _("schema_name"),
					  _("role_name"),
					  _("column"),
					  _("column"),
					  _("table_name"),
					  _("role_name"),
					  _("sequence_name"),
					  _("schema_name"),
					  _("role_name"),
					  _("database_name"),
					  _("role_name"),
					  _("fdw_name"),
					  _("role_name"),
					  _("server_name"),
					  _("role_name"),
					  _("function_name"),
					  _("argmode"),
					  _("arg_name"),
					  _("arg_type"),
					  _("schema_name"),
					  _("role_name"),
					  _("lang_name"),
					  _("role_name"),
					  _("loid"),
					  _("role_name"),
					  _("schema_name"),
					  _("role_name"),
					  _("tablespace_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"));
}

void
sql_help_INSERT(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
					  "INSERT INTO %s [ ( %s [, ...] ) ]\n"
					  "    { DEFAULT VALUES | VALUES ( { %s | DEFAULT } [, ...] ) [, ...] | %s }\n"
					  "    [ RETURNING * | %s [ [ AS ] %s ] [, ...] ]",
					  _("with_query"),
					  _("table"),
					  _("column"),
					  _("expression"),
					  _("query"),
					  _("output_expression"),
					  _("output_name"));
}

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

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

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:"));
}

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 empty or one of:"),
					  _("count"),
					  _("count"),
					  _("count"),
					  _("count"),
					  _("count"));
}

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

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

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

void
sql_help_REASSIGN_OWNED(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "REASSIGN OWNED BY %s [, ...] TO %s",
					  _("old_role"),
					  _("new_role"));
}

void
sql_help_REINDEX(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "REINDEX { INDEX | TABLE | DATABASE | SYSTEM } %s [ FORCE ]",
					  _("name"));
}

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

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

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 { [ GROUP ] %s | PUBLIC } [, ...]\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 { [ GROUP ] %s | PUBLIC } [, ...]\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 { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON DATABASE %s [, ...]\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON FOREIGN DATA WRAPPER %s [, ...]\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON FOREIGN SERVER %s [, ...]\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { EXECUTE | ALL [ PRIVILEGES ] }\n"
					  "    ON { FUNCTION %s ( [ [ %s ] [ %s ] %s [, ...] ] ) [, ...]\n"
					  "         | ALL FUNCTIONS IN SCHEMA %s [, ...] }\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
					  "    ON LANGUAGE %s [, ...]\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON LARGE OBJECT %s [, ...]\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n"
					  "    ON SCHEMA %s [, ...]\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ GRANT OPTION FOR ]\n"
					  "    { CREATE | ALL [ PRIVILEGES ] }\n"
					  "    ON TABLESPACE %s [, ...]\n"
					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
					  "    [ CASCADE | RESTRICT ]\n"
					  "\n"
					  "REVOKE [ ADMIN OPTION FOR ]\n"
					  "    %s [, ...] FROM %s [, ...]\n"
					  "    [ CASCADE | RESTRICT ]",
					  _("table_name"),
					  _("schema_name"),
					  _("role_name"),
					  _("column"),
					  _("column"),
					  _("table_name"),
					  _("role_name"),
					  _("sequence_name"),
					  _("schema_name"),
					  _("role_name"),
					  _("database_name"),
					  _("role_name"),
					  _("fdw_name"),
					  _("role_name"),
					  _("server_name"),
					  _("role_name"),
					  _("function_name"),
					  _("argmode"),
					  _("arg_name"),
					  _("arg_type"),
					  _("schema_name"),
					  _("role_name"),
					  _("lang_name"),
					  _("role_name"),
					  _("loid"),
					  _("role_name"),
					  _("schema_name"),
					  _("role_name"),
					  _("tablespace_name"),
					  _("role_name"),
					  _("role_name"),
					  _("role_name"));
}

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

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

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

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

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"
					  "  DOMAIN %s |\n"
					  "  FOREIGN TABLE %s\n"
					  "  FUNCTION %s ( [ [ %s ] [ %s ] %s [, ...] ] ) |\n"
					  "  LARGE OBJECT %s |\n"
					  "  [ PROCEDURAL ] LANGUAGE %s |\n"
					  "  SCHEMA %s |\n"
					  "  SEQUENCE %s |\n"
					  "  TYPE %s |\n"
					  "  VIEW %s\n"
					  "} IS '%s'",
					  _("provider"),
					  _("object_name"),
					  _("table_name"),
					  _("column_name"),
					  _("agg_name"),
					  _("agg_type"),
					  _("object_name"),
					  _("object_name"),
					  _("function_name"),
					  _("argmode"),
					  _("argname"),
					  _("argtype"),
					  _("large_object_oid"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("object_name"),
					  _("label"));
}

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 %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 ] [...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    ( %s ) [ AS ] %s [ ( %s [, ...] ) ]\n"
					  "    %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    %s ( [ %s [, ...] ] ) [ AS ] %s [ ( %s [, ...] | %s [, ...] ) ]\n"
					  "    %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
					  "    %s [ NATURAL ] %s %s [ ON %s | USING ( %s [, ...] ) ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s [ ( %s [, ...] ) ] AS ( %s | %s | %s | %s )\n"
					  "\n"
					  "TABLE [ ONLY ] %s [ * ]",
					  _("with_query"),
					  _("expression"),
					  _("expression"),
					  _("output_name"),
					  _("from_item"),
					  _("condition"),
					  _("expression"),
					  _("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"),
					  _("select"),
					  _("alias"),
					  _("column_alias"),
					  _("with_query_name"),
					  _("alias"),
					  _("column_alias"),
					  _("function_name"),
					  _("argument"),
					  _("alias"),
					  _("column_alias"),
					  _("column_definition"),
					  _("function_name"),
					  _("argument"),
					  _("column_definition"),
					  _("from_item"),
					  _("join_type"),
					  _("from_item"),
					  _("join_condition"),
					  _("join_column"),
					  _("and with_query is:"),
					  _("with_query_name"),
					  _("column_name"),
					  _("select"),
					  _("insert"),
					  _("update"),
					  _("delete"),
					  _("table_name"));
}

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"));
}

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

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

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"));
}

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"));
}

void
sql_help_SET_TRANSACTION(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "SET TRANSACTION %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"),
					  _("transaction_mode"),
					  _("where transaction_mode is one of:"));
}

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

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:"));
}

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 %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 ] [...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    ( %s ) [ AS ] %s [ ( %s [, ...] ) ]\n"
					  "    %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    %s ( [ %s [, ...] ] ) [ AS ] %s [ ( %s [, ...] | %s [, ...] ) ]\n"
					  "    %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
					  "    %s [ NATURAL ] %s %s [ ON %s | USING ( %s [, ...] ) ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s [ ( %s [, ...] ) ] AS ( %s | %s | %s | %s )\n"
					  "\n"
					  "TABLE [ ONLY ] %s [ * ]",
					  _("with_query"),
					  _("expression"),
					  _("expression"),
					  _("output_name"),
					  _("from_item"),
					  _("condition"),
					  _("expression"),
					  _("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"),
					  _("select"),
					  _("alias"),
					  _("column_alias"),
					  _("with_query_name"),
					  _("alias"),
					  _("column_alias"),
					  _("function_name"),
					  _("argument"),
					  _("alias"),
					  _("column_alias"),
					  _("column_definition"),
					  _("function_name"),
					  _("argument"),
					  _("column_definition"),
					  _("from_item"),
					  _("join_type"),
					  _("from_item"),
					  _("join_condition"),
					  _("join_column"),
					  _("and with_query is:"),
					  _("with_query_name"),
					  _("column_name"),
					  _("select"),
					  _("insert"),
					  _("update"),
					  _("delete"),
					  _("table_name"));
}

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

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

void
sql_help_UPDATE(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
					  "UPDATE [ ONLY ] %s [ [ AS ] %s ]\n"
					  "    SET { %s = { %s | DEFAULT } |\n"
					  "          ( %s [, ...] ) = ( { %s | DEFAULT } [, ...] ) } [, ...]\n"
					  "    [ FROM %s ]\n"
					  "    [ WHERE %s | WHERE CURRENT OF %s ]\n"
					  "    [ RETURNING * | %s [ [ AS ] %s ] [, ...] ]",
					  _("with_query"),
					  _("table"),
					  _("alias"),
					  _("column"),
					  _("expression"),
					  _("column"),
					  _("expression"),
					  _("from_list"),
					  _("condition"),
					  _("cursor_name"),
					  _("output_expression"),
					  _("output_name"));
}

void
sql_help_VACUUM(PQExpBuffer buf)
{
	appendPQExpBuffer(buf,
					  "VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE } [, ...] ) ] [ %s [ (%s [, ...] ) ] ]\n"
					  "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ %s ]\n"
					  "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ %s [ (%s [, ...] ) ] ]",
					  _("table"),
					  _("column"),
					  _("table"),
					  _("table"),
					  _("column"));
}

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"));
}

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 %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 ] [...] ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    ( %s ) [ AS ] %s [ ( %s [, ...] ) ]\n"
					  "    %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
					  "    %s ( [ %s [, ...] ] ) [ AS ] %s [ ( %s [, ...] | %s [, ...] ) ]\n"
					  "    %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
					  "    %s [ NATURAL ] %s %s [ ON %s | USING ( %s [, ...] ) ]\n"
					  "\n"
					  "%s\n"
					  "\n"
					  "    %s [ ( %s [, ...] ) ] AS ( %s | %s | %s | %s )\n"
					  "\n"
					  "TABLE [ ONLY ] %s [ * ]",
					  _("with_query"),
					  _("expression"),
					  _("expression"),
					  _("output_name"),
					  _("from_item"),
					  _("condition"),
					  _("expression"),
					  _("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"),
					  _("select"),
					  _("alias"),
					  _("column_alias"),
					  _("with_query_name"),
					  _("alias"),
					  _("column_alias"),
					  _("function_name"),
					  _("argument"),
					  _("alias"),
					  _("column_alias"),
					  _("column_definition"),
					  _("function_name"),
					  _("argument"),
					  _("column_definition"),
					  _("from_item"),
					  _("join_type"),
					  _("from_item"),
					  _("join_condition"),
					  _("join_column"),
					  _("and with_query is:"),
					  _("with_query_name"),
					  _("column_name"),
					  _("select"),
					  _("insert"),
					  _("update"),
					  _("delete"),
					  _("table_name"));
}

