1 /*
2  * *** Do not change this file by hand. It is automatically
3  * *** generated from the DocBook documentation.
4  *
5  * generated by src/bin/psql/create_help.pl
6  *
7  */
8 
9 #define N_(x) (x)				/* gettext noop */
10 
11 #include "postgres_fe.h"
12 #include "sql_help.h"
13 
14 static void
sql_help_ABORT(PQExpBuffer buf)15 sql_help_ABORT(PQExpBuffer buf)
16 {
17 	appendPQExpBuffer(buf,
18 					  "ABORT [ WORK | TRANSACTION ]");
19 }
20 
21 static void
sql_help_ALTER_AGGREGATE(PQExpBuffer buf)22 sql_help_ALTER_AGGREGATE(PQExpBuffer buf)
23 {
24 	appendPQExpBuffer(buf,
25 					  "ALTER AGGREGATE %s ( %s ) RENAME TO %s\n"
26 					  "ALTER AGGREGATE %s ( %s )\n"
27 					  "                OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
28 					  "ALTER AGGREGATE %s ( %s ) SET SCHEMA %s\n"
29 					  "\n"
30 					  "%s\n"
31 					  "\n"
32 					  "* |\n"
33 					  "[ %s ] [ %s ] %s [ , ... ] |\n"
34 					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
35 					  _("name"),
36 					  _("aggregate_signature"),
37 					  _("new_name"),
38 					  _("name"),
39 					  _("aggregate_signature"),
40 					  _("new_owner"),
41 					  _("name"),
42 					  _("aggregate_signature"),
43 					  _("new_schema"),
44 					  _("where aggregate_signature is:"),
45 					  _("argmode"),
46 					  _("argname"),
47 					  _("argtype"),
48 					  _("argmode"),
49 					  _("argname"),
50 					  _("argtype"),
51 					  _("argmode"),
52 					  _("argname"),
53 					  _("argtype"));
54 }
55 
56 static void
sql_help_ALTER_COLLATION(PQExpBuffer buf)57 sql_help_ALTER_COLLATION(PQExpBuffer buf)
58 {
59 	appendPQExpBuffer(buf,
60 					  "ALTER COLLATION %s REFRESH VERSION\n"
61 					  "\n"
62 					  "ALTER COLLATION %s RENAME TO %s\n"
63 					  "ALTER COLLATION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
64 					  "ALTER COLLATION %s SET SCHEMA %s",
65 					  _("name"),
66 					  _("name"),
67 					  _("new_name"),
68 					  _("name"),
69 					  _("new_owner"),
70 					  _("name"),
71 					  _("new_schema"));
72 }
73 
74 static void
sql_help_ALTER_CONVERSION(PQExpBuffer buf)75 sql_help_ALTER_CONVERSION(PQExpBuffer buf)
76 {
77 	appendPQExpBuffer(buf,
78 					  "ALTER CONVERSION %s RENAME TO %s\n"
79 					  "ALTER CONVERSION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
80 					  "ALTER CONVERSION %s SET SCHEMA %s",
81 					  _("name"),
82 					  _("new_name"),
83 					  _("name"),
84 					  _("new_owner"),
85 					  _("name"),
86 					  _("new_schema"));
87 }
88 
89 static void
sql_help_ALTER_DATABASE(PQExpBuffer buf)90 sql_help_ALTER_DATABASE(PQExpBuffer buf)
91 {
92 	appendPQExpBuffer(buf,
93 					  "ALTER DATABASE %s [ [ WITH ] %s [ ... ] ]\n"
94 					  "\n"
95 					  "%s\n"
96 					  "\n"
97 					  "    ALLOW_CONNECTIONS %s\n"
98 					  "    CONNECTION LIMIT %s\n"
99 					  "    IS_TEMPLATE %s\n"
100 					  "\n"
101 					  "ALTER DATABASE %s RENAME TO %s\n"
102 					  "\n"
103 					  "ALTER DATABASE %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
104 					  "\n"
105 					  "ALTER DATABASE %s SET TABLESPACE %s\n"
106 					  "\n"
107 					  "ALTER DATABASE %s SET %s { TO | = } { %s | DEFAULT }\n"
108 					  "ALTER DATABASE %s SET %s FROM CURRENT\n"
109 					  "ALTER DATABASE %s RESET %s\n"
110 					  "ALTER DATABASE %s RESET ALL",
111 					  _("name"),
112 					  _("option"),
113 					  _("where option can be:"),
114 					  _("allowconn"),
115 					  _("connlimit"),
116 					  _("istemplate"),
117 					  _("name"),
118 					  _("new_name"),
119 					  _("name"),
120 					  _("new_owner"),
121 					  _("name"),
122 					  _("new_tablespace"),
123 					  _("name"),
124 					  _("configuration_parameter"),
125 					  _("value"),
126 					  _("name"),
127 					  _("configuration_parameter"),
128 					  _("name"),
129 					  _("configuration_parameter"),
130 					  _("name"));
131 }
132 
133 static void
sql_help_ALTER_DEFAULT_PRIVILEGES(PQExpBuffer buf)134 sql_help_ALTER_DEFAULT_PRIVILEGES(PQExpBuffer buf)
135 {
136 	appendPQExpBuffer(buf,
137 					  "ALTER DEFAULT PRIVILEGES\n"
138 					  "    [ FOR { ROLE | USER } %s [, ...] ]\n"
139 					  "    [ IN SCHEMA %s [, ...] ]\n"
140 					  "    %s\n"
141 					  "\n"
142 					  "%s\n"
143 					  "\n"
144 					  "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
145 					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
146 					  "    ON TABLES\n"
147 					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
148 					  "\n"
149 					  "GRANT { { USAGE | SELECT | UPDATE }\n"
150 					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
151 					  "    ON SEQUENCES\n"
152 					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
153 					  "\n"
154 					  "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n"
155 					  "    ON { FUNCTIONS | ROUTINES }\n"
156 					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
157 					  "\n"
158 					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
159 					  "    ON TYPES\n"
160 					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
161 					  "\n"
162 					  "GRANT { USAGE | CREATE | ALL [ PRIVILEGES ] }\n"
163 					  "    ON SCHEMAS\n"
164 					  "    TO { [ GROUP ] %s | PUBLIC } [, ...] [ WITH GRANT OPTION ]\n"
165 					  "\n"
166 					  "REVOKE [ GRANT OPTION FOR ]\n"
167 					  "    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
168 					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
169 					  "    ON TABLES\n"
170 					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
171 					  "    [ CASCADE | RESTRICT ]\n"
172 					  "\n"
173 					  "REVOKE [ GRANT OPTION FOR ]\n"
174 					  "    { { USAGE | SELECT | UPDATE }\n"
175 					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
176 					  "    ON SEQUENCES\n"
177 					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
178 					  "    [ CASCADE | RESTRICT ]\n"
179 					  "\n"
180 					  "REVOKE [ GRANT OPTION FOR ]\n"
181 					  "    { EXECUTE | ALL [ PRIVILEGES ] }\n"
182 					  "    ON { FUNCTIONS | ROUTINES }\n"
183 					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
184 					  "    [ CASCADE | RESTRICT ]\n"
185 					  "\n"
186 					  "REVOKE [ GRANT OPTION FOR ]\n"
187 					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
188 					  "    ON TYPES\n"
189 					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
190 					  "    [ CASCADE | RESTRICT ]\n"
191 					  "\n"
192 					  "REVOKE [ GRANT OPTION FOR ]\n"
193 					  "    { USAGE | CREATE | ALL [ PRIVILEGES ] }\n"
194 					  "    ON SCHEMAS\n"
195 					  "    FROM { [ GROUP ] %s | PUBLIC } [, ...]\n"
196 					  "    [ CASCADE | RESTRICT ]",
197 					  _("target_role"),
198 					  _("schema_name"),
199 					  _("abbreviated_grant_or_revoke"),
200 					  _("where abbreviated_grant_or_revoke is one of:"),
201 					  _("role_name"),
202 					  _("role_name"),
203 					  _("role_name"),
204 					  _("role_name"),
205 					  _("role_name"),
206 					  _("role_name"),
207 					  _("role_name"),
208 					  _("role_name"),
209 					  _("role_name"),
210 					  _("role_name"));
211 }
212 
213 static void
sql_help_ALTER_DOMAIN(PQExpBuffer buf)214 sql_help_ALTER_DOMAIN(PQExpBuffer buf)
215 {
216 	appendPQExpBuffer(buf,
217 					  "ALTER DOMAIN %s\n"
218 					  "    { SET DEFAULT %s | DROP DEFAULT }\n"
219 					  "ALTER DOMAIN %s\n"
220 					  "    { SET | DROP } NOT NULL\n"
221 					  "ALTER DOMAIN %s\n"
222 					  "    ADD %s [ NOT VALID ]\n"
223 					  "ALTER DOMAIN %s\n"
224 					  "    DROP CONSTRAINT [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
225 					  "ALTER DOMAIN %s\n"
226 					  "     RENAME CONSTRAINT %s TO %s\n"
227 					  "ALTER DOMAIN %s\n"
228 					  "    VALIDATE CONSTRAINT %s\n"
229 					  "ALTER DOMAIN %s\n"
230 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
231 					  "ALTER DOMAIN %s\n"
232 					  "    RENAME TO %s\n"
233 					  "ALTER DOMAIN %s\n"
234 					  "    SET SCHEMA %s",
235 					  _("name"),
236 					  _("expression"),
237 					  _("name"),
238 					  _("name"),
239 					  _("domain_constraint"),
240 					  _("name"),
241 					  _("constraint_name"),
242 					  _("name"),
243 					  _("constraint_name"),
244 					  _("new_constraint_name"),
245 					  _("name"),
246 					  _("constraint_name"),
247 					  _("name"),
248 					  _("new_owner"),
249 					  _("name"),
250 					  _("new_name"),
251 					  _("name"),
252 					  _("new_schema"));
253 }
254 
255 static void
sql_help_ALTER_EVENT_TRIGGER(PQExpBuffer buf)256 sql_help_ALTER_EVENT_TRIGGER(PQExpBuffer buf)
257 {
258 	appendPQExpBuffer(buf,
259 					  "ALTER EVENT TRIGGER %s DISABLE\n"
260 					  "ALTER EVENT TRIGGER %s ENABLE [ REPLICA | ALWAYS ]\n"
261 					  "ALTER EVENT TRIGGER %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
262 					  "ALTER EVENT TRIGGER %s RENAME TO %s",
263 					  _("name"),
264 					  _("name"),
265 					  _("name"),
266 					  _("new_owner"),
267 					  _("name"),
268 					  _("new_name"));
269 }
270 
271 static void
sql_help_ALTER_EXTENSION(PQExpBuffer buf)272 sql_help_ALTER_EXTENSION(PQExpBuffer buf)
273 {
274 	appendPQExpBuffer(buf,
275 					  "ALTER EXTENSION %s UPDATE [ TO %s ]\n"
276 					  "ALTER EXTENSION %s SET SCHEMA %s\n"
277 					  "ALTER EXTENSION %s ADD %s\n"
278 					  "ALTER EXTENSION %s DROP %s\n"
279 					  "\n"
280 					  "%s\n"
281 					  "\n"
282 					  "  ACCESS METHOD %s |\n"
283 					  "  AGGREGATE %s ( %s ) |\n"
284 					  "  CAST (%s AS %s) |\n"
285 					  "  COLLATION %s |\n"
286 					  "  CONVERSION %s |\n"
287 					  "  DOMAIN %s |\n"
288 					  "  EVENT TRIGGER %s |\n"
289 					  "  FOREIGN DATA WRAPPER %s |\n"
290 					  "  FOREIGN TABLE %s |\n"
291 					  "  FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
292 					  "  MATERIALIZED VIEW %s |\n"
293 					  "  OPERATOR %s (%s, %s) |\n"
294 					  "  OPERATOR CLASS %s USING %s |\n"
295 					  "  OPERATOR FAMILY %s USING %s |\n"
296 					  "  [ PROCEDURAL ] LANGUAGE %s |\n"
297 					  "  PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
298 					  "  ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
299 					  "  SCHEMA %s |\n"
300 					  "  SEQUENCE %s |\n"
301 					  "  SERVER %s |\n"
302 					  "  TABLE %s |\n"
303 					  "  TEXT SEARCH CONFIGURATION %s |\n"
304 					  "  TEXT SEARCH DICTIONARY %s |\n"
305 					  "  TEXT SEARCH PARSER %s |\n"
306 					  "  TEXT SEARCH TEMPLATE %s |\n"
307 					  "  TRANSFORM FOR %s LANGUAGE %s |\n"
308 					  "  TYPE %s |\n"
309 					  "  VIEW %s\n"
310 					  "\n"
311 					  "%s\n"
312 					  "\n"
313 					  "* |\n"
314 					  "[ %s ] [ %s ] %s [ , ... ] |\n"
315 					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
316 					  _("name"),
317 					  _("new_version"),
318 					  _("name"),
319 					  _("new_schema"),
320 					  _("name"),
321 					  _("member_object"),
322 					  _("name"),
323 					  _("member_object"),
324 					  _("where member_object is:"),
325 					  _("object_name"),
326 					  _("aggregate_name"),
327 					  _("aggregate_signature"),
328 					  _("source_type"),
329 					  _("target_type"),
330 					  _("object_name"),
331 					  _("object_name"),
332 					  _("object_name"),
333 					  _("object_name"),
334 					  _("object_name"),
335 					  _("object_name"),
336 					  _("function_name"),
337 					  _("argmode"),
338 					  _("argname"),
339 					  _("argtype"),
340 					  _("object_name"),
341 					  _("operator_name"),
342 					  _("left_type"),
343 					  _("right_type"),
344 					  _("object_name"),
345 					  _("index_method"),
346 					  _("object_name"),
347 					  _("index_method"),
348 					  _("object_name"),
349 					  _("procedure_name"),
350 					  _("argmode"),
351 					  _("argname"),
352 					  _("argtype"),
353 					  _("routine_name"),
354 					  _("argmode"),
355 					  _("argname"),
356 					  _("argtype"),
357 					  _("object_name"),
358 					  _("object_name"),
359 					  _("object_name"),
360 					  _("object_name"),
361 					  _("object_name"),
362 					  _("object_name"),
363 					  _("object_name"),
364 					  _("object_name"),
365 					  _("type_name"),
366 					  _("lang_name"),
367 					  _("object_name"),
368 					  _("object_name"),
369 					  _("and aggregate_signature is:"),
370 					  _("argmode"),
371 					  _("argname"),
372 					  _("argtype"),
373 					  _("argmode"),
374 					  _("argname"),
375 					  _("argtype"),
376 					  _("argmode"),
377 					  _("argname"),
378 					  _("argtype"));
379 }
380 
381 static void
sql_help_ALTER_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)382 sql_help_ALTER_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)
383 {
384 	appendPQExpBuffer(buf,
385 					  "ALTER FOREIGN DATA WRAPPER %s\n"
386 					  "    [ HANDLER %s | NO HANDLER ]\n"
387 					  "    [ VALIDATOR %s | NO VALIDATOR ]\n"
388 					  "    [ OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ]) ]\n"
389 					  "ALTER FOREIGN DATA WRAPPER %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
390 					  "ALTER FOREIGN DATA WRAPPER %s RENAME TO %s",
391 					  _("name"),
392 					  _("handler_function"),
393 					  _("validator_function"),
394 					  _("option"),
395 					  _("value"),
396 					  _("name"),
397 					  _("new_owner"),
398 					  _("name"),
399 					  _("new_name"));
400 }
401 
402 static void
sql_help_ALTER_FOREIGN_TABLE(PQExpBuffer buf)403 sql_help_ALTER_FOREIGN_TABLE(PQExpBuffer buf)
404 {
405 	appendPQExpBuffer(buf,
406 					  "ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
407 					  "    %s [, ... ]\n"
408 					  "ALTER FOREIGN TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
409 					  "    RENAME [ COLUMN ] %s TO %s\n"
410 					  "ALTER FOREIGN TABLE [ IF EXISTS ] %s\n"
411 					  "    RENAME TO %s\n"
412 					  "ALTER FOREIGN TABLE [ IF EXISTS ] %s\n"
413 					  "    SET SCHEMA %s\n"
414 					  "\n"
415 					  "%s\n"
416 					  "\n"
417 					  "    ADD [ COLUMN ] %s %s [ COLLATE %s ] [ %s [ ... ] ]\n"
418 					  "    DROP [ COLUMN ] [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
419 					  "    ALTER [ COLUMN ] %s [ SET DATA ] TYPE %s [ COLLATE %s ]\n"
420 					  "    ALTER [ COLUMN ] %s SET DEFAULT %s\n"
421 					  "    ALTER [ COLUMN ] %s DROP DEFAULT\n"
422 					  "    ALTER [ COLUMN ] %s { SET | DROP } NOT NULL\n"
423 					  "    ALTER [ COLUMN ] %s SET STATISTICS %s\n"
424 					  "    ALTER [ COLUMN ] %s SET ( %s = %s [, ... ] )\n"
425 					  "    ALTER [ COLUMN ] %s RESET ( %s [, ... ] )\n"
426 					  "    ALTER [ COLUMN ] %s SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n"
427 					  "    ALTER [ COLUMN ] %s OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ])\n"
428 					  "    ADD %s [ NOT VALID ]\n"
429 					  "    VALIDATE CONSTRAINT %s\n"
430 					  "    DROP CONSTRAINT [ IF EXISTS ]  %s [ RESTRICT | CASCADE ]\n"
431 					  "    DISABLE TRIGGER [ %s | ALL | USER ]\n"
432 					  "    ENABLE TRIGGER [ %s | ALL | USER ]\n"
433 					  "    ENABLE REPLICA TRIGGER %s\n"
434 					  "    ENABLE ALWAYS TRIGGER %s\n"
435 					  "    SET WITH OIDS\n"
436 					  "    SET WITHOUT OIDS\n"
437 					  "    INHERIT %s\n"
438 					  "    NO INHERIT %s\n"
439 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
440 					  "    OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ])",
441 					  _("name"),
442 					  _("action"),
443 					  _("name"),
444 					  _("column_name"),
445 					  _("new_column_name"),
446 					  _("name"),
447 					  _("new_name"),
448 					  _("name"),
449 					  _("new_schema"),
450 					  _("where action is one of:"),
451 					  _("column_name"),
452 					  _("data_type"),
453 					  _("collation"),
454 					  _("column_constraint"),
455 					  _("column_name"),
456 					  _("column_name"),
457 					  _("data_type"),
458 					  _("collation"),
459 					  _("column_name"),
460 					  _("expression"),
461 					  _("column_name"),
462 					  _("column_name"),
463 					  _("column_name"),
464 					  _("integer"),
465 					  _("column_name"),
466 					  _("attribute_option"),
467 					  _("value"),
468 					  _("column_name"),
469 					  _("attribute_option"),
470 					  _("column_name"),
471 					  _("column_name"),
472 					  _("option"),
473 					  _("value"),
474 					  _("table_constraint"),
475 					  _("constraint_name"),
476 					  _("constraint_name"),
477 					  _("trigger_name"),
478 					  _("trigger_name"),
479 					  _("trigger_name"),
480 					  _("trigger_name"),
481 					  _("parent_table"),
482 					  _("parent_table"),
483 					  _("new_owner"),
484 					  _("option"),
485 					  _("value"));
486 }
487 
488 static void
sql_help_ALTER_FUNCTION(PQExpBuffer buf)489 sql_help_ALTER_FUNCTION(PQExpBuffer buf)
490 {
491 	appendPQExpBuffer(buf,
492 					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
493 					  "    %s [ ... ] [ RESTRICT ]\n"
494 					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
495 					  "    RENAME TO %s\n"
496 					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
497 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
498 					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
499 					  "    SET SCHEMA %s\n"
500 					  "ALTER FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
501 					  "    DEPENDS ON EXTENSION %s\n"
502 					  "\n"
503 					  "%s\n"
504 					  "\n"
505 					  "    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT\n"
506 					  "    IMMUTABLE | STABLE | VOLATILE\n"
507 					  "    [ NOT ] LEAKPROOF\n"
508 					  "    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
509 					  "    PARALLEL { UNSAFE | RESTRICTED | SAFE }\n"
510 					  "    COST %s\n"
511 					  "    ROWS %s\n"
512 					  "    SET %s { TO | = } { %s | DEFAULT }\n"
513 					  "    SET %s FROM CURRENT\n"
514 					  "    RESET %s\n"
515 					  "    RESET ALL",
516 					  _("name"),
517 					  _("argmode"),
518 					  _("argname"),
519 					  _("argtype"),
520 					  _("action"),
521 					  _("name"),
522 					  _("argmode"),
523 					  _("argname"),
524 					  _("argtype"),
525 					  _("new_name"),
526 					  _("name"),
527 					  _("argmode"),
528 					  _("argname"),
529 					  _("argtype"),
530 					  _("new_owner"),
531 					  _("name"),
532 					  _("argmode"),
533 					  _("argname"),
534 					  _("argtype"),
535 					  _("new_schema"),
536 					  _("name"),
537 					  _("argmode"),
538 					  _("argname"),
539 					  _("argtype"),
540 					  _("extension_name"),
541 					  _("where action is one of:"),
542 					  _("execution_cost"),
543 					  _("result_rows"),
544 					  _("configuration_parameter"),
545 					  _("value"),
546 					  _("configuration_parameter"),
547 					  _("configuration_parameter"));
548 }
549 
550 static void
sql_help_ALTER_GROUP(PQExpBuffer buf)551 sql_help_ALTER_GROUP(PQExpBuffer buf)
552 {
553 	appendPQExpBuffer(buf,
554 					  "ALTER GROUP %s ADD USER %s [, ... ]\n"
555 					  "ALTER GROUP %s DROP USER %s [, ... ]\n"
556 					  "\n"
557 					  "%s\n"
558 					  "\n"
559 					  "    %s\n"
560 					  "  | CURRENT_USER\n"
561 					  "  | SESSION_USER\n"
562 					  "\n"
563 					  "ALTER GROUP %s RENAME TO %s",
564 					  _("role_specification"),
565 					  _("user_name"),
566 					  _("role_specification"),
567 					  _("user_name"),
568 					  _("where role_specification can be:"),
569 					  _("role_name"),
570 					  _("group_name"),
571 					  _("new_name"));
572 }
573 
574 static void
sql_help_ALTER_INDEX(PQExpBuffer buf)575 sql_help_ALTER_INDEX(PQExpBuffer buf)
576 {
577 	appendPQExpBuffer(buf,
578 					  "ALTER INDEX [ IF EXISTS ] %s RENAME TO %s\n"
579 					  "ALTER INDEX [ IF EXISTS ] %s SET TABLESPACE %s\n"
580 					  "ALTER INDEX %s ATTACH PARTITION %s\n"
581 					  "ALTER INDEX %s DEPENDS ON EXTENSION %s\n"
582 					  "ALTER INDEX [ IF EXISTS ] %s SET ( %s [= %s] [, ... ] )\n"
583 					  "ALTER INDEX [ IF EXISTS ] %s RESET ( %s [, ... ] )\n"
584 					  "ALTER INDEX [ IF EXISTS ] %s ALTER [ COLUMN ] %s\n"
585 					  "    SET STATISTICS %s\n"
586 					  "ALTER INDEX ALL IN TABLESPACE %s [ OWNED BY %s [, ... ] ]\n"
587 					  "    SET TABLESPACE %s [ NOWAIT ]",
588 					  _("name"),
589 					  _("new_name"),
590 					  _("name"),
591 					  _("tablespace_name"),
592 					  _("name"),
593 					  _("index_name"),
594 					  _("name"),
595 					  _("extension_name"),
596 					  _("name"),
597 					  _("storage_parameter"),
598 					  _("value"),
599 					  _("name"),
600 					  _("storage_parameter"),
601 					  _("name"),
602 					  _("column_number"),
603 					  _("integer"),
604 					  _("name"),
605 					  _("role_name"),
606 					  _("new_tablespace"));
607 }
608 
609 static void
sql_help_ALTER_LANGUAGE(PQExpBuffer buf)610 sql_help_ALTER_LANGUAGE(PQExpBuffer buf)
611 {
612 	appendPQExpBuffer(buf,
613 					  "ALTER [ PROCEDURAL ] LANGUAGE %s RENAME TO %s\n"
614 					  "ALTER [ PROCEDURAL ] LANGUAGE %s OWNER TO { %s | CURRENT_USER | SESSION_USER }",
615 					  _("name"),
616 					  _("new_name"),
617 					  _("name"),
618 					  _("new_owner"));
619 }
620 
621 static void
sql_help_ALTER_LARGE_OBJECT(PQExpBuffer buf)622 sql_help_ALTER_LARGE_OBJECT(PQExpBuffer buf)
623 {
624 	appendPQExpBuffer(buf,
625 					  "ALTER LARGE OBJECT %s OWNER TO { %s | CURRENT_USER | SESSION_USER }",
626 					  _("large_object_oid"),
627 					  _("new_owner"));
628 }
629 
630 static void
sql_help_ALTER_MATERIALIZED_VIEW(PQExpBuffer buf)631 sql_help_ALTER_MATERIALIZED_VIEW(PQExpBuffer buf)
632 {
633 	appendPQExpBuffer(buf,
634 					  "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
635 					  "    %s [, ... ]\n"
636 					  "ALTER MATERIALIZED VIEW %s\n"
637 					  "    DEPENDS ON EXTENSION %s\n"
638 					  "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
639 					  "    RENAME [ COLUMN ] %s TO %s\n"
640 					  "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
641 					  "    RENAME TO %s\n"
642 					  "ALTER MATERIALIZED VIEW [ IF EXISTS ] %s\n"
643 					  "    SET SCHEMA %s\n"
644 					  "ALTER MATERIALIZED VIEW ALL IN TABLESPACE %s [ OWNED BY %s [, ... ] ]\n"
645 					  "    SET TABLESPACE %s [ NOWAIT ]\n"
646 					  "\n"
647 					  "%s\n"
648 					  "\n"
649 					  "    ALTER [ COLUMN ] %s SET STATISTICS %s\n"
650 					  "    ALTER [ COLUMN ] %s SET ( %s = %s [, ... ] )\n"
651 					  "    ALTER [ COLUMN ] %s RESET ( %s [, ... ] )\n"
652 					  "    ALTER [ COLUMN ] %s SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n"
653 					  "    CLUSTER ON %s\n"
654 					  "    SET WITHOUT CLUSTER\n"
655 					  "    SET ( %s [= %s] [, ... ] )\n"
656 					  "    RESET ( %s [, ... ] )\n"
657 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }",
658 					  _("name"),
659 					  _("action"),
660 					  _("name"),
661 					  _("extension_name"),
662 					  _("name"),
663 					  _("column_name"),
664 					  _("new_column_name"),
665 					  _("name"),
666 					  _("new_name"),
667 					  _("name"),
668 					  _("new_schema"),
669 					  _("name"),
670 					  _("role_name"),
671 					  _("new_tablespace"),
672 					  _("where action is one of:"),
673 					  _("column_name"),
674 					  _("integer"),
675 					  _("column_name"),
676 					  _("attribute_option"),
677 					  _("value"),
678 					  _("column_name"),
679 					  _("attribute_option"),
680 					  _("column_name"),
681 					  _("index_name"),
682 					  _("storage_parameter"),
683 					  _("value"),
684 					  _("storage_parameter"),
685 					  _("new_owner"));
686 }
687 
688 static void
sql_help_ALTER_OPERATOR(PQExpBuffer buf)689 sql_help_ALTER_OPERATOR(PQExpBuffer buf)
690 {
691 	appendPQExpBuffer(buf,
692 					  "ALTER OPERATOR %s ( { %s | NONE } , { %s | NONE } )\n"
693 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
694 					  "\n"
695 					  "ALTER OPERATOR %s ( { %s | NONE } , { %s | NONE } )\n"
696 					  "    SET SCHEMA %s\n"
697 					  "\n"
698 					  "ALTER OPERATOR %s ( { %s | NONE } , { %s | NONE } )\n"
699 					  "    SET ( {  RESTRICT = { %s | NONE }\n"
700 					  "           | JOIN = { %s | NONE }\n"
701 					  "         } [, ... ] )",
702 					  _("name"),
703 					  _("left_type"),
704 					  _("right_type"),
705 					  _("new_owner"),
706 					  _("name"),
707 					  _("left_type"),
708 					  _("right_type"),
709 					  _("new_schema"),
710 					  _("name"),
711 					  _("left_type"),
712 					  _("right_type"),
713 					  _("res_proc"),
714 					  _("join_proc"));
715 }
716 
717 static void
sql_help_ALTER_OPERATOR_CLASS(PQExpBuffer buf)718 sql_help_ALTER_OPERATOR_CLASS(PQExpBuffer buf)
719 {
720 	appendPQExpBuffer(buf,
721 					  "ALTER OPERATOR CLASS %s USING %s\n"
722 					  "    RENAME TO %s\n"
723 					  "\n"
724 					  "ALTER OPERATOR CLASS %s USING %s\n"
725 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
726 					  "\n"
727 					  "ALTER OPERATOR CLASS %s USING %s\n"
728 					  "    SET SCHEMA %s",
729 					  _("name"),
730 					  _("index_method"),
731 					  _("new_name"),
732 					  _("name"),
733 					  _("index_method"),
734 					  _("new_owner"),
735 					  _("name"),
736 					  _("index_method"),
737 					  _("new_schema"));
738 }
739 
740 static void
sql_help_ALTER_OPERATOR_FAMILY(PQExpBuffer buf)741 sql_help_ALTER_OPERATOR_FAMILY(PQExpBuffer buf)
742 {
743 	appendPQExpBuffer(buf,
744 					  "ALTER OPERATOR FAMILY %s USING %s ADD\n"
745 					  "  {  OPERATOR %s %s ( %s, %s )\n"
746 					  "              [ FOR SEARCH | FOR ORDER BY %s ]\n"
747 					  "   | FUNCTION %s [ ( %s [ , %s ] ) ]\n"
748 					  "              %s [ ( %s [, ...] ) ]\n"
749 					  "  } [, ... ]\n"
750 					  "\n"
751 					  "ALTER OPERATOR FAMILY %s USING %s DROP\n"
752 					  "  {  OPERATOR %s ( %s [ , %s ] )\n"
753 					  "   | FUNCTION %s ( %s [ , %s ] )\n"
754 					  "  } [, ... ]\n"
755 					  "\n"
756 					  "ALTER OPERATOR FAMILY %s USING %s\n"
757 					  "    RENAME TO %s\n"
758 					  "\n"
759 					  "ALTER OPERATOR FAMILY %s USING %s\n"
760 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
761 					  "\n"
762 					  "ALTER OPERATOR FAMILY %s USING %s\n"
763 					  "    SET SCHEMA %s",
764 					  _("name"),
765 					  _("index_method"),
766 					  _("strategy_number"),
767 					  _("operator_name"),
768 					  _("op_type"),
769 					  _("op_type"),
770 					  _("sort_family_name"),
771 					  _("support_number"),
772 					  _("op_type"),
773 					  _("op_type"),
774 					  _("function_name"),
775 					  _("argument_type"),
776 					  _("name"),
777 					  _("index_method"),
778 					  _("strategy_number"),
779 					  _("op_type"),
780 					  _("op_type"),
781 					  _("support_number"),
782 					  _("op_type"),
783 					  _("op_type"),
784 					  _("name"),
785 					  _("index_method"),
786 					  _("new_name"),
787 					  _("name"),
788 					  _("index_method"),
789 					  _("new_owner"),
790 					  _("name"),
791 					  _("index_method"),
792 					  _("new_schema"));
793 }
794 
795 static void
sql_help_ALTER_POLICY(PQExpBuffer buf)796 sql_help_ALTER_POLICY(PQExpBuffer buf)
797 {
798 	appendPQExpBuffer(buf,
799 					  "ALTER POLICY %s ON %s RENAME TO %s\n"
800 					  "\n"
801 					  "ALTER POLICY %s ON %s\n"
802 					  "    [ TO { %s | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]\n"
803 					  "    [ USING ( %s ) ]\n"
804 					  "    [ WITH CHECK ( %s ) ]",
805 					  _("name"),
806 					  _("table_name"),
807 					  _("new_name"),
808 					  _("name"),
809 					  _("table_name"),
810 					  _("role_name"),
811 					  _("using_expression"),
812 					  _("check_expression"));
813 }
814 
815 static void
sql_help_ALTER_PROCEDURE(PQExpBuffer buf)816 sql_help_ALTER_PROCEDURE(PQExpBuffer buf)
817 {
818 	appendPQExpBuffer(buf,
819 					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
820 					  "    %s [ ... ] [ RESTRICT ]\n"
821 					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
822 					  "    RENAME TO %s\n"
823 					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
824 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
825 					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
826 					  "    SET SCHEMA %s\n"
827 					  "ALTER PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
828 					  "    DEPENDS ON EXTENSION %s\n"
829 					  "\n"
830 					  "%s\n"
831 					  "\n"
832 					  "    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
833 					  "    SET %s { TO | = } { %s | DEFAULT }\n"
834 					  "    SET %s FROM CURRENT\n"
835 					  "    RESET %s\n"
836 					  "    RESET ALL",
837 					  _("name"),
838 					  _("argmode"),
839 					  _("argname"),
840 					  _("argtype"),
841 					  _("action"),
842 					  _("name"),
843 					  _("argmode"),
844 					  _("argname"),
845 					  _("argtype"),
846 					  _("new_name"),
847 					  _("name"),
848 					  _("argmode"),
849 					  _("argname"),
850 					  _("argtype"),
851 					  _("new_owner"),
852 					  _("name"),
853 					  _("argmode"),
854 					  _("argname"),
855 					  _("argtype"),
856 					  _("new_schema"),
857 					  _("name"),
858 					  _("argmode"),
859 					  _("argname"),
860 					  _("argtype"),
861 					  _("extension_name"),
862 					  _("where action is one of:"),
863 					  _("configuration_parameter"),
864 					  _("value"),
865 					  _("configuration_parameter"),
866 					  _("configuration_parameter"));
867 }
868 
869 static void
sql_help_ALTER_PUBLICATION(PQExpBuffer buf)870 sql_help_ALTER_PUBLICATION(PQExpBuffer buf)
871 {
872 	appendPQExpBuffer(buf,
873 					  "ALTER PUBLICATION %s ADD TABLE [ ONLY ] %s [ * ] [, ...]\n"
874 					  "ALTER PUBLICATION %s SET TABLE [ ONLY ] %s [ * ] [, ...]\n"
875 					  "ALTER PUBLICATION %s DROP TABLE [ ONLY ] %s [ * ] [, ...]\n"
876 					  "ALTER PUBLICATION %s SET ( %s [= %s] [, ... ] )\n"
877 					  "ALTER PUBLICATION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
878 					  "ALTER PUBLICATION %s RENAME TO %s",
879 					  _("name"),
880 					  _("table_name"),
881 					  _("name"),
882 					  _("table_name"),
883 					  _("name"),
884 					  _("table_name"),
885 					  _("name"),
886 					  _("publication_parameter"),
887 					  _("value"),
888 					  _("name"),
889 					  _("new_owner"),
890 					  _("name"),
891 					  _("new_name"));
892 }
893 
894 static void
sql_help_ALTER_ROLE(PQExpBuffer buf)895 sql_help_ALTER_ROLE(PQExpBuffer buf)
896 {
897 	appendPQExpBuffer(buf,
898 					  "ALTER ROLE %s [ WITH ] %s [ ... ]\n"
899 					  "\n"
900 					  "%s\n"
901 					  "\n"
902 					  "      SUPERUSER | NOSUPERUSER\n"
903 					  "    | CREATEDB | NOCREATEDB\n"
904 					  "    | CREATEROLE | NOCREATEROLE\n"
905 					  "    | INHERIT | NOINHERIT\n"
906 					  "    | LOGIN | NOLOGIN\n"
907 					  "    | REPLICATION | NOREPLICATION\n"
908 					  "    | BYPASSRLS | NOBYPASSRLS\n"
909 					  "    | CONNECTION LIMIT %s\n"
910 					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
911 					  "    | VALID UNTIL '%s'\n"
912 					  "\n"
913 					  "ALTER ROLE %s RENAME TO %s\n"
914 					  "\n"
915 					  "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] SET %s { TO | = } { %s | DEFAULT }\n"
916 					  "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] SET %s FROM CURRENT\n"
917 					  "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] RESET %s\n"
918 					  "ALTER ROLE { %s | ALL } [ IN DATABASE %s ] RESET ALL\n"
919 					  "\n"
920 					  "%s\n"
921 					  "\n"
922 					  "    %s\n"
923 					  "  | CURRENT_USER\n"
924 					  "  | SESSION_USER",
925 					  _("role_specification"),
926 					  _("option"),
927 					  _("where option can be:"),
928 					  _("connlimit"),
929 					  _("password"),
930 					  _("timestamp"),
931 					  _("name"),
932 					  _("new_name"),
933 					  _("role_specification"),
934 					  _("database_name"),
935 					  _("configuration_parameter"),
936 					  _("value"),
937 					  _("role_specification"),
938 					  _("database_name"),
939 					  _("configuration_parameter"),
940 					  _("role_specification"),
941 					  _("database_name"),
942 					  _("configuration_parameter"),
943 					  _("role_specification"),
944 					  _("database_name"),
945 					  _("where role_specification can be:"),
946 					  _("role_name"));
947 }
948 
949 static void
sql_help_ALTER_ROUTINE(PQExpBuffer buf)950 sql_help_ALTER_ROUTINE(PQExpBuffer buf)
951 {
952 	appendPQExpBuffer(buf,
953 					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
954 					  "    %s [ ... ] [ RESTRICT ]\n"
955 					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
956 					  "    RENAME TO %s\n"
957 					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
958 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
959 					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
960 					  "    SET SCHEMA %s\n"
961 					  "ALTER ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ]\n"
962 					  "    DEPENDS ON EXTENSION %s\n"
963 					  "\n"
964 					  "%s\n"
965 					  "\n"
966 					  "    IMMUTABLE | STABLE | VOLATILE\n"
967 					  "    [ NOT ] LEAKPROOF\n"
968 					  "    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
969 					  "    PARALLEL { UNSAFE | RESTRICTED | SAFE }\n"
970 					  "    COST %s\n"
971 					  "    ROWS %s\n"
972 					  "    SET %s { TO | = } { %s | DEFAULT }\n"
973 					  "    SET %s FROM CURRENT\n"
974 					  "    RESET %s\n"
975 					  "    RESET ALL",
976 					  _("name"),
977 					  _("argmode"),
978 					  _("argname"),
979 					  _("argtype"),
980 					  _("action"),
981 					  _("name"),
982 					  _("argmode"),
983 					  _("argname"),
984 					  _("argtype"),
985 					  _("new_name"),
986 					  _("name"),
987 					  _("argmode"),
988 					  _("argname"),
989 					  _("argtype"),
990 					  _("new_owner"),
991 					  _("name"),
992 					  _("argmode"),
993 					  _("argname"),
994 					  _("argtype"),
995 					  _("new_schema"),
996 					  _("name"),
997 					  _("argmode"),
998 					  _("argname"),
999 					  _("argtype"),
1000 					  _("extension_name"),
1001 					  _("where action is one of:"),
1002 					  _("execution_cost"),
1003 					  _("result_rows"),
1004 					  _("configuration_parameter"),
1005 					  _("value"),
1006 					  _("configuration_parameter"),
1007 					  _("configuration_parameter"));
1008 }
1009 
1010 static void
sql_help_ALTER_RULE(PQExpBuffer buf)1011 sql_help_ALTER_RULE(PQExpBuffer buf)
1012 {
1013 	appendPQExpBuffer(buf,
1014 					  "ALTER RULE %s ON %s RENAME TO %s",
1015 					  _("name"),
1016 					  _("table_name"),
1017 					  _("new_name"));
1018 }
1019 
1020 static void
sql_help_ALTER_SCHEMA(PQExpBuffer buf)1021 sql_help_ALTER_SCHEMA(PQExpBuffer buf)
1022 {
1023 	appendPQExpBuffer(buf,
1024 					  "ALTER SCHEMA %s RENAME TO %s\n"
1025 					  "ALTER SCHEMA %s OWNER TO { %s | CURRENT_USER | SESSION_USER }",
1026 					  _("name"),
1027 					  _("new_name"),
1028 					  _("name"),
1029 					  _("new_owner"));
1030 }
1031 
1032 static void
sql_help_ALTER_SEQUENCE(PQExpBuffer buf)1033 sql_help_ALTER_SEQUENCE(PQExpBuffer buf)
1034 {
1035 	appendPQExpBuffer(buf,
1036 					  "ALTER SEQUENCE [ IF EXISTS ] %s\n"
1037 					  "    [ AS %s ]\n"
1038 					  "    [ INCREMENT [ BY ] %s ]\n"
1039 					  "    [ MINVALUE %s | NO MINVALUE ] [ MAXVALUE %s | NO MAXVALUE ]\n"
1040 					  "    [ START [ WITH ] %s ]\n"
1041 					  "    [ RESTART [ [ WITH ] %s ] ]\n"
1042 					  "    [ CACHE %s ] [ [ NO ] CYCLE ]\n"
1043 					  "    [ OWNED BY { %s.%s | NONE } ]\n"
1044 					  "ALTER SEQUENCE [ IF EXISTS ] %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1045 					  "ALTER SEQUENCE [ IF EXISTS ] %s RENAME TO %s\n"
1046 					  "ALTER SEQUENCE [ IF EXISTS ] %s SET SCHEMA %s",
1047 					  _("name"),
1048 					  _("data_type"),
1049 					  _("increment"),
1050 					  _("minvalue"),
1051 					  _("maxvalue"),
1052 					  _("start"),
1053 					  _("restart"),
1054 					  _("cache"),
1055 					  _("table_name"),
1056 					  _("column_name"),
1057 					  _("name"),
1058 					  _("new_owner"),
1059 					  _("name"),
1060 					  _("new_name"),
1061 					  _("name"),
1062 					  _("new_schema"));
1063 }
1064 
1065 static void
sql_help_ALTER_SERVER(PQExpBuffer buf)1066 sql_help_ALTER_SERVER(PQExpBuffer buf)
1067 {
1068 	appendPQExpBuffer(buf,
1069 					  "ALTER SERVER %s [ VERSION '%s' ]\n"
1070 					  "    [ OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ] ) ]\n"
1071 					  "ALTER SERVER %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1072 					  "ALTER SERVER %s RENAME TO %s",
1073 					  _("name"),
1074 					  _("new_version"),
1075 					  _("option"),
1076 					  _("value"),
1077 					  _("name"),
1078 					  _("new_owner"),
1079 					  _("name"),
1080 					  _("new_name"));
1081 }
1082 
1083 static void
sql_help_ALTER_STATISTICS(PQExpBuffer buf)1084 sql_help_ALTER_STATISTICS(PQExpBuffer buf)
1085 {
1086 	appendPQExpBuffer(buf,
1087 					  "ALTER STATISTICS %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1088 					  "ALTER STATISTICS %s RENAME TO %s\n"
1089 					  "ALTER STATISTICS %s SET SCHEMA %s",
1090 					  _("name"),
1091 					  _("new_owner"),
1092 					  _("name"),
1093 					  _("new_name"),
1094 					  _("name"),
1095 					  _("new_schema"));
1096 }
1097 
1098 static void
sql_help_ALTER_SUBSCRIPTION(PQExpBuffer buf)1099 sql_help_ALTER_SUBSCRIPTION(PQExpBuffer buf)
1100 {
1101 	appendPQExpBuffer(buf,
1102 					  "ALTER SUBSCRIPTION %s CONNECTION '%s'\n"
1103 					  "ALTER SUBSCRIPTION %s SET PUBLICATION %s [, ...] [ WITH ( %s [= %s] [, ... ] ) ]\n"
1104 					  "ALTER SUBSCRIPTION %s REFRESH PUBLICATION [ WITH ( %s [= %s] [, ... ] ) ]\n"
1105 					  "ALTER SUBSCRIPTION %s ENABLE\n"
1106 					  "ALTER SUBSCRIPTION %s DISABLE\n"
1107 					  "ALTER SUBSCRIPTION %s SET ( %s [= %s] [, ... ] )\n"
1108 					  "ALTER SUBSCRIPTION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1109 					  "ALTER SUBSCRIPTION %s RENAME TO %s",
1110 					  _("name"),
1111 					  _("conninfo"),
1112 					  _("name"),
1113 					  _("publication_name"),
1114 					  _("set_publication_option"),
1115 					  _("value"),
1116 					  _("name"),
1117 					  _("refresh_option"),
1118 					  _("value"),
1119 					  _("name"),
1120 					  _("name"),
1121 					  _("name"),
1122 					  _("subscription_parameter"),
1123 					  _("value"),
1124 					  _("name"),
1125 					  _("new_owner"),
1126 					  _("name"),
1127 					  _("new_name"));
1128 }
1129 
1130 static void
sql_help_ALTER_SYSTEM(PQExpBuffer buf)1131 sql_help_ALTER_SYSTEM(PQExpBuffer buf)
1132 {
1133 	appendPQExpBuffer(buf,
1134 					  "ALTER SYSTEM SET %s { TO | = } { %s | '%s' | DEFAULT }\n"
1135 					  "\n"
1136 					  "ALTER SYSTEM RESET %s\n"
1137 					  "ALTER SYSTEM RESET ALL",
1138 					  _("configuration_parameter"),
1139 					  _("value"),
1140 					  _("value"),
1141 					  _("configuration_parameter"));
1142 }
1143 
1144 static void
sql_help_ALTER_TABLE(PQExpBuffer buf)1145 sql_help_ALTER_TABLE(PQExpBuffer buf)
1146 {
1147 	appendPQExpBuffer(buf,
1148 					  "ALTER TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
1149 					  "    %s [, ... ]\n"
1150 					  "ALTER TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
1151 					  "    RENAME [ COLUMN ] %s TO %s\n"
1152 					  "ALTER TABLE [ IF EXISTS ] [ ONLY ] %s [ * ]\n"
1153 					  "    RENAME CONSTRAINT %s TO %s\n"
1154 					  "ALTER TABLE [ IF EXISTS ] %s\n"
1155 					  "    RENAME TO %s\n"
1156 					  "ALTER TABLE [ IF EXISTS ] %s\n"
1157 					  "    SET SCHEMA %s\n"
1158 					  "ALTER TABLE ALL IN TABLESPACE %s [ OWNED BY %s [, ... ] ]\n"
1159 					  "    SET TABLESPACE %s [ NOWAIT ]\n"
1160 					  "ALTER TABLE [ IF EXISTS ] %s\n"
1161 					  "    ATTACH PARTITION %s { FOR VALUES %s | DEFAULT }\n"
1162 					  "ALTER TABLE [ IF EXISTS ] %s\n"
1163 					  "    DETACH PARTITION %s\n"
1164 					  "\n"
1165 					  "%s\n"
1166 					  "\n"
1167 					  "    ADD [ COLUMN ] [ IF NOT EXISTS ] %s %s [ COLLATE %s ] [ %s [ ... ] ]\n"
1168 					  "    DROP [ COLUMN ] [ IF EXISTS ] %s [ RESTRICT | CASCADE ]\n"
1169 					  "    ALTER [ COLUMN ] %s [ SET DATA ] TYPE %s [ COLLATE %s ] [ USING %s ]\n"
1170 					  "    ALTER [ COLUMN ] %s SET DEFAULT %s\n"
1171 					  "    ALTER [ COLUMN ] %s DROP DEFAULT\n"
1172 					  "    ALTER [ COLUMN ] %s { SET | DROP } NOT NULL\n"
1173 					  "    ALTER [ COLUMN ] %s ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( %s ) ]\n"
1174 					  "    ALTER [ COLUMN ] %s { SET GENERATED { ALWAYS | BY DEFAULT } | SET %s | RESTART [ [ WITH ] %s ] } [...]\n"
1175 					  "    ALTER [ COLUMN ] %s DROP IDENTITY [ IF EXISTS ]\n"
1176 					  "    ALTER [ COLUMN ] %s SET STATISTICS %s\n"
1177 					  "    ALTER [ COLUMN ] %s SET ( %s = %s [, ... ] )\n"
1178 					  "    ALTER [ COLUMN ] %s RESET ( %s [, ... ] )\n"
1179 					  "    ALTER [ COLUMN ] %s SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }\n"
1180 					  "    ADD %s [ NOT VALID ]\n"
1181 					  "    ADD %s\n"
1182 					  "    ALTER CONSTRAINT %s [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
1183 					  "    VALIDATE CONSTRAINT %s\n"
1184 					  "    DROP CONSTRAINT [ IF EXISTS ]  %s [ RESTRICT | CASCADE ]\n"
1185 					  "    DISABLE TRIGGER [ %s | ALL | USER ]\n"
1186 					  "    ENABLE TRIGGER [ %s | ALL | USER ]\n"
1187 					  "    ENABLE REPLICA TRIGGER %s\n"
1188 					  "    ENABLE ALWAYS TRIGGER %s\n"
1189 					  "    DISABLE RULE %s\n"
1190 					  "    ENABLE RULE %s\n"
1191 					  "    ENABLE REPLICA RULE %s\n"
1192 					  "    ENABLE ALWAYS RULE %s\n"
1193 					  "    DISABLE ROW LEVEL SECURITY\n"
1194 					  "    ENABLE ROW LEVEL SECURITY\n"
1195 					  "    FORCE ROW LEVEL SECURITY\n"
1196 					  "    NO FORCE ROW LEVEL SECURITY\n"
1197 					  "    CLUSTER ON %s\n"
1198 					  "    SET WITHOUT CLUSTER\n"
1199 					  "    SET WITH OIDS\n"
1200 					  "    SET WITHOUT OIDS\n"
1201 					  "    SET TABLESPACE %s\n"
1202 					  "    SET { LOGGED | UNLOGGED }\n"
1203 					  "    SET ( %s [= %s] [, ... ] )\n"
1204 					  "    RESET ( %s [, ... ] )\n"
1205 					  "    INHERIT %s\n"
1206 					  "    NO INHERIT %s\n"
1207 					  "    OF %s\n"
1208 					  "    NOT OF\n"
1209 					  "    OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1210 					  "    REPLICA IDENTITY { DEFAULT | USING INDEX %s | FULL | NOTHING }\n"
1211 					  "\n"
1212 					  "%s\n"
1213 					  "\n"
1214 					  "IN ( { %s | %s | TRUE | FALSE | NULL } [, ...] ) |\n"
1215 					  "FROM ( { %s | %s | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] )\n"
1216 					  "  TO ( { %s | %s | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] ) |\n"
1217 					  "WITH ( MODULUS %s, REMAINDER %s )\n"
1218 					  "\n"
1219 					  "%s\n"
1220 					  "\n"
1221 					  "[ CONSTRAINT %s ]\n"
1222 					  "{ NOT NULL |\n"
1223 					  "  NULL |\n"
1224 					  "  CHECK ( %s ) [ NO INHERIT ] |\n"
1225 					  "  DEFAULT %s |\n"
1226 					  "  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( %s ) ] |\n"
1227 					  "  UNIQUE %s |\n"
1228 					  "  PRIMARY KEY %s |\n"
1229 					  "  REFERENCES %s [ ( %s ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n"
1230 					  "    [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
1231 					  "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
1232 					  "\n"
1233 					  "%s\n"
1234 					  "\n"
1235 					  "[ CONSTRAINT %s ]\n"
1236 					  "{ CHECK ( %s ) [ NO INHERIT ] |\n"
1237 					  "  UNIQUE ( %s [, ... ] ) %s |\n"
1238 					  "  PRIMARY KEY ( %s [, ... ] ) %s |\n"
1239 					  "  EXCLUDE [ USING %s ] ( %s WITH %s [, ... ] ) %s [ WHERE ( %s ) ] |\n"
1240 					  "  FOREIGN KEY ( %s [, ... ] ) REFERENCES %s [ ( %s [, ... ] ) ]\n"
1241 					  "    [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
1242 					  "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
1243 					  "\n"
1244 					  "%s\n"
1245 					  "\n"
1246 					  "    [ CONSTRAINT %s ]\n"
1247 					  "    { UNIQUE | PRIMARY KEY } USING INDEX %s\n"
1248 					  "    [ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
1249 					  "\n"
1250 					  "%s\n"
1251 					  "\n"
1252 					  "[ INCLUDE ( %s [, ... ] ) ]\n"
1253 					  "[ WITH ( %s [= %s] [, ... ] ) ]\n"
1254 					  "[ USING INDEX TABLESPACE %s ]\n"
1255 					  "\n"
1256 					  "%s\n"
1257 					  "\n"
1258 					  "{ %s | ( %s ) } [ %s ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]",
1259 					  _("name"),
1260 					  _("action"),
1261 					  _("name"),
1262 					  _("column_name"),
1263 					  _("new_column_name"),
1264 					  _("name"),
1265 					  _("constraint_name"),
1266 					  _("new_constraint_name"),
1267 					  _("name"),
1268 					  _("new_name"),
1269 					  _("name"),
1270 					  _("new_schema"),
1271 					  _("name"),
1272 					  _("role_name"),
1273 					  _("new_tablespace"),
1274 					  _("name"),
1275 					  _("partition_name"),
1276 					  _("partition_bound_spec"),
1277 					  _("name"),
1278 					  _("partition_name"),
1279 					  _("where action is one of:"),
1280 					  _("column_name"),
1281 					  _("data_type"),
1282 					  _("collation"),
1283 					  _("column_constraint"),
1284 					  _("column_name"),
1285 					  _("column_name"),
1286 					  _("data_type"),
1287 					  _("collation"),
1288 					  _("expression"),
1289 					  _("column_name"),
1290 					  _("expression"),
1291 					  _("column_name"),
1292 					  _("column_name"),
1293 					  _("column_name"),
1294 					  _("sequence_options"),
1295 					  _("column_name"),
1296 					  _("sequence_option"),
1297 					  _("restart"),
1298 					  _("column_name"),
1299 					  _("column_name"),
1300 					  _("integer"),
1301 					  _("column_name"),
1302 					  _("attribute_option"),
1303 					  _("value"),
1304 					  _("column_name"),
1305 					  _("attribute_option"),
1306 					  _("column_name"),
1307 					  _("table_constraint"),
1308 					  _("table_constraint_using_index"),
1309 					  _("constraint_name"),
1310 					  _("constraint_name"),
1311 					  _("constraint_name"),
1312 					  _("trigger_name"),
1313 					  _("trigger_name"),
1314 					  _("trigger_name"),
1315 					  _("trigger_name"),
1316 					  _("rewrite_rule_name"),
1317 					  _("rewrite_rule_name"),
1318 					  _("rewrite_rule_name"),
1319 					  _("rewrite_rule_name"),
1320 					  _("index_name"),
1321 					  _("new_tablespace"),
1322 					  _("storage_parameter"),
1323 					  _("value"),
1324 					  _("storage_parameter"),
1325 					  _("parent_table"),
1326 					  _("parent_table"),
1327 					  _("type_name"),
1328 					  _("new_owner"),
1329 					  _("index_name"),
1330 					  _("and partition_bound_spec is:"),
1331 					  _("numeric_literal"),
1332 					  _("string_literal"),
1333 					  _("numeric_literal"),
1334 					  _("string_literal"),
1335 					  _("numeric_literal"),
1336 					  _("string_literal"),
1337 					  _("numeric_literal"),
1338 					  _("numeric_literal"),
1339 					  _("and column_constraint is:"),
1340 					  _("constraint_name"),
1341 					  _("expression"),
1342 					  _("default_expr"),
1343 					  _("sequence_options"),
1344 					  _("index_parameters"),
1345 					  _("index_parameters"),
1346 					  _("reftable"),
1347 					  _("refcolumn"),
1348 					  _("action"),
1349 					  _("action"),
1350 					  _("and table_constraint is:"),
1351 					  _("constraint_name"),
1352 					  _("expression"),
1353 					  _("column_name"),
1354 					  _("index_parameters"),
1355 					  _("column_name"),
1356 					  _("index_parameters"),
1357 					  _("index_method"),
1358 					  _("exclude_element"),
1359 					  _("operator"),
1360 					  _("index_parameters"),
1361 					  _("predicate"),
1362 					  _("column_name"),
1363 					  _("reftable"),
1364 					  _("refcolumn"),
1365 					  _("action"),
1366 					  _("action"),
1367 					  _("and table_constraint_using_index is:"),
1368 					  _("constraint_name"),
1369 					  _("index_name"),
1370 					  _("index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"),
1371 					  _("column_name"),
1372 					  _("storage_parameter"),
1373 					  _("value"),
1374 					  _("tablespace_name"),
1375 					  _("exclude_element in an EXCLUDE constraint is:"),
1376 					  _("column_name"),
1377 					  _("expression"),
1378 					  _("opclass"));
1379 }
1380 
1381 static void
sql_help_ALTER_TABLESPACE(PQExpBuffer buf)1382 sql_help_ALTER_TABLESPACE(PQExpBuffer buf)
1383 {
1384 	appendPQExpBuffer(buf,
1385 					  "ALTER TABLESPACE %s RENAME TO %s\n"
1386 					  "ALTER TABLESPACE %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1387 					  "ALTER TABLESPACE %s SET ( %s = %s [, ... ] )\n"
1388 					  "ALTER TABLESPACE %s RESET ( %s [, ... ] )",
1389 					  _("name"),
1390 					  _("new_name"),
1391 					  _("name"),
1392 					  _("new_owner"),
1393 					  _("name"),
1394 					  _("tablespace_option"),
1395 					  _("value"),
1396 					  _("name"),
1397 					  _("tablespace_option"));
1398 }
1399 
1400 static void
sql_help_ALTER_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)1401 sql_help_ALTER_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)
1402 {
1403 	appendPQExpBuffer(buf,
1404 					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
1405 					  "    ADD MAPPING FOR %s [, ... ] WITH %s [, ... ]\n"
1406 					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
1407 					  "    ALTER MAPPING FOR %s [, ... ] WITH %s [, ... ]\n"
1408 					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
1409 					  "    ALTER MAPPING REPLACE %s WITH %s\n"
1410 					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
1411 					  "    ALTER MAPPING FOR %s [, ... ] REPLACE %s WITH %s\n"
1412 					  "ALTER TEXT SEARCH CONFIGURATION %s\n"
1413 					  "    DROP MAPPING [ IF EXISTS ] FOR %s [, ... ]\n"
1414 					  "ALTER TEXT SEARCH CONFIGURATION %s RENAME TO %s\n"
1415 					  "ALTER TEXT SEARCH CONFIGURATION %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1416 					  "ALTER TEXT SEARCH CONFIGURATION %s SET SCHEMA %s",
1417 					  _("name"),
1418 					  _("token_type"),
1419 					  _("dictionary_name"),
1420 					  _("name"),
1421 					  _("token_type"),
1422 					  _("dictionary_name"),
1423 					  _("name"),
1424 					  _("old_dictionary"),
1425 					  _("new_dictionary"),
1426 					  _("name"),
1427 					  _("token_type"),
1428 					  _("old_dictionary"),
1429 					  _("new_dictionary"),
1430 					  _("name"),
1431 					  _("token_type"),
1432 					  _("name"),
1433 					  _("new_name"),
1434 					  _("name"),
1435 					  _("new_owner"),
1436 					  _("name"),
1437 					  _("new_schema"));
1438 }
1439 
1440 static void
sql_help_ALTER_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)1441 sql_help_ALTER_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)
1442 {
1443 	appendPQExpBuffer(buf,
1444 					  "ALTER TEXT SEARCH DICTIONARY %s (\n"
1445 					  "    %s [ = %s ] [, ... ]\n"
1446 					  ")\n"
1447 					  "ALTER TEXT SEARCH DICTIONARY %s RENAME TO %s\n"
1448 					  "ALTER TEXT SEARCH DICTIONARY %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1449 					  "ALTER TEXT SEARCH DICTIONARY %s SET SCHEMA %s",
1450 					  _("name"),
1451 					  _("option"),
1452 					  _("value"),
1453 					  _("name"),
1454 					  _("new_name"),
1455 					  _("name"),
1456 					  _("new_owner"),
1457 					  _("name"),
1458 					  _("new_schema"));
1459 }
1460 
1461 static void
sql_help_ALTER_TEXT_SEARCH_PARSER(PQExpBuffer buf)1462 sql_help_ALTER_TEXT_SEARCH_PARSER(PQExpBuffer buf)
1463 {
1464 	appendPQExpBuffer(buf,
1465 					  "ALTER TEXT SEARCH PARSER %s RENAME TO %s\n"
1466 					  "ALTER TEXT SEARCH PARSER %s SET SCHEMA %s",
1467 					  _("name"),
1468 					  _("new_name"),
1469 					  _("name"),
1470 					  _("new_schema"));
1471 }
1472 
1473 static void
sql_help_ALTER_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)1474 sql_help_ALTER_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)
1475 {
1476 	appendPQExpBuffer(buf,
1477 					  "ALTER TEXT SEARCH TEMPLATE %s RENAME TO %s\n"
1478 					  "ALTER TEXT SEARCH TEMPLATE %s SET SCHEMA %s",
1479 					  _("name"),
1480 					  _("new_name"),
1481 					  _("name"),
1482 					  _("new_schema"));
1483 }
1484 
1485 static void
sql_help_ALTER_TRIGGER(PQExpBuffer buf)1486 sql_help_ALTER_TRIGGER(PQExpBuffer buf)
1487 {
1488 	appendPQExpBuffer(buf,
1489 					  "ALTER TRIGGER %s ON %s RENAME TO %s\n"
1490 					  "ALTER TRIGGER %s ON %s DEPENDS ON EXTENSION %s",
1491 					  _("name"),
1492 					  _("table_name"),
1493 					  _("new_name"),
1494 					  _("name"),
1495 					  _("table_name"),
1496 					  _("extension_name"));
1497 }
1498 
1499 static void
sql_help_ALTER_TYPE(PQExpBuffer buf)1500 sql_help_ALTER_TYPE(PQExpBuffer buf)
1501 {
1502 	appendPQExpBuffer(buf,
1503 					  "ALTER TYPE %s %s [, ... ]\n"
1504 					  "ALTER TYPE %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1505 					  "ALTER TYPE %s RENAME ATTRIBUTE %s TO %s [ CASCADE | RESTRICT ]\n"
1506 					  "ALTER TYPE %s RENAME TO %s\n"
1507 					  "ALTER TYPE %s SET SCHEMA %s\n"
1508 					  "ALTER TYPE %s ADD VALUE [ IF NOT EXISTS ] %s [ { BEFORE | AFTER } %s ]\n"
1509 					  "ALTER TYPE %s RENAME VALUE %s TO %s\n"
1510 					  "\n"
1511 					  "%s\n"
1512 					  "\n"
1513 					  "    ADD ATTRIBUTE %s %s [ COLLATE %s ] [ CASCADE | RESTRICT ]\n"
1514 					  "    DROP ATTRIBUTE [ IF EXISTS ] %s [ CASCADE | RESTRICT ]\n"
1515 					  "    ALTER ATTRIBUTE %s [ SET DATA ] TYPE %s [ COLLATE %s ] [ CASCADE | RESTRICT ]",
1516 					  _("name"),
1517 					  _("action"),
1518 					  _("name"),
1519 					  _("new_owner"),
1520 					  _("name"),
1521 					  _("attribute_name"),
1522 					  _("new_attribute_name"),
1523 					  _("name"),
1524 					  _("new_name"),
1525 					  _("name"),
1526 					  _("new_schema"),
1527 					  _("name"),
1528 					  _("new_enum_value"),
1529 					  _("neighbor_enum_value"),
1530 					  _("name"),
1531 					  _("existing_enum_value"),
1532 					  _("new_enum_value"),
1533 					  _("where action is one of:"),
1534 					  _("attribute_name"),
1535 					  _("data_type"),
1536 					  _("collation"),
1537 					  _("attribute_name"),
1538 					  _("attribute_name"),
1539 					  _("data_type"),
1540 					  _("collation"));
1541 }
1542 
1543 static void
sql_help_ALTER_USER(PQExpBuffer buf)1544 sql_help_ALTER_USER(PQExpBuffer buf)
1545 {
1546 	appendPQExpBuffer(buf,
1547 					  "ALTER USER %s [ WITH ] %s [ ... ]\n"
1548 					  "\n"
1549 					  "%s\n"
1550 					  "\n"
1551 					  "      SUPERUSER | NOSUPERUSER\n"
1552 					  "    | CREATEDB | NOCREATEDB\n"
1553 					  "    | CREATEROLE | NOCREATEROLE\n"
1554 					  "    | INHERIT | NOINHERIT\n"
1555 					  "    | LOGIN | NOLOGIN\n"
1556 					  "    | REPLICATION | NOREPLICATION\n"
1557 					  "    | BYPASSRLS | NOBYPASSRLS\n"
1558 					  "    | CONNECTION LIMIT %s\n"
1559 					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
1560 					  "    | VALID UNTIL '%s'\n"
1561 					  "\n"
1562 					  "ALTER USER %s RENAME TO %s\n"
1563 					  "\n"
1564 					  "ALTER USER { %s | ALL } [ IN DATABASE %s ] SET %s { TO | = } { %s | DEFAULT }\n"
1565 					  "ALTER USER { %s | ALL } [ IN DATABASE %s ] SET %s FROM CURRENT\n"
1566 					  "ALTER USER { %s | ALL } [ IN DATABASE %s ] RESET %s\n"
1567 					  "ALTER USER { %s | ALL } [ IN DATABASE %s ] RESET ALL\n"
1568 					  "\n"
1569 					  "%s\n"
1570 					  "\n"
1571 					  "    %s\n"
1572 					  "  | CURRENT_USER\n"
1573 					  "  | SESSION_USER",
1574 					  _("role_specification"),
1575 					  _("option"),
1576 					  _("where option can be:"),
1577 					  _("connlimit"),
1578 					  _("password"),
1579 					  _("timestamp"),
1580 					  _("name"),
1581 					  _("new_name"),
1582 					  _("role_specification"),
1583 					  _("database_name"),
1584 					  _("configuration_parameter"),
1585 					  _("value"),
1586 					  _("role_specification"),
1587 					  _("database_name"),
1588 					  _("configuration_parameter"),
1589 					  _("role_specification"),
1590 					  _("database_name"),
1591 					  _("configuration_parameter"),
1592 					  _("role_specification"),
1593 					  _("database_name"),
1594 					  _("where role_specification can be:"),
1595 					  _("role_name"));
1596 }
1597 
1598 static void
sql_help_ALTER_USER_MAPPING(PQExpBuffer buf)1599 sql_help_ALTER_USER_MAPPING(PQExpBuffer buf)
1600 {
1601 	appendPQExpBuffer(buf,
1602 					  "ALTER USER MAPPING FOR { %s | USER | CURRENT_USER | SESSION_USER | PUBLIC }\n"
1603 					  "    SERVER %s\n"
1604 					  "    OPTIONS ( [ ADD | SET | DROP ] %s ['%s'] [, ... ] )",
1605 					  _("user_name"),
1606 					  _("server_name"),
1607 					  _("option"),
1608 					  _("value"));
1609 }
1610 
1611 static void
sql_help_ALTER_VIEW(PQExpBuffer buf)1612 sql_help_ALTER_VIEW(PQExpBuffer buf)
1613 {
1614 	appendPQExpBuffer(buf,
1615 					  "ALTER VIEW [ IF EXISTS ] %s ALTER [ COLUMN ] %s SET DEFAULT %s\n"
1616 					  "ALTER VIEW [ IF EXISTS ] %s ALTER [ COLUMN ] %s DROP DEFAULT\n"
1617 					  "ALTER VIEW [ IF EXISTS ] %s OWNER TO { %s | CURRENT_USER | SESSION_USER }\n"
1618 					  "ALTER VIEW [ IF EXISTS ] %s RENAME TO %s\n"
1619 					  "ALTER VIEW [ IF EXISTS ] %s SET SCHEMA %s\n"
1620 					  "ALTER VIEW [ IF EXISTS ] %s SET ( %s [= %s] [, ... ] )\n"
1621 					  "ALTER VIEW [ IF EXISTS ] %s RESET ( %s [, ... ] )",
1622 					  _("name"),
1623 					  _("column_name"),
1624 					  _("expression"),
1625 					  _("name"),
1626 					  _("column_name"),
1627 					  _("name"),
1628 					  _("new_owner"),
1629 					  _("name"),
1630 					  _("new_name"),
1631 					  _("name"),
1632 					  _("new_schema"),
1633 					  _("name"),
1634 					  _("view_option_name"),
1635 					  _("view_option_value"),
1636 					  _("name"),
1637 					  _("view_option_name"));
1638 }
1639 
1640 static void
sql_help_ANALYZE(PQExpBuffer buf)1641 sql_help_ANALYZE(PQExpBuffer buf)
1642 {
1643 	appendPQExpBuffer(buf,
1644 					  "ANALYZE [ ( %s [, ...] ) ] [ %s [, ...] ]\n"
1645 					  "ANALYZE [ VERBOSE ] [ %s [, ...] ]\n"
1646 					  "\n"
1647 					  "%s\n"
1648 					  "\n"
1649 					  "    VERBOSE\n"
1650 					  "\n"
1651 					  "%s\n"
1652 					  "\n"
1653 					  "    %s [ ( %s [, ...] ) ]",
1654 					  _("option"),
1655 					  _("table_and_columns"),
1656 					  _("table_and_columns"),
1657 					  _("where option can be one of:"),
1658 					  _("and table_and_columns is:"),
1659 					  _("table_name"),
1660 					  _("column_name"));
1661 }
1662 
1663 static void
sql_help_BEGIN(PQExpBuffer buf)1664 sql_help_BEGIN(PQExpBuffer buf)
1665 {
1666 	appendPQExpBuffer(buf,
1667 					  "BEGIN [ WORK | TRANSACTION ] [ %s [, ...] ]\n"
1668 					  "\n"
1669 					  "%s\n"
1670 					  "\n"
1671 					  "    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
1672 					  "    READ WRITE | READ ONLY\n"
1673 					  "    [ NOT ] DEFERRABLE",
1674 					  _("transaction_mode"),
1675 					  _("where transaction_mode is one of:"));
1676 }
1677 
1678 static void
sql_help_CALL(PQExpBuffer buf)1679 sql_help_CALL(PQExpBuffer buf)
1680 {
1681 	appendPQExpBuffer(buf,
1682 					  "CALL %s ( [ %s ] [, ...] )",
1683 					  _("name"),
1684 					  _("argument"));
1685 }
1686 
1687 static void
sql_help_CHECKPOINT(PQExpBuffer buf)1688 sql_help_CHECKPOINT(PQExpBuffer buf)
1689 {
1690 	appendPQExpBuffer(buf,
1691 					  "CHECKPOINT");
1692 }
1693 
1694 static void
sql_help_CLOSE(PQExpBuffer buf)1695 sql_help_CLOSE(PQExpBuffer buf)
1696 {
1697 	appendPQExpBuffer(buf,
1698 					  "CLOSE { %s | ALL }",
1699 					  _("name"));
1700 }
1701 
1702 static void
sql_help_CLUSTER(PQExpBuffer buf)1703 sql_help_CLUSTER(PQExpBuffer buf)
1704 {
1705 	appendPQExpBuffer(buf,
1706 					  "CLUSTER [VERBOSE] %s [ USING %s ]\n"
1707 					  "CLUSTER [VERBOSE]",
1708 					  _("table_name"),
1709 					  _("index_name"));
1710 }
1711 
1712 static void
sql_help_COMMENT(PQExpBuffer buf)1713 sql_help_COMMENT(PQExpBuffer buf)
1714 {
1715 	appendPQExpBuffer(buf,
1716 					  "COMMENT ON\n"
1717 					  "{\n"
1718 					  "  ACCESS METHOD %s |\n"
1719 					  "  AGGREGATE %s ( %s ) |\n"
1720 					  "  CAST (%s AS %s) |\n"
1721 					  "  COLLATION %s |\n"
1722 					  "  COLUMN %s.%s |\n"
1723 					  "  CONSTRAINT %s ON %s |\n"
1724 					  "  CONSTRAINT %s ON DOMAIN %s |\n"
1725 					  "  CONVERSION %s |\n"
1726 					  "  DATABASE %s |\n"
1727 					  "  DOMAIN %s |\n"
1728 					  "  EXTENSION %s |\n"
1729 					  "  EVENT TRIGGER %s |\n"
1730 					  "  FOREIGN DATA WRAPPER %s |\n"
1731 					  "  FOREIGN TABLE %s |\n"
1732 					  "  FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
1733 					  "  INDEX %s |\n"
1734 					  "  LARGE OBJECT %s |\n"
1735 					  "  MATERIALIZED VIEW %s |\n"
1736 					  "  OPERATOR %s (%s, %s) |\n"
1737 					  "  OPERATOR CLASS %s USING %s |\n"
1738 					  "  OPERATOR FAMILY %s USING %s |\n"
1739 					  "  POLICY %s ON %s |\n"
1740 					  "  [ PROCEDURAL ] LANGUAGE %s |\n"
1741 					  "  PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
1742 					  "  PUBLICATION %s |\n"
1743 					  "  ROLE %s |\n"
1744 					  "  ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
1745 					  "  RULE %s ON %s |\n"
1746 					  "  SCHEMA %s |\n"
1747 					  "  SEQUENCE %s |\n"
1748 					  "  SERVER %s |\n"
1749 					  "  STATISTICS %s |\n"
1750 					  "  SUBSCRIPTION %s |\n"
1751 					  "  TABLE %s |\n"
1752 					  "  TABLESPACE %s |\n"
1753 					  "  TEXT SEARCH CONFIGURATION %s |\n"
1754 					  "  TEXT SEARCH DICTIONARY %s |\n"
1755 					  "  TEXT SEARCH PARSER %s |\n"
1756 					  "  TEXT SEARCH TEMPLATE %s |\n"
1757 					  "  TRANSFORM FOR %s LANGUAGE %s |\n"
1758 					  "  TRIGGER %s ON %s |\n"
1759 					  "  TYPE %s |\n"
1760 					  "  VIEW %s\n"
1761 					  "} IS '%s'\n"
1762 					  "\n"
1763 					  "%s\n"
1764 					  "\n"
1765 					  "* |\n"
1766 					  "[ %s ] [ %s ] %s [ , ... ] |\n"
1767 					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
1768 					  _("object_name"),
1769 					  _("aggregate_name"),
1770 					  _("aggregate_signature"),
1771 					  _("source_type"),
1772 					  _("target_type"),
1773 					  _("object_name"),
1774 					  _("relation_name"),
1775 					  _("column_name"),
1776 					  _("constraint_name"),
1777 					  _("table_name"),
1778 					  _("constraint_name"),
1779 					  _("domain_name"),
1780 					  _("object_name"),
1781 					  _("object_name"),
1782 					  _("object_name"),
1783 					  _("object_name"),
1784 					  _("object_name"),
1785 					  _("object_name"),
1786 					  _("object_name"),
1787 					  _("function_name"),
1788 					  _("argmode"),
1789 					  _("argname"),
1790 					  _("argtype"),
1791 					  _("object_name"),
1792 					  _("large_object_oid"),
1793 					  _("object_name"),
1794 					  _("operator_name"),
1795 					  _("left_type"),
1796 					  _("right_type"),
1797 					  _("object_name"),
1798 					  _("index_method"),
1799 					  _("object_name"),
1800 					  _("index_method"),
1801 					  _("policy_name"),
1802 					  _("table_name"),
1803 					  _("object_name"),
1804 					  _("procedure_name"),
1805 					  _("argmode"),
1806 					  _("argname"),
1807 					  _("argtype"),
1808 					  _("object_name"),
1809 					  _("object_name"),
1810 					  _("routine_name"),
1811 					  _("argmode"),
1812 					  _("argname"),
1813 					  _("argtype"),
1814 					  _("rule_name"),
1815 					  _("table_name"),
1816 					  _("object_name"),
1817 					  _("object_name"),
1818 					  _("object_name"),
1819 					  _("object_name"),
1820 					  _("object_name"),
1821 					  _("object_name"),
1822 					  _("object_name"),
1823 					  _("object_name"),
1824 					  _("object_name"),
1825 					  _("object_name"),
1826 					  _("object_name"),
1827 					  _("type_name"),
1828 					  _("lang_name"),
1829 					  _("trigger_name"),
1830 					  _("table_name"),
1831 					  _("object_name"),
1832 					  _("object_name"),
1833 					  _("text"),
1834 					  _("where aggregate_signature is:"),
1835 					  _("argmode"),
1836 					  _("argname"),
1837 					  _("argtype"),
1838 					  _("argmode"),
1839 					  _("argname"),
1840 					  _("argtype"),
1841 					  _("argmode"),
1842 					  _("argname"),
1843 					  _("argtype"));
1844 }
1845 
1846 static void
sql_help_COMMIT(PQExpBuffer buf)1847 sql_help_COMMIT(PQExpBuffer buf)
1848 {
1849 	appendPQExpBuffer(buf,
1850 					  "COMMIT [ WORK | TRANSACTION ]");
1851 }
1852 
1853 static void
sql_help_COMMIT_PREPARED(PQExpBuffer buf)1854 sql_help_COMMIT_PREPARED(PQExpBuffer buf)
1855 {
1856 	appendPQExpBuffer(buf,
1857 					  "COMMIT PREPARED %s",
1858 					  _("transaction_id"));
1859 }
1860 
1861 static void
sql_help_COPY(PQExpBuffer buf)1862 sql_help_COPY(PQExpBuffer buf)
1863 {
1864 	appendPQExpBuffer(buf,
1865 					  "COPY %s [ ( %s [, ...] ) ]\n"
1866 					  "    FROM { '%s' | PROGRAM '%s' | STDIN }\n"
1867 					  "    [ [ WITH ] ( %s [, ...] ) ]\n"
1868 					  "\n"
1869 					  "COPY { %s [ ( %s [, ...] ) ] | ( %s ) }\n"
1870 					  "    TO { '%s' | PROGRAM '%s' | STDOUT }\n"
1871 					  "    [ [ WITH ] ( %s [, ...] ) ]\n"
1872 					  "\n"
1873 					  "%s\n"
1874 					  "\n"
1875 					  "    FORMAT %s\n"
1876 					  "    OIDS [ %s ]\n"
1877 					  "    FREEZE [ %s ]\n"
1878 					  "    DELIMITER '%s'\n"
1879 					  "    NULL '%s'\n"
1880 					  "    HEADER [ %s ]\n"
1881 					  "    QUOTE '%s'\n"
1882 					  "    ESCAPE '%s'\n"
1883 					  "    FORCE_QUOTE { ( %s [, ...] ) | * }\n"
1884 					  "    FORCE_NOT_NULL ( %s [, ...] )\n"
1885 					  "    FORCE_NULL ( %s [, ...] )\n"
1886 					  "    ENCODING '%s'",
1887 					  _("table_name"),
1888 					  _("column_name"),
1889 					  _("filename"),
1890 					  _("command"),
1891 					  _("option"),
1892 					  _("table_name"),
1893 					  _("column_name"),
1894 					  _("query"),
1895 					  _("filename"),
1896 					  _("command"),
1897 					  _("option"),
1898 					  _("where option can be one of:"),
1899 					  _("format_name"),
1900 					  _("boolean"),
1901 					  _("boolean"),
1902 					  _("delimiter_character"),
1903 					  _("null_string"),
1904 					  _("boolean"),
1905 					  _("quote_character"),
1906 					  _("escape_character"),
1907 					  _("column_name"),
1908 					  _("column_name"),
1909 					  _("column_name"),
1910 					  _("encoding_name"));
1911 }
1912 
1913 static void
sql_help_CREATE_ACCESS_METHOD(PQExpBuffer buf)1914 sql_help_CREATE_ACCESS_METHOD(PQExpBuffer buf)
1915 {
1916 	appendPQExpBuffer(buf,
1917 					  "CREATE ACCESS METHOD %s\n"
1918 					  "    TYPE %s\n"
1919 					  "    HANDLER %s",
1920 					  _("name"),
1921 					  _("access_method_type"),
1922 					  _("handler_function"));
1923 }
1924 
1925 static void
sql_help_CREATE_AGGREGATE(PQExpBuffer buf)1926 sql_help_CREATE_AGGREGATE(PQExpBuffer buf)
1927 {
1928 	appendPQExpBuffer(buf,
1929 					  "CREATE AGGREGATE %s ( [ %s ] [ %s ] %s [ , ... ] ) (\n"
1930 					  "    SFUNC = %s,\n"
1931 					  "    STYPE = %s\n"
1932 					  "    [ , SSPACE = %s ]\n"
1933 					  "    [ , FINALFUNC = %s ]\n"
1934 					  "    [ , FINALFUNC_EXTRA ]\n"
1935 					  "    [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
1936 					  "    [ , COMBINEFUNC = %s ]\n"
1937 					  "    [ , SERIALFUNC = %s ]\n"
1938 					  "    [ , DESERIALFUNC = %s ]\n"
1939 					  "    [ , INITCOND = %s ]\n"
1940 					  "    [ , MSFUNC = %s ]\n"
1941 					  "    [ , MINVFUNC = %s ]\n"
1942 					  "    [ , MSTYPE = %s ]\n"
1943 					  "    [ , MSSPACE = %s ]\n"
1944 					  "    [ , MFINALFUNC = %s ]\n"
1945 					  "    [ , MFINALFUNC_EXTRA ]\n"
1946 					  "    [ , MFINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
1947 					  "    [ , MINITCOND = %s ]\n"
1948 					  "    [ , SORTOP = %s ]\n"
1949 					  "    [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]\n"
1950 					  ")\n"
1951 					  "\n"
1952 					  "CREATE AGGREGATE %s ( [ [ %s ] [ %s ] %s [ , ... ] ]\n"
1953 					  "                        ORDER BY [ %s ] [ %s ] %s [ , ... ] ) (\n"
1954 					  "    SFUNC = %s,\n"
1955 					  "    STYPE = %s\n"
1956 					  "    [ , SSPACE = %s ]\n"
1957 					  "    [ , FINALFUNC = %s ]\n"
1958 					  "    [ , FINALFUNC_EXTRA ]\n"
1959 					  "    [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
1960 					  "    [ , INITCOND = %s ]\n"
1961 					  "    [ , PARALLEL = { SAFE | RESTRICTED | UNSAFE } ]\n"
1962 					  "    [ , HYPOTHETICAL ]\n"
1963 					  ")\n"
1964 					  "\n"
1965 					  "%s\n"
1966 					  "\n"
1967 					  "CREATE AGGREGATE %s (\n"
1968 					  "    BASETYPE = %s,\n"
1969 					  "    SFUNC = %s,\n"
1970 					  "    STYPE = %s\n"
1971 					  "    [ , SSPACE = %s ]\n"
1972 					  "    [ , FINALFUNC = %s ]\n"
1973 					  "    [ , FINALFUNC_EXTRA ]\n"
1974 					  "    [ , FINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
1975 					  "    [ , COMBINEFUNC = %s ]\n"
1976 					  "    [ , SERIALFUNC = %s ]\n"
1977 					  "    [ , DESERIALFUNC = %s ]\n"
1978 					  "    [ , INITCOND = %s ]\n"
1979 					  "    [ , MSFUNC = %s ]\n"
1980 					  "    [ , MINVFUNC = %s ]\n"
1981 					  "    [ , MSTYPE = %s ]\n"
1982 					  "    [ , MSSPACE = %s ]\n"
1983 					  "    [ , MFINALFUNC = %s ]\n"
1984 					  "    [ , MFINALFUNC_EXTRA ]\n"
1985 					  "    [ , MFINALFUNC_MODIFY = { READ_ONLY | SHAREABLE | READ_WRITE } ]\n"
1986 					  "    [ , MINITCOND = %s ]\n"
1987 					  "    [ , SORTOP = %s ]\n"
1988 					  ")",
1989 					  _("name"),
1990 					  _("argmode"),
1991 					  _("argname"),
1992 					  _("arg_data_type"),
1993 					  _("sfunc"),
1994 					  _("state_data_type"),
1995 					  _("state_data_size"),
1996 					  _("ffunc"),
1997 					  _("combinefunc"),
1998 					  _("serialfunc"),
1999 					  _("deserialfunc"),
2000 					  _("initial_condition"),
2001 					  _("msfunc"),
2002 					  _("minvfunc"),
2003 					  _("mstate_data_type"),
2004 					  _("mstate_data_size"),
2005 					  _("mffunc"),
2006 					  _("minitial_condition"),
2007 					  _("sort_operator"),
2008 					  _("name"),
2009 					  _("argmode"),
2010 					  _("argname"),
2011 					  _("arg_data_type"),
2012 					  _("argmode"),
2013 					  _("argname"),
2014 					  _("arg_data_type"),
2015 					  _("sfunc"),
2016 					  _("state_data_type"),
2017 					  _("state_data_size"),
2018 					  _("ffunc"),
2019 					  _("initial_condition"),
2020 					  _("or the old syntax"),
2021 					  _("name"),
2022 					  _("base_type"),
2023 					  _("sfunc"),
2024 					  _("state_data_type"),
2025 					  _("state_data_size"),
2026 					  _("ffunc"),
2027 					  _("combinefunc"),
2028 					  _("serialfunc"),
2029 					  _("deserialfunc"),
2030 					  _("initial_condition"),
2031 					  _("msfunc"),
2032 					  _("minvfunc"),
2033 					  _("mstate_data_type"),
2034 					  _("mstate_data_size"),
2035 					  _("mffunc"),
2036 					  _("minitial_condition"),
2037 					  _("sort_operator"));
2038 }
2039 
2040 static void
sql_help_CREATE_CAST(PQExpBuffer buf)2041 sql_help_CREATE_CAST(PQExpBuffer buf)
2042 {
2043 	appendPQExpBuffer(buf,
2044 					  "CREATE CAST (%s AS %s)\n"
2045 					  "    WITH FUNCTION %s [ (%s [, ...]) ]\n"
2046 					  "    [ AS ASSIGNMENT | AS IMPLICIT ]\n"
2047 					  "\n"
2048 					  "CREATE CAST (%s AS %s)\n"
2049 					  "    WITHOUT FUNCTION\n"
2050 					  "    [ AS ASSIGNMENT | AS IMPLICIT ]\n"
2051 					  "\n"
2052 					  "CREATE CAST (%s AS %s)\n"
2053 					  "    WITH INOUT\n"
2054 					  "    [ AS ASSIGNMENT | AS IMPLICIT ]",
2055 					  _("source_type"),
2056 					  _("target_type"),
2057 					  _("function_name"),
2058 					  _("argument_type"),
2059 					  _("source_type"),
2060 					  _("target_type"),
2061 					  _("source_type"),
2062 					  _("target_type"));
2063 }
2064 
2065 static void
sql_help_CREATE_COLLATION(PQExpBuffer buf)2066 sql_help_CREATE_COLLATION(PQExpBuffer buf)
2067 {
2068 	appendPQExpBuffer(buf,
2069 					  "CREATE COLLATION [ IF NOT EXISTS ] %s (\n"
2070 					  "    [ LOCALE = %s, ]\n"
2071 					  "    [ LC_COLLATE = %s, ]\n"
2072 					  "    [ LC_CTYPE = %s, ]\n"
2073 					  "    [ PROVIDER = %s, ]\n"
2074 					  "    [ VERSION = %s ]\n"
2075 					  ")\n"
2076 					  "CREATE COLLATION [ IF NOT EXISTS ] %s FROM %s",
2077 					  _("name"),
2078 					  _("locale"),
2079 					  _("lc_collate"),
2080 					  _("lc_ctype"),
2081 					  _("provider"),
2082 					  _("version"),
2083 					  _("name"),
2084 					  _("existing_collation"));
2085 }
2086 
2087 static void
sql_help_CREATE_CONVERSION(PQExpBuffer buf)2088 sql_help_CREATE_CONVERSION(PQExpBuffer buf)
2089 {
2090 	appendPQExpBuffer(buf,
2091 					  "CREATE [ DEFAULT ] CONVERSION %s\n"
2092 					  "    FOR %s TO %s FROM %s",
2093 					  _("name"),
2094 					  _("source_encoding"),
2095 					  _("dest_encoding"),
2096 					  _("function_name"));
2097 }
2098 
2099 static void
sql_help_CREATE_DATABASE(PQExpBuffer buf)2100 sql_help_CREATE_DATABASE(PQExpBuffer buf)
2101 {
2102 	appendPQExpBuffer(buf,
2103 					  "CREATE DATABASE %s\n"
2104 					  "    [ [ WITH ] [ OWNER [=] %s ]\n"
2105 					  "           [ TEMPLATE [=] %s ]\n"
2106 					  "           [ ENCODING [=] %s ]\n"
2107 					  "           [ LC_COLLATE [=] %s ]\n"
2108 					  "           [ LC_CTYPE [=] %s ]\n"
2109 					  "           [ TABLESPACE [=] %s ]\n"
2110 					  "           [ ALLOW_CONNECTIONS [=] %s ]\n"
2111 					  "           [ CONNECTION LIMIT [=] %s ]\n"
2112 					  "           [ IS_TEMPLATE [=] %s ] ]",
2113 					  _("name"),
2114 					  _("user_name"),
2115 					  _("template"),
2116 					  _("encoding"),
2117 					  _("lc_collate"),
2118 					  _("lc_ctype"),
2119 					  _("tablespace_name"),
2120 					  _("allowconn"),
2121 					  _("connlimit"),
2122 					  _("istemplate"));
2123 }
2124 
2125 static void
sql_help_CREATE_DOMAIN(PQExpBuffer buf)2126 sql_help_CREATE_DOMAIN(PQExpBuffer buf)
2127 {
2128 	appendPQExpBuffer(buf,
2129 					  "CREATE DOMAIN %s [ AS ] %s\n"
2130 					  "    [ COLLATE %s ]\n"
2131 					  "    [ DEFAULT %s ]\n"
2132 					  "    [ %s [ ... ] ]\n"
2133 					  "\n"
2134 					  "%s\n"
2135 					  "\n"
2136 					  "[ CONSTRAINT %s ]\n"
2137 					  "{ NOT NULL | NULL | CHECK (%s) }",
2138 					  _("name"),
2139 					  _("data_type"),
2140 					  _("collation"),
2141 					  _("expression"),
2142 					  _("constraint"),
2143 					  _("where constraint is:"),
2144 					  _("constraint_name"),
2145 					  _("expression"));
2146 }
2147 
2148 static void
sql_help_CREATE_EVENT_TRIGGER(PQExpBuffer buf)2149 sql_help_CREATE_EVENT_TRIGGER(PQExpBuffer buf)
2150 {
2151 	appendPQExpBuffer(buf,
2152 					  "CREATE EVENT TRIGGER %s\n"
2153 					  "    ON %s\n"
2154 					  "    [ WHEN %s IN (%s [, ... ]) [ AND ... ] ]\n"
2155 					  "    EXECUTE { FUNCTION | PROCEDURE } %s()",
2156 					  _("name"),
2157 					  _("event"),
2158 					  _("filter_variable"),
2159 					  _("filter_value"),
2160 					  _("function_name"));
2161 }
2162 
2163 static void
sql_help_CREATE_EXTENSION(PQExpBuffer buf)2164 sql_help_CREATE_EXTENSION(PQExpBuffer buf)
2165 {
2166 	appendPQExpBuffer(buf,
2167 					  "CREATE EXTENSION [ IF NOT EXISTS ] %s\n"
2168 					  "    [ WITH ] [ SCHEMA %s ]\n"
2169 					  "             [ VERSION %s ]\n"
2170 					  "             [ FROM %s ]\n"
2171 					  "             [ CASCADE ]",
2172 					  _("extension_name"),
2173 					  _("schema_name"),
2174 					  _("version"),
2175 					  _("old_version"));
2176 }
2177 
2178 static void
sql_help_CREATE_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)2179 sql_help_CREATE_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)
2180 {
2181 	appendPQExpBuffer(buf,
2182 					  "CREATE FOREIGN DATA WRAPPER %s\n"
2183 					  "    [ HANDLER %s | NO HANDLER ]\n"
2184 					  "    [ VALIDATOR %s | NO VALIDATOR ]\n"
2185 					  "    [ OPTIONS ( %s '%s' [, ... ] ) ]",
2186 					  _("name"),
2187 					  _("handler_function"),
2188 					  _("validator_function"),
2189 					  _("option"),
2190 					  _("value"));
2191 }
2192 
2193 static void
sql_help_CREATE_FOREIGN_TABLE(PQExpBuffer buf)2194 sql_help_CREATE_FOREIGN_TABLE(PQExpBuffer buf)
2195 {
2196 	appendPQExpBuffer(buf,
2197 					  "CREATE FOREIGN TABLE [ IF NOT EXISTS ] %s ( [\n"
2198 					  "  { %s %s [ OPTIONS ( %s '%s' [, ... ] ) ] [ COLLATE %s ] [ %s [ ... ] ]\n"
2199 					  "    | %s }\n"
2200 					  "    [, ... ]\n"
2201 					  "] )\n"
2202 					  "[ INHERITS ( %s [, ... ] ) ]\n"
2203 					  "  SERVER %s\n"
2204 					  "[ OPTIONS ( %s '%s' [, ... ] ) ]\n"
2205 					  "\n"
2206 					  "CREATE FOREIGN TABLE [ IF NOT EXISTS ] %s\n"
2207 					  "  PARTITION OF %s [ (\n"
2208 					  "  { %s [ WITH OPTIONS ] [ %s [ ... ] ]\n"
2209 					  "    | %s }\n"
2210 					  "    [, ... ]\n"
2211 					  ") ] %s\n"
2212 					  "  SERVER %s\n"
2213 					  "[ OPTIONS ( %s '%s' [, ... ] ) ]\n"
2214 					  "\n"
2215 					  "%s\n"
2216 					  "\n"
2217 					  "[ CONSTRAINT %s ]\n"
2218 					  "{ NOT NULL |\n"
2219 					  "  NULL |\n"
2220 					  "  CHECK ( %s ) [ NO INHERIT ] |\n"
2221 					  "  DEFAULT %s }\n"
2222 					  "\n"
2223 					  "%s\n"
2224 					  "\n"
2225 					  "[ CONSTRAINT %s ]\n"
2226 					  "CHECK ( %s ) [ NO INHERIT ]",
2227 					  _("table_name"),
2228 					  _("column_name"),
2229 					  _("data_type"),
2230 					  _("option"),
2231 					  _("value"),
2232 					  _("collation"),
2233 					  _("column_constraint"),
2234 					  _("table_constraint"),
2235 					  _("parent_table"),
2236 					  _("server_name"),
2237 					  _("option"),
2238 					  _("value"),
2239 					  _("table_name"),
2240 					  _("parent_table"),
2241 					  _("column_name"),
2242 					  _("column_constraint"),
2243 					  _("table_constraint"),
2244 					  _("partition_bound_spec"),
2245 					  _("server_name"),
2246 					  _("option"),
2247 					  _("value"),
2248 					  _("where column_constraint is:"),
2249 					  _("constraint_name"),
2250 					  _("expression"),
2251 					  _("default_expr"),
2252 					  _("and table_constraint is:"),
2253 					  _("constraint_name"),
2254 					  _("expression"));
2255 }
2256 
2257 static void
sql_help_CREATE_FUNCTION(PQExpBuffer buf)2258 sql_help_CREATE_FUNCTION(PQExpBuffer buf)
2259 {
2260 	appendPQExpBuffer(buf,
2261 					  "CREATE [ OR REPLACE ] FUNCTION\n"
2262 					  "    %s ( [ [ %s ] [ %s ] %s [ { DEFAULT | = } %s ] [, ...] ] )\n"
2263 					  "    [ RETURNS %s\n"
2264 					  "      | RETURNS TABLE ( %s %s [, ...] ) ]\n"
2265 					  "  { LANGUAGE %s\n"
2266 					  "    | TRANSFORM { FOR TYPE %s } [, ... ]\n"
2267 					  "    | WINDOW\n"
2268 					  "    | { IMMUTABLE | STABLE | VOLATILE }\n"
2269 					  "    | [ NOT ] LEAKPROOF\n"
2270 					  "    | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT }\n"
2271 					  "    | { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER }\n"
2272 					  "    | PARALLEL { UNSAFE | RESTRICTED | SAFE }\n"
2273 					  "    | COST %s\n"
2274 					  "    | ROWS %s\n"
2275 					  "    | SET %s { TO %s | = %s | FROM CURRENT }\n"
2276 					  "    | AS '%s'\n"
2277 					  "    | AS '%s', '%s'\n"
2278 					  "  } ...",
2279 					  _("name"),
2280 					  _("argmode"),
2281 					  _("argname"),
2282 					  _("argtype"),
2283 					  _("default_expr"),
2284 					  _("rettype"),
2285 					  _("column_name"),
2286 					  _("column_type"),
2287 					  _("lang_name"),
2288 					  _("type_name"),
2289 					  _("execution_cost"),
2290 					  _("result_rows"),
2291 					  _("configuration_parameter"),
2292 					  _("value"),
2293 					  _("value"),
2294 					  _("definition"),
2295 					  _("obj_file"),
2296 					  _("link_symbol"));
2297 }
2298 
2299 static void
sql_help_CREATE_GROUP(PQExpBuffer buf)2300 sql_help_CREATE_GROUP(PQExpBuffer buf)
2301 {
2302 	appendPQExpBuffer(buf,
2303 					  "CREATE GROUP %s [ [ WITH ] %s [ ... ] ]\n"
2304 					  "\n"
2305 					  "%s\n"
2306 					  "\n"
2307 					  "      SUPERUSER | NOSUPERUSER\n"
2308 					  "    | CREATEDB | NOCREATEDB\n"
2309 					  "    | CREATEROLE | NOCREATEROLE\n"
2310 					  "    | INHERIT | NOINHERIT\n"
2311 					  "    | LOGIN | NOLOGIN\n"
2312 					  "    | REPLICATION | NOREPLICATION\n"
2313 					  "    | BYPASSRLS | NOBYPASSRLS\n"
2314 					  "    | CONNECTION LIMIT %s\n"
2315 					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
2316 					  "    | VALID UNTIL '%s'\n"
2317 					  "    | IN ROLE %s [, ...]\n"
2318 					  "    | IN GROUP %s [, ...]\n"
2319 					  "    | ROLE %s [, ...]\n"
2320 					  "    | ADMIN %s [, ...]\n"
2321 					  "    | USER %s [, ...]\n"
2322 					  "    | SYSID %s",
2323 					  _("name"),
2324 					  _("option"),
2325 					  _("where option can be:"),
2326 					  _("connlimit"),
2327 					  _("password"),
2328 					  _("timestamp"),
2329 					  _("role_name"),
2330 					  _("role_name"),
2331 					  _("role_name"),
2332 					  _("role_name"),
2333 					  _("role_name"),
2334 					  _("uid"));
2335 }
2336 
2337 static void
sql_help_CREATE_INDEX(PQExpBuffer buf)2338 sql_help_CREATE_INDEX(PQExpBuffer buf)
2339 {
2340 	appendPQExpBuffer(buf,
2341 					  "CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] %s ] ON [ ONLY ] %s [ USING %s ]\n"
2342 					  "    ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )\n"
2343 					  "    [ INCLUDE ( %s [, ...] ) ]\n"
2344 					  "    [ WITH ( %s [= %s] [, ... ] ) ]\n"
2345 					  "    [ TABLESPACE %s ]\n"
2346 					  "    [ WHERE %s ]",
2347 					  _("name"),
2348 					  _("table_name"),
2349 					  _("method"),
2350 					  _("column_name"),
2351 					  _("expression"),
2352 					  _("collation"),
2353 					  _("opclass"),
2354 					  _("column_name"),
2355 					  _("storage_parameter"),
2356 					  _("value"),
2357 					  _("tablespace_name"),
2358 					  _("predicate"));
2359 }
2360 
2361 static void
sql_help_CREATE_LANGUAGE(PQExpBuffer buf)2362 sql_help_CREATE_LANGUAGE(PQExpBuffer buf)
2363 {
2364 	appendPQExpBuffer(buf,
2365 					  "CREATE [ OR REPLACE ] [ PROCEDURAL ] LANGUAGE %s\n"
2366 					  "CREATE [ OR REPLACE ] [ TRUSTED ] [ PROCEDURAL ] LANGUAGE %s\n"
2367 					  "    HANDLER %s [ INLINE %s ] [ VALIDATOR %s ]",
2368 					  _("name"),
2369 					  _("name"),
2370 					  _("call_handler"),
2371 					  _("inline_handler"),
2372 					  _("valfunction"));
2373 }
2374 
2375 static void
sql_help_CREATE_MATERIALIZED_VIEW(PQExpBuffer buf)2376 sql_help_CREATE_MATERIALIZED_VIEW(PQExpBuffer buf)
2377 {
2378 	appendPQExpBuffer(buf,
2379 					  "CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] %s\n"
2380 					  "    [ (%s [, ...] ) ]\n"
2381 					  "    [ WITH ( %s [= %s] [, ... ] ) ]\n"
2382 					  "    [ TABLESPACE %s ]\n"
2383 					  "    AS %s\n"
2384 					  "    [ WITH [ NO ] DATA ]",
2385 					  _("table_name"),
2386 					  _("column_name"),
2387 					  _("storage_parameter"),
2388 					  _("value"),
2389 					  _("tablespace_name"),
2390 					  _("query"));
2391 }
2392 
2393 static void
sql_help_CREATE_OPERATOR(PQExpBuffer buf)2394 sql_help_CREATE_OPERATOR(PQExpBuffer buf)
2395 {
2396 	appendPQExpBuffer(buf,
2397 					  "CREATE OPERATOR %s (\n"
2398 					  "    {FUNCTION|PROCEDURE} = %s\n"
2399 					  "    [, LEFTARG = %s ] [, RIGHTARG = %s ]\n"
2400 					  "    [, COMMUTATOR = %s ] [, NEGATOR = %s ]\n"
2401 					  "    [, RESTRICT = %s ] [, JOIN = %s ]\n"
2402 					  "    [, HASHES ] [, MERGES ]\n"
2403 					  ")",
2404 					  _("name"),
2405 					  _("function_name"),
2406 					  _("left_type"),
2407 					  _("right_type"),
2408 					  _("com_op"),
2409 					  _("neg_op"),
2410 					  _("res_proc"),
2411 					  _("join_proc"));
2412 }
2413 
2414 static void
sql_help_CREATE_OPERATOR_CLASS(PQExpBuffer buf)2415 sql_help_CREATE_OPERATOR_CLASS(PQExpBuffer buf)
2416 {
2417 	appendPQExpBuffer(buf,
2418 					  "CREATE OPERATOR CLASS %s [ DEFAULT ] FOR TYPE %s\n"
2419 					  "  USING %s [ FAMILY %s ] AS\n"
2420 					  "  {  OPERATOR %s %s [ ( %s, %s ) ] [ FOR SEARCH | FOR ORDER BY %s ]\n"
2421 					  "   | FUNCTION %s [ ( %s [ , %s ] ) ] %s ( %s [, ...] )\n"
2422 					  "   | STORAGE %s\n"
2423 					  "  } [, ... ]",
2424 					  _("name"),
2425 					  _("data_type"),
2426 					  _("index_method"),
2427 					  _("family_name"),
2428 					  _("strategy_number"),
2429 					  _("operator_name"),
2430 					  _("op_type"),
2431 					  _("op_type"),
2432 					  _("sort_family_name"),
2433 					  _("support_number"),
2434 					  _("op_type"),
2435 					  _("op_type"),
2436 					  _("function_name"),
2437 					  _("argument_type"),
2438 					  _("storage_type"));
2439 }
2440 
2441 static void
sql_help_CREATE_OPERATOR_FAMILY(PQExpBuffer buf)2442 sql_help_CREATE_OPERATOR_FAMILY(PQExpBuffer buf)
2443 {
2444 	appendPQExpBuffer(buf,
2445 					  "CREATE OPERATOR FAMILY %s USING %s",
2446 					  _("name"),
2447 					  _("index_method"));
2448 }
2449 
2450 static void
sql_help_CREATE_POLICY(PQExpBuffer buf)2451 sql_help_CREATE_POLICY(PQExpBuffer buf)
2452 {
2453 	appendPQExpBuffer(buf,
2454 					  "CREATE POLICY %s ON %s\n"
2455 					  "    [ AS { PERMISSIVE | RESTRICTIVE } ]\n"
2456 					  "    [ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]\n"
2457 					  "    [ TO { %s | PUBLIC | CURRENT_USER | SESSION_USER } [, ...] ]\n"
2458 					  "    [ USING ( %s ) ]\n"
2459 					  "    [ WITH CHECK ( %s ) ]",
2460 					  _("name"),
2461 					  _("table_name"),
2462 					  _("role_name"),
2463 					  _("using_expression"),
2464 					  _("check_expression"));
2465 }
2466 
2467 static void
sql_help_CREATE_PROCEDURE(PQExpBuffer buf)2468 sql_help_CREATE_PROCEDURE(PQExpBuffer buf)
2469 {
2470 	appendPQExpBuffer(buf,
2471 					  "CREATE [ OR REPLACE ] PROCEDURE\n"
2472 					  "    %s ( [ [ %s ] [ %s ] %s [ { DEFAULT | = } %s ] [, ...] ] )\n"
2473 					  "  { LANGUAGE %s\n"
2474 					  "    | TRANSFORM { FOR TYPE %s } [, ... ]\n"
2475 					  "    | [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER\n"
2476 					  "    | SET %s { TO %s | = %s | FROM CURRENT }\n"
2477 					  "    | AS '%s'\n"
2478 					  "    | AS '%s', '%s'\n"
2479 					  "  } ...",
2480 					  _("name"),
2481 					  _("argmode"),
2482 					  _("argname"),
2483 					  _("argtype"),
2484 					  _("default_expr"),
2485 					  _("lang_name"),
2486 					  _("type_name"),
2487 					  _("configuration_parameter"),
2488 					  _("value"),
2489 					  _("value"),
2490 					  _("definition"),
2491 					  _("obj_file"),
2492 					  _("link_symbol"));
2493 }
2494 
2495 static void
sql_help_CREATE_PUBLICATION(PQExpBuffer buf)2496 sql_help_CREATE_PUBLICATION(PQExpBuffer buf)
2497 {
2498 	appendPQExpBuffer(buf,
2499 					  "CREATE PUBLICATION %s\n"
2500 					  "    [ FOR TABLE [ ONLY ] %s [ * ] [, ...]\n"
2501 					  "      | FOR ALL TABLES ]\n"
2502 					  "    [ WITH ( %s [= %s] [, ... ] ) ]",
2503 					  _("name"),
2504 					  _("table_name"),
2505 					  _("publication_parameter"),
2506 					  _("value"));
2507 }
2508 
2509 static void
sql_help_CREATE_ROLE(PQExpBuffer buf)2510 sql_help_CREATE_ROLE(PQExpBuffer buf)
2511 {
2512 	appendPQExpBuffer(buf,
2513 					  "CREATE ROLE %s [ [ WITH ] %s [ ... ] ]\n"
2514 					  "\n"
2515 					  "%s\n"
2516 					  "\n"
2517 					  "      SUPERUSER | NOSUPERUSER\n"
2518 					  "    | CREATEDB | NOCREATEDB\n"
2519 					  "    | CREATEROLE | NOCREATEROLE\n"
2520 					  "    | INHERIT | NOINHERIT\n"
2521 					  "    | LOGIN | NOLOGIN\n"
2522 					  "    | REPLICATION | NOREPLICATION\n"
2523 					  "    | BYPASSRLS | NOBYPASSRLS\n"
2524 					  "    | CONNECTION LIMIT %s\n"
2525 					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
2526 					  "    | VALID UNTIL '%s'\n"
2527 					  "    | IN ROLE %s [, ...]\n"
2528 					  "    | IN GROUP %s [, ...]\n"
2529 					  "    | ROLE %s [, ...]\n"
2530 					  "    | ADMIN %s [, ...]\n"
2531 					  "    | USER %s [, ...]\n"
2532 					  "    | SYSID %s",
2533 					  _("name"),
2534 					  _("option"),
2535 					  _("where option can be:"),
2536 					  _("connlimit"),
2537 					  _("password"),
2538 					  _("timestamp"),
2539 					  _("role_name"),
2540 					  _("role_name"),
2541 					  _("role_name"),
2542 					  _("role_name"),
2543 					  _("role_name"),
2544 					  _("uid"));
2545 }
2546 
2547 static void
sql_help_CREATE_RULE(PQExpBuffer buf)2548 sql_help_CREATE_RULE(PQExpBuffer buf)
2549 {
2550 	appendPQExpBuffer(buf,
2551 					  "CREATE [ OR REPLACE ] RULE %s AS ON %s\n"
2552 					  "    TO %s [ WHERE %s ]\n"
2553 					  "    DO [ ALSO | INSTEAD ] { NOTHING | %s | ( %s ; %s ... ) }\n"
2554 					  "\n"
2555 					  "%s\n"
2556 					  "\n"
2557 					  "    SELECT | INSERT | UPDATE | DELETE",
2558 					  _("name"),
2559 					  _("event"),
2560 					  _("table_name"),
2561 					  _("condition"),
2562 					  _("command"),
2563 					  _("command"),
2564 					  _("command"),
2565 					  _("where event can be one of:"));
2566 }
2567 
2568 static void
sql_help_CREATE_SCHEMA(PQExpBuffer buf)2569 sql_help_CREATE_SCHEMA(PQExpBuffer buf)
2570 {
2571 	appendPQExpBuffer(buf,
2572 					  "CREATE SCHEMA %s [ AUTHORIZATION %s ] [ %s [ ... ] ]\n"
2573 					  "CREATE SCHEMA AUTHORIZATION %s [ %s [ ... ] ]\n"
2574 					  "CREATE SCHEMA IF NOT EXISTS %s [ AUTHORIZATION %s ]\n"
2575 					  "CREATE SCHEMA IF NOT EXISTS AUTHORIZATION %s\n"
2576 					  "\n"
2577 					  "%s\n"
2578 					  "\n"
2579 					  "    %s\n"
2580 					  "  | CURRENT_USER\n"
2581 					  "  | SESSION_USER",
2582 					  _("schema_name"),
2583 					  _("role_specification"),
2584 					  _("schema_element"),
2585 					  _("role_specification"),
2586 					  _("schema_element"),
2587 					  _("schema_name"),
2588 					  _("role_specification"),
2589 					  _("role_specification"),
2590 					  _("where role_specification can be:"),
2591 					  _("user_name"));
2592 }
2593 
2594 static void
sql_help_CREATE_SEQUENCE(PQExpBuffer buf)2595 sql_help_CREATE_SEQUENCE(PQExpBuffer buf)
2596 {
2597 	appendPQExpBuffer(buf,
2598 					  "CREATE [ TEMPORARY | TEMP ] SEQUENCE [ IF NOT EXISTS ] %s\n"
2599 					  "    [ AS %s ]\n"
2600 					  "    [ INCREMENT [ BY ] %s ]\n"
2601 					  "    [ MINVALUE %s | NO MINVALUE ] [ MAXVALUE %s | NO MAXVALUE ]\n"
2602 					  "    [ START [ WITH ] %s ] [ CACHE %s ] [ [ NO ] CYCLE ]\n"
2603 					  "    [ OWNED BY { %s.%s | NONE } ]",
2604 					  _("name"),
2605 					  _("data_type"),
2606 					  _("increment"),
2607 					  _("minvalue"),
2608 					  _("maxvalue"),
2609 					  _("start"),
2610 					  _("cache"),
2611 					  _("table_name"),
2612 					  _("column_name"));
2613 }
2614 
2615 static void
sql_help_CREATE_SERVER(PQExpBuffer buf)2616 sql_help_CREATE_SERVER(PQExpBuffer buf)
2617 {
2618 	appendPQExpBuffer(buf,
2619 					  "CREATE SERVER [ IF NOT EXISTS ] %s [ TYPE '%s' ] [ VERSION '%s' ]\n"
2620 					  "    FOREIGN DATA WRAPPER %s\n"
2621 					  "    [ OPTIONS ( %s '%s' [, ... ] ) ]",
2622 					  _("server_name"),
2623 					  _("server_type"),
2624 					  _("server_version"),
2625 					  _("fdw_name"),
2626 					  _("option"),
2627 					  _("value"));
2628 }
2629 
2630 static void
sql_help_CREATE_STATISTICS(PQExpBuffer buf)2631 sql_help_CREATE_STATISTICS(PQExpBuffer buf)
2632 {
2633 	appendPQExpBuffer(buf,
2634 					  "CREATE STATISTICS [ IF NOT EXISTS ] %s\n"
2635 					  "    [ ( %s [, ... ] ) ]\n"
2636 					  "    ON %s, %s [, ...]\n"
2637 					  "    FROM %s",
2638 					  _("statistics_name"),
2639 					  _("statistics_kind"),
2640 					  _("column_name"),
2641 					  _("column_name"),
2642 					  _("table_name"));
2643 }
2644 
2645 static void
sql_help_CREATE_SUBSCRIPTION(PQExpBuffer buf)2646 sql_help_CREATE_SUBSCRIPTION(PQExpBuffer buf)
2647 {
2648 	appendPQExpBuffer(buf,
2649 					  "CREATE SUBSCRIPTION %s\n"
2650 					  "    CONNECTION '%s'\n"
2651 					  "    PUBLICATION %s [, ...]\n"
2652 					  "    [ WITH ( %s [= %s] [, ... ] ) ]",
2653 					  _("subscription_name"),
2654 					  _("conninfo"),
2655 					  _("publication_name"),
2656 					  _("subscription_parameter"),
2657 					  _("value"));
2658 }
2659 
2660 static void
sql_help_CREATE_TABLE(PQExpBuffer buf)2661 sql_help_CREATE_TABLE(PQExpBuffer buf)
2662 {
2663 	appendPQExpBuffer(buf,
2664 					  "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s ( [\n"
2665 					  "  { %s %s [ COLLATE %s ] [ %s [ ... ] ]\n"
2666 					  "    | %s\n"
2667 					  "    | LIKE %s [ %s ... ] }\n"
2668 					  "    [, ... ]\n"
2669 					  "] )\n"
2670 					  "[ INHERITS ( %s [, ... ] ) ]\n"
2671 					  "[ PARTITION BY { RANGE | LIST | HASH } ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ... ] ) ]\n"
2672 					  "[ WITH ( %s [= %s] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n"
2673 					  "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
2674 					  "[ TABLESPACE %s ]\n"
2675 					  "\n"
2676 					  "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s\n"
2677 					  "    OF %s [ (\n"
2678 					  "  { %s [ WITH OPTIONS ] [ %s [ ... ] ]\n"
2679 					  "    | %s }\n"
2680 					  "    [, ... ]\n"
2681 					  ") ]\n"
2682 					  "[ PARTITION BY { RANGE | LIST | HASH } ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ... ] ) ]\n"
2683 					  "[ WITH ( %s [= %s] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n"
2684 					  "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
2685 					  "[ TABLESPACE %s ]\n"
2686 					  "\n"
2687 					  "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s\n"
2688 					  "    PARTITION OF %s [ (\n"
2689 					  "  { %s [ WITH OPTIONS ] [ %s [ ... ] ]\n"
2690 					  "    | %s }\n"
2691 					  "    [, ... ]\n"
2692 					  ") ] { FOR VALUES %s | DEFAULT }\n"
2693 					  "[ PARTITION BY { RANGE | LIST | HASH } ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ... ] ) ]\n"
2694 					  "[ WITH ( %s [= %s] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n"
2695 					  "[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
2696 					  "[ TABLESPACE %s ]\n"
2697 					  "\n"
2698 					  "%s\n"
2699 					  "\n"
2700 					  "[ CONSTRAINT %s ]\n"
2701 					  "{ NOT NULL |\n"
2702 					  "  NULL |\n"
2703 					  "  CHECK ( %s ) [ NO INHERIT ] |\n"
2704 					  "  DEFAULT %s |\n"
2705 					  "  GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( %s ) ] |\n"
2706 					  "  UNIQUE %s |\n"
2707 					  "  PRIMARY KEY %s |\n"
2708 					  "  REFERENCES %s [ ( %s ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]\n"
2709 					  "    [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
2710 					  "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
2711 					  "\n"
2712 					  "%s\n"
2713 					  "\n"
2714 					  "[ CONSTRAINT %s ]\n"
2715 					  "{ CHECK ( %s ) [ NO INHERIT ] |\n"
2716 					  "  UNIQUE ( %s [, ... ] ) %s |\n"
2717 					  "  PRIMARY KEY ( %s [, ... ] ) %s |\n"
2718 					  "  EXCLUDE [ USING %s ] ( %s WITH %s [, ... ] ) %s [ WHERE ( %s ) ] |\n"
2719 					  "  FOREIGN KEY ( %s [, ... ] ) REFERENCES %s [ ( %s [, ... ] ) ]\n"
2720 					  "    [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE %s ] [ ON UPDATE %s ] }\n"
2721 					  "[ DEFERRABLE | NOT DEFERRABLE ] [ INITIALLY DEFERRED | INITIALLY IMMEDIATE ]\n"
2722 					  "\n"
2723 					  "%s\n"
2724 					  "\n"
2725 					  "{ INCLUDING | EXCLUDING } { COMMENTS | CONSTRAINTS | DEFAULTS | IDENTITY | INDEXES | STATISTICS | STORAGE | ALL }\n"
2726 					  "\n"
2727 					  "%s\n"
2728 					  "\n"
2729 					  "IN ( { %s | %s | TRUE | FALSE | NULL } [, ...] ) |\n"
2730 					  "FROM ( { %s | %s | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] )\n"
2731 					  "  TO ( { %s | %s | TRUE | FALSE | MINVALUE | MAXVALUE } [, ...] ) |\n"
2732 					  "WITH ( MODULUS %s, REMAINDER %s )\n"
2733 					  "\n"
2734 					  "%s\n"
2735 					  "\n"
2736 					  "[ INCLUDE ( %s [, ... ] ) ]\n"
2737 					  "[ WITH ( %s [= %s] [, ... ] ) ]\n"
2738 					  "[ USING INDEX TABLESPACE %s ]\n"
2739 					  "\n"
2740 					  "%s\n"
2741 					  "\n"
2742 					  "{ %s | ( %s ) } [ %s ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ]",
2743 					  _("table_name"),
2744 					  _("column_name"),
2745 					  _("data_type"),
2746 					  _("collation"),
2747 					  _("column_constraint"),
2748 					  _("table_constraint"),
2749 					  _("source_table"),
2750 					  _("like_option"),
2751 					  _("parent_table"),
2752 					  _("column_name"),
2753 					  _("expression"),
2754 					  _("collation"),
2755 					  _("opclass"),
2756 					  _("storage_parameter"),
2757 					  _("value"),
2758 					  _("tablespace_name"),
2759 					  _("table_name"),
2760 					  _("type_name"),
2761 					  _("column_name"),
2762 					  _("column_constraint"),
2763 					  _("table_constraint"),
2764 					  _("column_name"),
2765 					  _("expression"),
2766 					  _("collation"),
2767 					  _("opclass"),
2768 					  _("storage_parameter"),
2769 					  _("value"),
2770 					  _("tablespace_name"),
2771 					  _("table_name"),
2772 					  _("parent_table"),
2773 					  _("column_name"),
2774 					  _("column_constraint"),
2775 					  _("table_constraint"),
2776 					  _("partition_bound_spec"),
2777 					  _("column_name"),
2778 					  _("expression"),
2779 					  _("collation"),
2780 					  _("opclass"),
2781 					  _("storage_parameter"),
2782 					  _("value"),
2783 					  _("tablespace_name"),
2784 					  _("where column_constraint is:"),
2785 					  _("constraint_name"),
2786 					  _("expression"),
2787 					  _("default_expr"),
2788 					  _("sequence_options"),
2789 					  _("index_parameters"),
2790 					  _("index_parameters"),
2791 					  _("reftable"),
2792 					  _("refcolumn"),
2793 					  _("action"),
2794 					  _("action"),
2795 					  _("and table_constraint is:"),
2796 					  _("constraint_name"),
2797 					  _("expression"),
2798 					  _("column_name"),
2799 					  _("index_parameters"),
2800 					  _("column_name"),
2801 					  _("index_parameters"),
2802 					  _("index_method"),
2803 					  _("exclude_element"),
2804 					  _("operator"),
2805 					  _("index_parameters"),
2806 					  _("predicate"),
2807 					  _("column_name"),
2808 					  _("reftable"),
2809 					  _("refcolumn"),
2810 					  _("action"),
2811 					  _("action"),
2812 					  _("and like_option is:"),
2813 					  _("and partition_bound_spec is:"),
2814 					  _("numeric_literal"),
2815 					  _("string_literal"),
2816 					  _("numeric_literal"),
2817 					  _("string_literal"),
2818 					  _("numeric_literal"),
2819 					  _("string_literal"),
2820 					  _("numeric_literal"),
2821 					  _("numeric_literal"),
2822 					  _("index_parameters in UNIQUE, PRIMARY KEY, and EXCLUDE constraints are:"),
2823 					  _("column_name"),
2824 					  _("storage_parameter"),
2825 					  _("value"),
2826 					  _("tablespace_name"),
2827 					  _("exclude_element in an EXCLUDE constraint is:"),
2828 					  _("column_name"),
2829 					  _("expression"),
2830 					  _("opclass"));
2831 }
2832 
2833 static void
sql_help_CREATE_TABLE_AS(PQExpBuffer buf)2834 sql_help_CREATE_TABLE_AS(PQExpBuffer buf)
2835 {
2836 	appendPQExpBuffer(buf,
2837 					  "CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] %s\n"
2838 					  "    [ (%s [, ...] ) ]\n"
2839 					  "    [ WITH ( %s [= %s] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n"
2840 					  "    [ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n"
2841 					  "    [ TABLESPACE %s ]\n"
2842 					  "    AS %s\n"
2843 					  "    [ WITH [ NO ] DATA ]",
2844 					  _("table_name"),
2845 					  _("column_name"),
2846 					  _("storage_parameter"),
2847 					  _("value"),
2848 					  _("tablespace_name"),
2849 					  _("query"));
2850 }
2851 
2852 static void
sql_help_CREATE_TABLESPACE(PQExpBuffer buf)2853 sql_help_CREATE_TABLESPACE(PQExpBuffer buf)
2854 {
2855 	appendPQExpBuffer(buf,
2856 					  "CREATE TABLESPACE %s\n"
2857 					  "    [ OWNER { %s | CURRENT_USER | SESSION_USER } ]\n"
2858 					  "    LOCATION '%s'\n"
2859 					  "    [ WITH ( %s = %s [, ... ] ) ]",
2860 					  _("tablespace_name"),
2861 					  _("new_owner"),
2862 					  _("directory"),
2863 					  _("tablespace_option"),
2864 					  _("value"));
2865 }
2866 
2867 static void
sql_help_CREATE_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)2868 sql_help_CREATE_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)
2869 {
2870 	appendPQExpBuffer(buf,
2871 					  "CREATE TEXT SEARCH CONFIGURATION %s (\n"
2872 					  "    PARSER = %s |\n"
2873 					  "    COPY = %s\n"
2874 					  ")",
2875 					  _("name"),
2876 					  _("parser_name"),
2877 					  _("source_config"));
2878 }
2879 
2880 static void
sql_help_CREATE_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)2881 sql_help_CREATE_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)
2882 {
2883 	appendPQExpBuffer(buf,
2884 					  "CREATE TEXT SEARCH DICTIONARY %s (\n"
2885 					  "    TEMPLATE = %s\n"
2886 					  "    [, %s = %s [, ... ]]\n"
2887 					  ")",
2888 					  _("name"),
2889 					  _("template"),
2890 					  _("option"),
2891 					  _("value"));
2892 }
2893 
2894 static void
sql_help_CREATE_TEXT_SEARCH_PARSER(PQExpBuffer buf)2895 sql_help_CREATE_TEXT_SEARCH_PARSER(PQExpBuffer buf)
2896 {
2897 	appendPQExpBuffer(buf,
2898 					  "CREATE TEXT SEARCH PARSER %s (\n"
2899 					  "    START = %s ,\n"
2900 					  "    GETTOKEN = %s ,\n"
2901 					  "    END = %s ,\n"
2902 					  "    LEXTYPES = %s\n"
2903 					  "    [, HEADLINE = %s ]\n"
2904 					  ")",
2905 					  _("name"),
2906 					  _("start_function"),
2907 					  _("gettoken_function"),
2908 					  _("end_function"),
2909 					  _("lextypes_function"),
2910 					  _("headline_function"));
2911 }
2912 
2913 static void
sql_help_CREATE_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)2914 sql_help_CREATE_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)
2915 {
2916 	appendPQExpBuffer(buf,
2917 					  "CREATE TEXT SEARCH TEMPLATE %s (\n"
2918 					  "    [ INIT = %s , ]\n"
2919 					  "    LEXIZE = %s\n"
2920 					  ")",
2921 					  _("name"),
2922 					  _("init_function"),
2923 					  _("lexize_function"));
2924 }
2925 
2926 static void
sql_help_CREATE_TRANSFORM(PQExpBuffer buf)2927 sql_help_CREATE_TRANSFORM(PQExpBuffer buf)
2928 {
2929 	appendPQExpBuffer(buf,
2930 					  "CREATE [ OR REPLACE ] TRANSFORM FOR %s LANGUAGE %s (\n"
2931 					  "    FROM SQL WITH FUNCTION %s [ (%s [, ...]) ],\n"
2932 					  "    TO SQL WITH FUNCTION %s [ (%s [, ...]) ]\n"
2933 					  ");",
2934 					  _("type_name"),
2935 					  _("lang_name"),
2936 					  _("from_sql_function_name"),
2937 					  _("argument_type"),
2938 					  _("to_sql_function_name"),
2939 					  _("argument_type"));
2940 }
2941 
2942 static void
sql_help_CREATE_TRIGGER(PQExpBuffer buf)2943 sql_help_CREATE_TRIGGER(PQExpBuffer buf)
2944 {
2945 	appendPQExpBuffer(buf,
2946 					  "CREATE [ CONSTRAINT ] TRIGGER %s { BEFORE | AFTER | INSTEAD OF } { %s [ OR ... ] }\n"
2947 					  "    ON %s\n"
2948 					  "    [ FROM %s ]\n"
2949 					  "    [ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ]\n"
2950 					  "    [ REFERENCING { { OLD | NEW } TABLE [ AS ] %s } [ ... ] ]\n"
2951 					  "    [ FOR [ EACH ] { ROW | STATEMENT } ]\n"
2952 					  "    [ WHEN ( %s ) ]\n"
2953 					  "    EXECUTE { FUNCTION | PROCEDURE } %s ( %s )\n"
2954 					  "\n"
2955 					  "%s\n"
2956 					  "\n"
2957 					  "    INSERT\n"
2958 					  "    UPDATE [ OF %s [, ... ] ]\n"
2959 					  "    DELETE\n"
2960 					  "    TRUNCATE",
2961 					  _("name"),
2962 					  _("event"),
2963 					  _("table_name"),
2964 					  _("referenced_table_name"),
2965 					  _("transition_relation_name"),
2966 					  _("condition"),
2967 					  _("function_name"),
2968 					  _("arguments"),
2969 					  _("where event can be one of:"),
2970 					  _("column_name"));
2971 }
2972 
2973 static void
sql_help_CREATE_TYPE(PQExpBuffer buf)2974 sql_help_CREATE_TYPE(PQExpBuffer buf)
2975 {
2976 	appendPQExpBuffer(buf,
2977 					  "CREATE TYPE %s AS\n"
2978 					  "    ( [ %s %s [ COLLATE %s ] [, ... ] ] )\n"
2979 					  "\n"
2980 					  "CREATE TYPE %s AS ENUM\n"
2981 					  "    ( [ '%s' [, ... ] ] )\n"
2982 					  "\n"
2983 					  "CREATE TYPE %s AS RANGE (\n"
2984 					  "    SUBTYPE = %s\n"
2985 					  "    [ , SUBTYPE_OPCLASS = %s ]\n"
2986 					  "    [ , COLLATION = %s ]\n"
2987 					  "    [ , CANONICAL = %s ]\n"
2988 					  "    [ , SUBTYPE_DIFF = %s ]\n"
2989 					  ")\n"
2990 					  "\n"
2991 					  "CREATE TYPE %s (\n"
2992 					  "    INPUT = %s,\n"
2993 					  "    OUTPUT = %s\n"
2994 					  "    [ , RECEIVE = %s ]\n"
2995 					  "    [ , SEND = %s ]\n"
2996 					  "    [ , TYPMOD_IN = %s ]\n"
2997 					  "    [ , TYPMOD_OUT = %s ]\n"
2998 					  "    [ , ANALYZE = %s ]\n"
2999 					  "    [ , INTERNALLENGTH = { %s | VARIABLE } ]\n"
3000 					  "    [ , PASSEDBYVALUE ]\n"
3001 					  "    [ , ALIGNMENT = %s ]\n"
3002 					  "    [ , STORAGE = %s ]\n"
3003 					  "    [ , LIKE = %s ]\n"
3004 					  "    [ , CATEGORY = %s ]\n"
3005 					  "    [ , PREFERRED = %s ]\n"
3006 					  "    [ , DEFAULT = %s ]\n"
3007 					  "    [ , ELEMENT = %s ]\n"
3008 					  "    [ , DELIMITER = %s ]\n"
3009 					  "    [ , COLLATABLE = %s ]\n"
3010 					  ")\n"
3011 					  "\n"
3012 					  "CREATE TYPE %s",
3013 					  _("name"),
3014 					  _("attribute_name"),
3015 					  _("data_type"),
3016 					  _("collation"),
3017 					  _("name"),
3018 					  _("label"),
3019 					  _("name"),
3020 					  _("subtype"),
3021 					  _("subtype_operator_class"),
3022 					  _("collation"),
3023 					  _("canonical_function"),
3024 					  _("subtype_diff_function"),
3025 					  _("name"),
3026 					  _("input_function"),
3027 					  _("output_function"),
3028 					  _("receive_function"),
3029 					  _("send_function"),
3030 					  _("type_modifier_input_function"),
3031 					  _("type_modifier_output_function"),
3032 					  _("analyze_function"),
3033 					  _("internallength"),
3034 					  _("alignment"),
3035 					  _("storage"),
3036 					  _("like_type"),
3037 					  _("category"),
3038 					  _("preferred"),
3039 					  _("default"),
3040 					  _("element"),
3041 					  _("delimiter"),
3042 					  _("collatable"),
3043 					  _("name"));
3044 }
3045 
3046 static void
sql_help_CREATE_USER(PQExpBuffer buf)3047 sql_help_CREATE_USER(PQExpBuffer buf)
3048 {
3049 	appendPQExpBuffer(buf,
3050 					  "CREATE USER %s [ [ WITH ] %s [ ... ] ]\n"
3051 					  "\n"
3052 					  "%s\n"
3053 					  "\n"
3054 					  "      SUPERUSER | NOSUPERUSER\n"
3055 					  "    | CREATEDB | NOCREATEDB\n"
3056 					  "    | CREATEROLE | NOCREATEROLE\n"
3057 					  "    | INHERIT | NOINHERIT\n"
3058 					  "    | LOGIN | NOLOGIN\n"
3059 					  "    | REPLICATION | NOREPLICATION\n"
3060 					  "    | BYPASSRLS | NOBYPASSRLS\n"
3061 					  "    | CONNECTION LIMIT %s\n"
3062 					  "    | [ ENCRYPTED ] PASSWORD '%s' | PASSWORD NULL\n"
3063 					  "    | VALID UNTIL '%s'\n"
3064 					  "    | IN ROLE %s [, ...]\n"
3065 					  "    | IN GROUP %s [, ...]\n"
3066 					  "    | ROLE %s [, ...]\n"
3067 					  "    | ADMIN %s [, ...]\n"
3068 					  "    | USER %s [, ...]\n"
3069 					  "    | SYSID %s",
3070 					  _("name"),
3071 					  _("option"),
3072 					  _("where option can be:"),
3073 					  _("connlimit"),
3074 					  _("password"),
3075 					  _("timestamp"),
3076 					  _("role_name"),
3077 					  _("role_name"),
3078 					  _("role_name"),
3079 					  _("role_name"),
3080 					  _("role_name"),
3081 					  _("uid"));
3082 }
3083 
3084 static void
sql_help_CREATE_USER_MAPPING(PQExpBuffer buf)3085 sql_help_CREATE_USER_MAPPING(PQExpBuffer buf)
3086 {
3087 	appendPQExpBuffer(buf,
3088 					  "CREATE USER MAPPING [ IF NOT EXISTS ] FOR { %s | USER | CURRENT_USER | PUBLIC }\n"
3089 					  "    SERVER %s\n"
3090 					  "    [ OPTIONS ( %s '%s' [ , ... ] ) ]",
3091 					  _("user_name"),
3092 					  _("server_name"),
3093 					  _("option"),
3094 					  _("value"));
3095 }
3096 
3097 static void
sql_help_CREATE_VIEW(PQExpBuffer buf)3098 sql_help_CREATE_VIEW(PQExpBuffer buf)
3099 {
3100 	appendPQExpBuffer(buf,
3101 					  "CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW %s [ ( %s [, ...] ) ]\n"
3102 					  "    [ WITH ( %s [= %s] [, ... ] ) ]\n"
3103 					  "    AS %s\n"
3104 					  "    [ WITH [ CASCADED | LOCAL ] CHECK OPTION ]",
3105 					  _("name"),
3106 					  _("column_name"),
3107 					  _("view_option_name"),
3108 					  _("view_option_value"),
3109 					  _("query"));
3110 }
3111 
3112 static void
sql_help_DEALLOCATE(PQExpBuffer buf)3113 sql_help_DEALLOCATE(PQExpBuffer buf)
3114 {
3115 	appendPQExpBuffer(buf,
3116 					  "DEALLOCATE [ PREPARE ] { %s | ALL }",
3117 					  _("name"));
3118 }
3119 
3120 static void
sql_help_DECLARE(PQExpBuffer buf)3121 sql_help_DECLARE(PQExpBuffer buf)
3122 {
3123 	appendPQExpBuffer(buf,
3124 					  "DECLARE %s [ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]\n"
3125 					  "    CURSOR [ { WITH | WITHOUT } HOLD ] FOR %s",
3126 					  _("name"),
3127 					  _("query"));
3128 }
3129 
3130 static void
sql_help_DELETE(PQExpBuffer buf)3131 sql_help_DELETE(PQExpBuffer buf)
3132 {
3133 	appendPQExpBuffer(buf,
3134 					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
3135 					  "DELETE FROM [ ONLY ] %s [ * ] [ [ AS ] %s ]\n"
3136 					  "    [ USING %s [, ...] ]\n"
3137 					  "    [ WHERE %s | WHERE CURRENT OF %s ]\n"
3138 					  "    [ RETURNING * | %s [ [ AS ] %s ] [, ...] ]",
3139 					  _("with_query"),
3140 					  _("table_name"),
3141 					  _("alias"),
3142 					  _("from_item"),
3143 					  _("condition"),
3144 					  _("cursor_name"),
3145 					  _("output_expression"),
3146 					  _("output_name"));
3147 }
3148 
3149 static void
sql_help_DISCARD(PQExpBuffer buf)3150 sql_help_DISCARD(PQExpBuffer buf)
3151 {
3152 	appendPQExpBuffer(buf,
3153 					  "DISCARD { ALL | PLANS | SEQUENCES | TEMPORARY | TEMP }");
3154 }
3155 
3156 static void
sql_help_DO(PQExpBuffer buf)3157 sql_help_DO(PQExpBuffer buf)
3158 {
3159 	appendPQExpBuffer(buf,
3160 					  "DO [ LANGUAGE %s ] %s",
3161 					  _("lang_name"),
3162 					  _("code"));
3163 }
3164 
3165 static void
sql_help_DROP_ACCESS_METHOD(PQExpBuffer buf)3166 sql_help_DROP_ACCESS_METHOD(PQExpBuffer buf)
3167 {
3168 	appendPQExpBuffer(buf,
3169 					  "DROP ACCESS METHOD [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3170 					  _("name"));
3171 }
3172 
3173 static void
sql_help_DROP_AGGREGATE(PQExpBuffer buf)3174 sql_help_DROP_AGGREGATE(PQExpBuffer buf)
3175 {
3176 	appendPQExpBuffer(buf,
3177 					  "DROP AGGREGATE [ IF EXISTS ] %s ( %s ) [, ...] [ CASCADE | RESTRICT ]\n"
3178 					  "\n"
3179 					  "%s\n"
3180 					  "\n"
3181 					  "* |\n"
3182 					  "[ %s ] [ %s ] %s [ , ... ] |\n"
3183 					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
3184 					  _("name"),
3185 					  _("aggregate_signature"),
3186 					  _("where aggregate_signature is:"),
3187 					  _("argmode"),
3188 					  _("argname"),
3189 					  _("argtype"),
3190 					  _("argmode"),
3191 					  _("argname"),
3192 					  _("argtype"),
3193 					  _("argmode"),
3194 					  _("argname"),
3195 					  _("argtype"));
3196 }
3197 
3198 static void
sql_help_DROP_CAST(PQExpBuffer buf)3199 sql_help_DROP_CAST(PQExpBuffer buf)
3200 {
3201 	appendPQExpBuffer(buf,
3202 					  "DROP CAST [ IF EXISTS ] (%s AS %s) [ CASCADE | RESTRICT ]",
3203 					  _("source_type"),
3204 					  _("target_type"));
3205 }
3206 
3207 static void
sql_help_DROP_COLLATION(PQExpBuffer buf)3208 sql_help_DROP_COLLATION(PQExpBuffer buf)
3209 {
3210 	appendPQExpBuffer(buf,
3211 					  "DROP COLLATION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3212 					  _("name"));
3213 }
3214 
3215 static void
sql_help_DROP_CONVERSION(PQExpBuffer buf)3216 sql_help_DROP_CONVERSION(PQExpBuffer buf)
3217 {
3218 	appendPQExpBuffer(buf,
3219 					  "DROP CONVERSION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3220 					  _("name"));
3221 }
3222 
3223 static void
sql_help_DROP_DATABASE(PQExpBuffer buf)3224 sql_help_DROP_DATABASE(PQExpBuffer buf)
3225 {
3226 	appendPQExpBuffer(buf,
3227 					  "DROP DATABASE [ IF EXISTS ] %s",
3228 					  _("name"));
3229 }
3230 
3231 static void
sql_help_DROP_DOMAIN(PQExpBuffer buf)3232 sql_help_DROP_DOMAIN(PQExpBuffer buf)
3233 {
3234 	appendPQExpBuffer(buf,
3235 					  "DROP DOMAIN [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3236 					  _("name"));
3237 }
3238 
3239 static void
sql_help_DROP_EVENT_TRIGGER(PQExpBuffer buf)3240 sql_help_DROP_EVENT_TRIGGER(PQExpBuffer buf)
3241 {
3242 	appendPQExpBuffer(buf,
3243 					  "DROP EVENT TRIGGER [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3244 					  _("name"));
3245 }
3246 
3247 static void
sql_help_DROP_EXTENSION(PQExpBuffer buf)3248 sql_help_DROP_EXTENSION(PQExpBuffer buf)
3249 {
3250 	appendPQExpBuffer(buf,
3251 					  "DROP EXTENSION [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3252 					  _("name"));
3253 }
3254 
3255 static void
sql_help_DROP_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)3256 sql_help_DROP_FOREIGN_DATA_WRAPPER(PQExpBuffer buf)
3257 {
3258 	appendPQExpBuffer(buf,
3259 					  "DROP FOREIGN DATA WRAPPER [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3260 					  _("name"));
3261 }
3262 
3263 static void
sql_help_DROP_FOREIGN_TABLE(PQExpBuffer buf)3264 sql_help_DROP_FOREIGN_TABLE(PQExpBuffer buf)
3265 {
3266 	appendPQExpBuffer(buf,
3267 					  "DROP FOREIGN TABLE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3268 					  _("name"));
3269 }
3270 
3271 static void
sql_help_DROP_FUNCTION(PQExpBuffer buf)3272 sql_help_DROP_FUNCTION(PQExpBuffer buf)
3273 {
3274 	appendPQExpBuffer(buf,
3275 					  "DROP FUNCTION [ IF EXISTS ] %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
3276 					  "    [ CASCADE | RESTRICT ]",
3277 					  _("name"),
3278 					  _("argmode"),
3279 					  _("argname"),
3280 					  _("argtype"));
3281 }
3282 
3283 static void
sql_help_DROP_GROUP(PQExpBuffer buf)3284 sql_help_DROP_GROUP(PQExpBuffer buf)
3285 {
3286 	appendPQExpBuffer(buf,
3287 					  "DROP GROUP [ IF EXISTS ] %s [, ...]",
3288 					  _("name"));
3289 }
3290 
3291 static void
sql_help_DROP_INDEX(PQExpBuffer buf)3292 sql_help_DROP_INDEX(PQExpBuffer buf)
3293 {
3294 	appendPQExpBuffer(buf,
3295 					  "DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3296 					  _("name"));
3297 }
3298 
3299 static void
sql_help_DROP_LANGUAGE(PQExpBuffer buf)3300 sql_help_DROP_LANGUAGE(PQExpBuffer buf)
3301 {
3302 	appendPQExpBuffer(buf,
3303 					  "DROP [ PROCEDURAL ] LANGUAGE [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3304 					  _("name"));
3305 }
3306 
3307 static void
sql_help_DROP_MATERIALIZED_VIEW(PQExpBuffer buf)3308 sql_help_DROP_MATERIALIZED_VIEW(PQExpBuffer buf)
3309 {
3310 	appendPQExpBuffer(buf,
3311 					  "DROP MATERIALIZED VIEW [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3312 					  _("name"));
3313 }
3314 
3315 static void
sql_help_DROP_OPERATOR(PQExpBuffer buf)3316 sql_help_DROP_OPERATOR(PQExpBuffer buf)
3317 {
3318 	appendPQExpBuffer(buf,
3319 					  "DROP OPERATOR [ IF EXISTS ] %s ( { %s | NONE } , { %s | NONE } ) [, ...] [ CASCADE | RESTRICT ]",
3320 					  _("name"),
3321 					  _("left_type"),
3322 					  _("right_type"));
3323 }
3324 
3325 static void
sql_help_DROP_OPERATOR_CLASS(PQExpBuffer buf)3326 sql_help_DROP_OPERATOR_CLASS(PQExpBuffer buf)
3327 {
3328 	appendPQExpBuffer(buf,
3329 					  "DROP OPERATOR CLASS [ IF EXISTS ] %s USING %s [ CASCADE | RESTRICT ]",
3330 					  _("name"),
3331 					  _("index_method"));
3332 }
3333 
3334 static void
sql_help_DROP_OPERATOR_FAMILY(PQExpBuffer buf)3335 sql_help_DROP_OPERATOR_FAMILY(PQExpBuffer buf)
3336 {
3337 	appendPQExpBuffer(buf,
3338 					  "DROP OPERATOR FAMILY [ IF EXISTS ] %s USING %s [ CASCADE | RESTRICT ]",
3339 					  _("name"),
3340 					  _("index_method"));
3341 }
3342 
3343 static void
sql_help_DROP_OWNED(PQExpBuffer buf)3344 sql_help_DROP_OWNED(PQExpBuffer buf)
3345 {
3346 	appendPQExpBuffer(buf,
3347 					  "DROP OWNED BY { %s | CURRENT_USER | SESSION_USER } [, ...] [ CASCADE | RESTRICT ]",
3348 					  _("name"));
3349 }
3350 
3351 static void
sql_help_DROP_POLICY(PQExpBuffer buf)3352 sql_help_DROP_POLICY(PQExpBuffer buf)
3353 {
3354 	appendPQExpBuffer(buf,
3355 					  "DROP POLICY [ IF EXISTS ] %s ON %s [ CASCADE | RESTRICT ]",
3356 					  _("name"),
3357 					  _("table_name"));
3358 }
3359 
3360 static void
sql_help_DROP_PROCEDURE(PQExpBuffer buf)3361 sql_help_DROP_PROCEDURE(PQExpBuffer buf)
3362 {
3363 	appendPQExpBuffer(buf,
3364 					  "DROP PROCEDURE [ IF EXISTS ] %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
3365 					  "    [ CASCADE | RESTRICT ]",
3366 					  _("name"),
3367 					  _("argmode"),
3368 					  _("argname"),
3369 					  _("argtype"));
3370 }
3371 
3372 static void
sql_help_DROP_PUBLICATION(PQExpBuffer buf)3373 sql_help_DROP_PUBLICATION(PQExpBuffer buf)
3374 {
3375 	appendPQExpBuffer(buf,
3376 					  "DROP PUBLICATION [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3377 					  _("name"));
3378 }
3379 
3380 static void
sql_help_DROP_ROLE(PQExpBuffer buf)3381 sql_help_DROP_ROLE(PQExpBuffer buf)
3382 {
3383 	appendPQExpBuffer(buf,
3384 					  "DROP ROLE [ IF EXISTS ] %s [, ...]",
3385 					  _("name"));
3386 }
3387 
3388 static void
sql_help_DROP_ROUTINE(PQExpBuffer buf)3389 sql_help_DROP_ROUTINE(PQExpBuffer buf)
3390 {
3391 	appendPQExpBuffer(buf,
3392 					  "DROP ROUTINE [ IF EXISTS ] %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
3393 					  "    [ CASCADE | RESTRICT ]",
3394 					  _("name"),
3395 					  _("argmode"),
3396 					  _("argname"),
3397 					  _("argtype"));
3398 }
3399 
3400 static void
sql_help_DROP_RULE(PQExpBuffer buf)3401 sql_help_DROP_RULE(PQExpBuffer buf)
3402 {
3403 	appendPQExpBuffer(buf,
3404 					  "DROP RULE [ IF EXISTS ] %s ON %s [ CASCADE | RESTRICT ]",
3405 					  _("name"),
3406 					  _("table_name"));
3407 }
3408 
3409 static void
sql_help_DROP_SCHEMA(PQExpBuffer buf)3410 sql_help_DROP_SCHEMA(PQExpBuffer buf)
3411 {
3412 	appendPQExpBuffer(buf,
3413 					  "DROP SCHEMA [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3414 					  _("name"));
3415 }
3416 
3417 static void
sql_help_DROP_SEQUENCE(PQExpBuffer buf)3418 sql_help_DROP_SEQUENCE(PQExpBuffer buf)
3419 {
3420 	appendPQExpBuffer(buf,
3421 					  "DROP SEQUENCE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3422 					  _("name"));
3423 }
3424 
3425 static void
sql_help_DROP_SERVER(PQExpBuffer buf)3426 sql_help_DROP_SERVER(PQExpBuffer buf)
3427 {
3428 	appendPQExpBuffer(buf,
3429 					  "DROP SERVER [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3430 					  _("name"));
3431 }
3432 
3433 static void
sql_help_DROP_STATISTICS(PQExpBuffer buf)3434 sql_help_DROP_STATISTICS(PQExpBuffer buf)
3435 {
3436 	appendPQExpBuffer(buf,
3437 					  "DROP STATISTICS [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3438 					  _("name"));
3439 }
3440 
3441 static void
sql_help_DROP_SUBSCRIPTION(PQExpBuffer buf)3442 sql_help_DROP_SUBSCRIPTION(PQExpBuffer buf)
3443 {
3444 	appendPQExpBuffer(buf,
3445 					  "DROP SUBSCRIPTION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3446 					  _("name"));
3447 }
3448 
3449 static void
sql_help_DROP_TABLE(PQExpBuffer buf)3450 sql_help_DROP_TABLE(PQExpBuffer buf)
3451 {
3452 	appendPQExpBuffer(buf,
3453 					  "DROP TABLE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3454 					  _("name"));
3455 }
3456 
3457 static void
sql_help_DROP_TABLESPACE(PQExpBuffer buf)3458 sql_help_DROP_TABLESPACE(PQExpBuffer buf)
3459 {
3460 	appendPQExpBuffer(buf,
3461 					  "DROP TABLESPACE [ IF EXISTS ] %s",
3462 					  _("name"));
3463 }
3464 
3465 static void
sql_help_DROP_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)3466 sql_help_DROP_TEXT_SEARCH_CONFIGURATION(PQExpBuffer buf)
3467 {
3468 	appendPQExpBuffer(buf,
3469 					  "DROP TEXT SEARCH CONFIGURATION [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3470 					  _("name"));
3471 }
3472 
3473 static void
sql_help_DROP_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)3474 sql_help_DROP_TEXT_SEARCH_DICTIONARY(PQExpBuffer buf)
3475 {
3476 	appendPQExpBuffer(buf,
3477 					  "DROP TEXT SEARCH DICTIONARY [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3478 					  _("name"));
3479 }
3480 
3481 static void
sql_help_DROP_TEXT_SEARCH_PARSER(PQExpBuffer buf)3482 sql_help_DROP_TEXT_SEARCH_PARSER(PQExpBuffer buf)
3483 {
3484 	appendPQExpBuffer(buf,
3485 					  "DROP TEXT SEARCH PARSER [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3486 					  _("name"));
3487 }
3488 
3489 static void
sql_help_DROP_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)3490 sql_help_DROP_TEXT_SEARCH_TEMPLATE(PQExpBuffer buf)
3491 {
3492 	appendPQExpBuffer(buf,
3493 					  "DROP TEXT SEARCH TEMPLATE [ IF EXISTS ] %s [ CASCADE | RESTRICT ]",
3494 					  _("name"));
3495 }
3496 
3497 static void
sql_help_DROP_TRANSFORM(PQExpBuffer buf)3498 sql_help_DROP_TRANSFORM(PQExpBuffer buf)
3499 {
3500 	appendPQExpBuffer(buf,
3501 					  "DROP TRANSFORM [ IF EXISTS ] FOR %s LANGUAGE %s [ CASCADE | RESTRICT ]",
3502 					  _("type_name"),
3503 					  _("lang_name"));
3504 }
3505 
3506 static void
sql_help_DROP_TRIGGER(PQExpBuffer buf)3507 sql_help_DROP_TRIGGER(PQExpBuffer buf)
3508 {
3509 	appendPQExpBuffer(buf,
3510 					  "DROP TRIGGER [ IF EXISTS ] %s ON %s [ CASCADE | RESTRICT ]",
3511 					  _("name"),
3512 					  _("table_name"));
3513 }
3514 
3515 static void
sql_help_DROP_TYPE(PQExpBuffer buf)3516 sql_help_DROP_TYPE(PQExpBuffer buf)
3517 {
3518 	appendPQExpBuffer(buf,
3519 					  "DROP TYPE [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3520 					  _("name"));
3521 }
3522 
3523 static void
sql_help_DROP_USER(PQExpBuffer buf)3524 sql_help_DROP_USER(PQExpBuffer buf)
3525 {
3526 	appendPQExpBuffer(buf,
3527 					  "DROP USER [ IF EXISTS ] %s [, ...]",
3528 					  _("name"));
3529 }
3530 
3531 static void
sql_help_DROP_USER_MAPPING(PQExpBuffer buf)3532 sql_help_DROP_USER_MAPPING(PQExpBuffer buf)
3533 {
3534 	appendPQExpBuffer(buf,
3535 					  "DROP USER MAPPING [ IF EXISTS ] FOR { %s | USER | CURRENT_USER | PUBLIC } SERVER %s",
3536 					  _("user_name"),
3537 					  _("server_name"));
3538 }
3539 
3540 static void
sql_help_DROP_VIEW(PQExpBuffer buf)3541 sql_help_DROP_VIEW(PQExpBuffer buf)
3542 {
3543 	appendPQExpBuffer(buf,
3544 					  "DROP VIEW [ IF EXISTS ] %s [, ...] [ CASCADE | RESTRICT ]",
3545 					  _("name"));
3546 }
3547 
3548 static void
sql_help_END(PQExpBuffer buf)3549 sql_help_END(PQExpBuffer buf)
3550 {
3551 	appendPQExpBuffer(buf,
3552 					  "END [ WORK | TRANSACTION ]");
3553 }
3554 
3555 static void
sql_help_EXECUTE(PQExpBuffer buf)3556 sql_help_EXECUTE(PQExpBuffer buf)
3557 {
3558 	appendPQExpBuffer(buf,
3559 					  "EXECUTE %s [ ( %s [, ...] ) ]",
3560 					  _("name"),
3561 					  _("parameter"));
3562 }
3563 
3564 static void
sql_help_EXPLAIN(PQExpBuffer buf)3565 sql_help_EXPLAIN(PQExpBuffer buf)
3566 {
3567 	appendPQExpBuffer(buf,
3568 					  "EXPLAIN [ ( %s [, ...] ) ] %s\n"
3569 					  "EXPLAIN [ ANALYZE ] [ VERBOSE ] %s\n"
3570 					  "\n"
3571 					  "%s\n"
3572 					  "\n"
3573 					  "    ANALYZE [ %s ]\n"
3574 					  "    VERBOSE [ %s ]\n"
3575 					  "    COSTS [ %s ]\n"
3576 					  "    BUFFERS [ %s ]\n"
3577 					  "    TIMING [ %s ]\n"
3578 					  "    SUMMARY [ %s ]\n"
3579 					  "    FORMAT { TEXT | XML | JSON | YAML }",
3580 					  _("option"),
3581 					  _("statement"),
3582 					  _("statement"),
3583 					  _("where option can be one of:"),
3584 					  _("boolean"),
3585 					  _("boolean"),
3586 					  _("boolean"),
3587 					  _("boolean"),
3588 					  _("boolean"),
3589 					  _("boolean"));
3590 }
3591 
3592 static void
sql_help_FETCH(PQExpBuffer buf)3593 sql_help_FETCH(PQExpBuffer buf)
3594 {
3595 	appendPQExpBuffer(buf,
3596 					  "FETCH [ %s [ FROM | IN ] ] %s\n"
3597 					  "\n"
3598 					  "%s\n"
3599 					  "\n"
3600 					  "    NEXT\n"
3601 					  "    PRIOR\n"
3602 					  "    FIRST\n"
3603 					  "    LAST\n"
3604 					  "    ABSOLUTE %s\n"
3605 					  "    RELATIVE %s\n"
3606 					  "    %s\n"
3607 					  "    ALL\n"
3608 					  "    FORWARD\n"
3609 					  "    FORWARD %s\n"
3610 					  "    FORWARD ALL\n"
3611 					  "    BACKWARD\n"
3612 					  "    BACKWARD %s\n"
3613 					  "    BACKWARD ALL",
3614 					  _("direction"),
3615 					  _("cursor_name"),
3616 					  _("where direction can be empty or one of:"),
3617 					  _("count"),
3618 					  _("count"),
3619 					  _("count"),
3620 					  _("count"),
3621 					  _("count"));
3622 }
3623 
3624 static void
sql_help_GRANT(PQExpBuffer buf)3625 sql_help_GRANT(PQExpBuffer buf)
3626 {
3627 	appendPQExpBuffer(buf,
3628 					  "GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
3629 					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
3630 					  "    ON { [ TABLE ] %s [, ...]\n"
3631 					  "         | ALL TABLES IN SCHEMA %s [, ...] }\n"
3632 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3633 					  "\n"
3634 					  "GRANT { { SELECT | INSERT | UPDATE | REFERENCES } ( %s [, ...] )\n"
3635 					  "    [, ...] | ALL [ PRIVILEGES ] ( %s [, ...] ) }\n"
3636 					  "    ON [ TABLE ] %s [, ...]\n"
3637 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3638 					  "\n"
3639 					  "GRANT { { USAGE | SELECT | UPDATE }\n"
3640 					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
3641 					  "    ON { SEQUENCE %s [, ...]\n"
3642 					  "         | ALL SEQUENCES IN SCHEMA %s [, ...] }\n"
3643 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3644 					  "\n"
3645 					  "GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }\n"
3646 					  "    ON DATABASE %s [, ...]\n"
3647 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3648 					  "\n"
3649 					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
3650 					  "    ON DOMAIN %s [, ...]\n"
3651 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3652 					  "\n"
3653 					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
3654 					  "    ON FOREIGN DATA WRAPPER %s [, ...]\n"
3655 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3656 					  "\n"
3657 					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
3658 					  "    ON FOREIGN SERVER %s [, ...]\n"
3659 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3660 					  "\n"
3661 					  "GRANT { EXECUTE | ALL [ PRIVILEGES ] }\n"
3662 					  "    ON { { FUNCTION | PROCEDURE | ROUTINE } %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
3663 					  "         | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA %s [, ...] }\n"
3664 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3665 					  "\n"
3666 					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
3667 					  "    ON LANGUAGE %s [, ...]\n"
3668 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3669 					  "\n"
3670 					  "GRANT { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n"
3671 					  "    ON LARGE OBJECT %s [, ...]\n"
3672 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3673 					  "\n"
3674 					  "GRANT { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n"
3675 					  "    ON SCHEMA %s [, ...]\n"
3676 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3677 					  "\n"
3678 					  "GRANT { CREATE | ALL [ PRIVILEGES ] }\n"
3679 					  "    ON TABLESPACE %s [, ...]\n"
3680 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3681 					  "\n"
3682 					  "GRANT { USAGE | ALL [ PRIVILEGES ] }\n"
3683 					  "    ON TYPE %s [, ...]\n"
3684 					  "    TO %s [, ...] [ WITH GRANT OPTION ]\n"
3685 					  "\n"
3686 					  "GRANT %s [, ...] TO %s [, ...]\n"
3687 					  "    [ WITH ADMIN OPTION ]\n"
3688 					  "    [ GRANTED BY %s ]\n"
3689 					  "\n"
3690 					  "%s\n"
3691 					  "\n"
3692 					  "    [ GROUP ] %s\n"
3693 					  "  | PUBLIC\n"
3694 					  "  | CURRENT_USER\n"
3695 					  "  | SESSION_USER",
3696 					  _("table_name"),
3697 					  _("schema_name"),
3698 					  _("role_specification"),
3699 					  _("column_name"),
3700 					  _("column_name"),
3701 					  _("table_name"),
3702 					  _("role_specification"),
3703 					  _("sequence_name"),
3704 					  _("schema_name"),
3705 					  _("role_specification"),
3706 					  _("database_name"),
3707 					  _("role_specification"),
3708 					  _("domain_name"),
3709 					  _("role_specification"),
3710 					  _("fdw_name"),
3711 					  _("role_specification"),
3712 					  _("server_name"),
3713 					  _("role_specification"),
3714 					  _("routine_name"),
3715 					  _("argmode"),
3716 					  _("arg_name"),
3717 					  _("arg_type"),
3718 					  _("schema_name"),
3719 					  _("role_specification"),
3720 					  _("lang_name"),
3721 					  _("role_specification"),
3722 					  _("loid"),
3723 					  _("role_specification"),
3724 					  _("schema_name"),
3725 					  _("role_specification"),
3726 					  _("tablespace_name"),
3727 					  _("role_specification"),
3728 					  _("type_name"),
3729 					  _("role_specification"),
3730 					  _("role_name"),
3731 					  _("role_specification"),
3732 					  _("role_specification"),
3733 					  _("where role_specification can be:"),
3734 					  _("role_name"));
3735 }
3736 
3737 static void
sql_help_IMPORT_FOREIGN_SCHEMA(PQExpBuffer buf)3738 sql_help_IMPORT_FOREIGN_SCHEMA(PQExpBuffer buf)
3739 {
3740 	appendPQExpBuffer(buf,
3741 					  "IMPORT FOREIGN SCHEMA %s\n"
3742 					  "    [ { LIMIT TO | EXCEPT } ( %s [, ...] ) ]\n"
3743 					  "    FROM SERVER %s\n"
3744 					  "    INTO %s\n"
3745 					  "    [ OPTIONS ( %s '%s' [, ... ] ) ]",
3746 					  _("remote_schema"),
3747 					  _("table_name"),
3748 					  _("server_name"),
3749 					  _("local_schema"),
3750 					  _("option"),
3751 					  _("value"));
3752 }
3753 
3754 static void
sql_help_INSERT(PQExpBuffer buf)3755 sql_help_INSERT(PQExpBuffer buf)
3756 {
3757 	appendPQExpBuffer(buf,
3758 					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
3759 					  "INSERT INTO %s [ AS %s ] [ ( %s [, ...] ) ]\n"
3760 					  "    [ OVERRIDING { SYSTEM | USER } VALUE ]\n"
3761 					  "    { DEFAULT VALUES | VALUES ( { %s | DEFAULT } [, ...] ) [, ...] | %s }\n"
3762 					  "    [ ON CONFLICT [ %s ] %s ]\n"
3763 					  "    [ RETURNING * | %s [ [ AS ] %s ] [, ...] ]\n"
3764 					  "\n"
3765 					  "%s\n"
3766 					  "\n"
3767 					  "    ( { %s | ( %s ) } [ COLLATE %s ] [ %s ] [, ...] ) [ WHERE %s ]\n"
3768 					  "    ON CONSTRAINT %s\n"
3769 					  "\n"
3770 					  "%s\n"
3771 					  "\n"
3772 					  "    DO NOTHING\n"
3773 					  "    DO UPDATE SET { %s = { %s | DEFAULT } |\n"
3774 					  "                    ( %s [, ...] ) = [ ROW ] ( { %s | DEFAULT } [, ...] ) |\n"
3775 					  "                    ( %s [, ...] ) = ( %s )\n"
3776 					  "                  } [, ...]\n"
3777 					  "              [ WHERE %s ]",
3778 					  _("with_query"),
3779 					  _("table_name"),
3780 					  _("alias"),
3781 					  _("column_name"),
3782 					  _("expression"),
3783 					  _("query"),
3784 					  _("conflict_target"),
3785 					  _("conflict_action"),
3786 					  _("output_expression"),
3787 					  _("output_name"),
3788 					  _("where conflict_target can be one of:"),
3789 					  _("index_column_name"),
3790 					  _("index_expression"),
3791 					  _("collation"),
3792 					  _("opclass"),
3793 					  _("index_predicate"),
3794 					  _("constraint_name"),
3795 					  _("and conflict_action is one of:"),
3796 					  _("column_name"),
3797 					  _("expression"),
3798 					  _("column_name"),
3799 					  _("expression"),
3800 					  _("column_name"),
3801 					  _("sub-SELECT"),
3802 					  _("condition"));
3803 }
3804 
3805 static void
sql_help_LISTEN(PQExpBuffer buf)3806 sql_help_LISTEN(PQExpBuffer buf)
3807 {
3808 	appendPQExpBuffer(buf,
3809 					  "LISTEN %s",
3810 					  _("channel"));
3811 }
3812 
3813 static void
sql_help_LOAD(PQExpBuffer buf)3814 sql_help_LOAD(PQExpBuffer buf)
3815 {
3816 	appendPQExpBuffer(buf,
3817 					  "LOAD '%s'",
3818 					  _("filename"));
3819 }
3820 
3821 static void
sql_help_LOCK(PQExpBuffer buf)3822 sql_help_LOCK(PQExpBuffer buf)
3823 {
3824 	appendPQExpBuffer(buf,
3825 					  "LOCK [ TABLE ] [ ONLY ] %s [ * ] [, ...] [ IN %s MODE ] [ NOWAIT ]\n"
3826 					  "\n"
3827 					  "%s\n"
3828 					  "\n"
3829 					  "    ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE\n"
3830 					  "    | SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE",
3831 					  _("name"),
3832 					  _("lockmode"),
3833 					  _("where lockmode is one of:"));
3834 }
3835 
3836 static void
sql_help_MOVE(PQExpBuffer buf)3837 sql_help_MOVE(PQExpBuffer buf)
3838 {
3839 	appendPQExpBuffer(buf,
3840 					  "MOVE [ %s [ FROM | IN ] ] %s\n"
3841 					  "\n"
3842 					  "%s\n"
3843 					  "\n"
3844 					  "    NEXT\n"
3845 					  "    PRIOR\n"
3846 					  "    FIRST\n"
3847 					  "    LAST\n"
3848 					  "    ABSOLUTE %s\n"
3849 					  "    RELATIVE %s\n"
3850 					  "    %s\n"
3851 					  "    ALL\n"
3852 					  "    FORWARD\n"
3853 					  "    FORWARD %s\n"
3854 					  "    FORWARD ALL\n"
3855 					  "    BACKWARD\n"
3856 					  "    BACKWARD %s\n"
3857 					  "    BACKWARD ALL",
3858 					  _("direction"),
3859 					  _("cursor_name"),
3860 					  _("where direction can be empty or one of:"),
3861 					  _("count"),
3862 					  _("count"),
3863 					  _("count"),
3864 					  _("count"),
3865 					  _("count"));
3866 }
3867 
3868 static void
sql_help_NOTIFY(PQExpBuffer buf)3869 sql_help_NOTIFY(PQExpBuffer buf)
3870 {
3871 	appendPQExpBuffer(buf,
3872 					  "NOTIFY %s [ , %s ]",
3873 					  _("channel"),
3874 					  _("payload"));
3875 }
3876 
3877 static void
sql_help_PREPARE(PQExpBuffer buf)3878 sql_help_PREPARE(PQExpBuffer buf)
3879 {
3880 	appendPQExpBuffer(buf,
3881 					  "PREPARE %s [ ( %s [, ...] ) ] AS %s",
3882 					  _("name"),
3883 					  _("data_type"),
3884 					  _("statement"));
3885 }
3886 
3887 static void
sql_help_PREPARE_TRANSACTION(PQExpBuffer buf)3888 sql_help_PREPARE_TRANSACTION(PQExpBuffer buf)
3889 {
3890 	appendPQExpBuffer(buf,
3891 					  "PREPARE TRANSACTION %s",
3892 					  _("transaction_id"));
3893 }
3894 
3895 static void
sql_help_REASSIGN_OWNED(PQExpBuffer buf)3896 sql_help_REASSIGN_OWNED(PQExpBuffer buf)
3897 {
3898 	appendPQExpBuffer(buf,
3899 					  "REASSIGN OWNED BY { %s | CURRENT_USER | SESSION_USER } [, ...]\n"
3900 					  "               TO { %s | CURRENT_USER | SESSION_USER }",
3901 					  _("old_role"),
3902 					  _("new_role"));
3903 }
3904 
3905 static void
sql_help_REFRESH_MATERIALIZED_VIEW(PQExpBuffer buf)3906 sql_help_REFRESH_MATERIALIZED_VIEW(PQExpBuffer buf)
3907 {
3908 	appendPQExpBuffer(buf,
3909 					  "REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] %s\n"
3910 					  "    [ WITH [ NO ] DATA ]",
3911 					  _("name"));
3912 }
3913 
3914 static void
sql_help_REINDEX(PQExpBuffer buf)3915 sql_help_REINDEX(PQExpBuffer buf)
3916 {
3917 	appendPQExpBuffer(buf,
3918 					  "REINDEX [ ( VERBOSE ) ] { INDEX | TABLE | SCHEMA | DATABASE | SYSTEM } %s",
3919 					  _("name"));
3920 }
3921 
3922 static void
sql_help_RELEASE_SAVEPOINT(PQExpBuffer buf)3923 sql_help_RELEASE_SAVEPOINT(PQExpBuffer buf)
3924 {
3925 	appendPQExpBuffer(buf,
3926 					  "RELEASE [ SAVEPOINT ] %s",
3927 					  _("savepoint_name"));
3928 }
3929 
3930 static void
sql_help_RESET(PQExpBuffer buf)3931 sql_help_RESET(PQExpBuffer buf)
3932 {
3933 	appendPQExpBuffer(buf,
3934 					  "RESET %s\n"
3935 					  "RESET ALL",
3936 					  _("configuration_parameter"));
3937 }
3938 
3939 static void
sql_help_REVOKE(PQExpBuffer buf)3940 sql_help_REVOKE(PQExpBuffer buf)
3941 {
3942 	appendPQExpBuffer(buf,
3943 					  "REVOKE [ GRANT OPTION FOR ]\n"
3944 					  "    { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER }\n"
3945 					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
3946 					  "    ON { [ TABLE ] %s [, ...]\n"
3947 					  "         | ALL TABLES IN SCHEMA %s [, ...] }\n"
3948 					  "    FROM %s [, ...]\n"
3949 					  "    [ CASCADE | RESTRICT ]\n"
3950 					  "\n"
3951 					  "REVOKE [ GRANT OPTION FOR ]\n"
3952 					  "    { { SELECT | INSERT | UPDATE | REFERENCES } ( %s [, ...] )\n"
3953 					  "    [, ...] | ALL [ PRIVILEGES ] ( %s [, ...] ) }\n"
3954 					  "    ON [ TABLE ] %s [, ...]\n"
3955 					  "    FROM %s [, ...]\n"
3956 					  "    [ CASCADE | RESTRICT ]\n"
3957 					  "\n"
3958 					  "REVOKE [ GRANT OPTION FOR ]\n"
3959 					  "    { { USAGE | SELECT | UPDATE }\n"
3960 					  "    [, ...] | ALL [ PRIVILEGES ] }\n"
3961 					  "    ON { SEQUENCE %s [, ...]\n"
3962 					  "         | ALL SEQUENCES IN SCHEMA %s [, ...] }\n"
3963 					  "    FROM %s [, ...]\n"
3964 					  "    [ CASCADE | RESTRICT ]\n"
3965 					  "\n"
3966 					  "REVOKE [ GRANT OPTION FOR ]\n"
3967 					  "    { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }\n"
3968 					  "    ON DATABASE %s [, ...]\n"
3969 					  "    FROM %s [, ...]\n"
3970 					  "    [ CASCADE | RESTRICT ]\n"
3971 					  "\n"
3972 					  "REVOKE [ GRANT OPTION FOR ]\n"
3973 					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
3974 					  "    ON DOMAIN %s [, ...]\n"
3975 					  "    FROM %s [, ...]\n"
3976 					  "    [ CASCADE | RESTRICT ]\n"
3977 					  "\n"
3978 					  "REVOKE [ GRANT OPTION FOR ]\n"
3979 					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
3980 					  "    ON FOREIGN DATA WRAPPER %s [, ...]\n"
3981 					  "    FROM %s [, ...]\n"
3982 					  "    [ CASCADE | RESTRICT ]\n"
3983 					  "\n"
3984 					  "REVOKE [ GRANT OPTION FOR ]\n"
3985 					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
3986 					  "    ON FOREIGN SERVER %s [, ...]\n"
3987 					  "    FROM %s [, ...]\n"
3988 					  "    [ CASCADE | RESTRICT ]\n"
3989 					  "\n"
3990 					  "REVOKE [ GRANT OPTION FOR ]\n"
3991 					  "    { EXECUTE | ALL [ PRIVILEGES ] }\n"
3992 					  "    ON { { FUNCTION | PROCEDURE | ROUTINE } %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] [, ...]\n"
3993 					  "         | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA %s [, ...] }\n"
3994 					  "    FROM %s [, ...]\n"
3995 					  "    [ CASCADE | RESTRICT ]\n"
3996 					  "\n"
3997 					  "REVOKE [ GRANT OPTION FOR ]\n"
3998 					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
3999 					  "    ON LANGUAGE %s [, ...]\n"
4000 					  "    FROM %s [, ...]\n"
4001 					  "    [ CASCADE | RESTRICT ]\n"
4002 					  "\n"
4003 					  "REVOKE [ GRANT OPTION FOR ]\n"
4004 					  "    { { SELECT | UPDATE } [, ...] | ALL [ PRIVILEGES ] }\n"
4005 					  "    ON LARGE OBJECT %s [, ...]\n"
4006 					  "    FROM %s [, ...]\n"
4007 					  "    [ CASCADE | RESTRICT ]\n"
4008 					  "\n"
4009 					  "REVOKE [ GRANT OPTION FOR ]\n"
4010 					  "    { { CREATE | USAGE } [, ...] | ALL [ PRIVILEGES ] }\n"
4011 					  "    ON SCHEMA %s [, ...]\n"
4012 					  "    FROM %s [, ...]\n"
4013 					  "    [ CASCADE | RESTRICT ]\n"
4014 					  "\n"
4015 					  "REVOKE [ GRANT OPTION FOR ]\n"
4016 					  "    { CREATE | ALL [ PRIVILEGES ] }\n"
4017 					  "    ON TABLESPACE %s [, ...]\n"
4018 					  "    FROM %s [, ...]\n"
4019 					  "    [ CASCADE | RESTRICT ]\n"
4020 					  "\n"
4021 					  "REVOKE [ GRANT OPTION FOR ]\n"
4022 					  "    { USAGE | ALL [ PRIVILEGES ] }\n"
4023 					  "    ON TYPE %s [, ...]\n"
4024 					  "    FROM %s [, ...]\n"
4025 					  "    [ CASCADE | RESTRICT ]\n"
4026 					  "\n"
4027 					  "REVOKE [ ADMIN OPTION FOR ]\n"
4028 					  "    %s [, ...] FROM %s [, ...]\n"
4029 					  "    [ GRANTED BY %s ]\n"
4030 					  "    [ CASCADE | RESTRICT ]\n"
4031 					  "\n"
4032 					  "%s\n"
4033 					  "\n"
4034 					  "    [ GROUP ] %s\n"
4035 					  "  | PUBLIC\n"
4036 					  "  | CURRENT_USER\n"
4037 					  "  | SESSION_USER",
4038 					  _("table_name"),
4039 					  _("schema_name"),
4040 					  _("role_specification"),
4041 					  _("column_name"),
4042 					  _("column_name"),
4043 					  _("table_name"),
4044 					  _("role_specification"),
4045 					  _("sequence_name"),
4046 					  _("schema_name"),
4047 					  _("role_specification"),
4048 					  _("database_name"),
4049 					  _("role_specification"),
4050 					  _("domain_name"),
4051 					  _("role_specification"),
4052 					  _("fdw_name"),
4053 					  _("role_specification"),
4054 					  _("server_name"),
4055 					  _("role_specification"),
4056 					  _("function_name"),
4057 					  _("argmode"),
4058 					  _("arg_name"),
4059 					  _("arg_type"),
4060 					  _("schema_name"),
4061 					  _("role_specification"),
4062 					  _("lang_name"),
4063 					  _("role_specification"),
4064 					  _("loid"),
4065 					  _("role_specification"),
4066 					  _("schema_name"),
4067 					  _("role_specification"),
4068 					  _("tablespace_name"),
4069 					  _("role_specification"),
4070 					  _("type_name"),
4071 					  _("role_specification"),
4072 					  _("role_name"),
4073 					  _("role_specification"),
4074 					  _("role_specification"),
4075 					  _("where role_specification can be:"),
4076 					  _("role_name"));
4077 }
4078 
4079 static void
sql_help_ROLLBACK(PQExpBuffer buf)4080 sql_help_ROLLBACK(PQExpBuffer buf)
4081 {
4082 	appendPQExpBuffer(buf,
4083 					  "ROLLBACK [ WORK | TRANSACTION ]");
4084 }
4085 
4086 static void
sql_help_ROLLBACK_PREPARED(PQExpBuffer buf)4087 sql_help_ROLLBACK_PREPARED(PQExpBuffer buf)
4088 {
4089 	appendPQExpBuffer(buf,
4090 					  "ROLLBACK PREPARED %s",
4091 					  _("transaction_id"));
4092 }
4093 
4094 static void
sql_help_ROLLBACK_TO_SAVEPOINT(PQExpBuffer buf)4095 sql_help_ROLLBACK_TO_SAVEPOINT(PQExpBuffer buf)
4096 {
4097 	appendPQExpBuffer(buf,
4098 					  "ROLLBACK [ WORK | TRANSACTION ] TO [ SAVEPOINT ] %s",
4099 					  _("savepoint_name"));
4100 }
4101 
4102 static void
sql_help_SAVEPOINT(PQExpBuffer buf)4103 sql_help_SAVEPOINT(PQExpBuffer buf)
4104 {
4105 	appendPQExpBuffer(buf,
4106 					  "SAVEPOINT %s",
4107 					  _("savepoint_name"));
4108 }
4109 
4110 static void
sql_help_SECURITY_LABEL(PQExpBuffer buf)4111 sql_help_SECURITY_LABEL(PQExpBuffer buf)
4112 {
4113 	appendPQExpBuffer(buf,
4114 					  "SECURITY LABEL [ FOR %s ] ON\n"
4115 					  "{\n"
4116 					  "  TABLE %s |\n"
4117 					  "  COLUMN %s.%s |\n"
4118 					  "  AGGREGATE %s ( %s ) |\n"
4119 					  "  DATABASE %s |\n"
4120 					  "  DOMAIN %s |\n"
4121 					  "  EVENT TRIGGER %s |\n"
4122 					  "  FOREIGN TABLE %s\n"
4123 					  "  FUNCTION %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
4124 					  "  LARGE OBJECT %s |\n"
4125 					  "  MATERIALIZED VIEW %s |\n"
4126 					  "  [ PROCEDURAL ] LANGUAGE %s |\n"
4127 					  "  PROCEDURE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
4128 					  "  PUBLICATION %s |\n"
4129 					  "  ROLE %s |\n"
4130 					  "  ROUTINE %s [ ( [ [ %s ] [ %s ] %s [, ...] ] ) ] |\n"
4131 					  "  SCHEMA %s |\n"
4132 					  "  SEQUENCE %s |\n"
4133 					  "  SUBSCRIPTION %s |\n"
4134 					  "  TABLESPACE %s |\n"
4135 					  "  TYPE %s |\n"
4136 					  "  VIEW %s\n"
4137 					  "} IS '%s'\n"
4138 					  "\n"
4139 					  "%s\n"
4140 					  "\n"
4141 					  "* |\n"
4142 					  "[ %s ] [ %s ] %s [ , ... ] |\n"
4143 					  "[ [ %s ] [ %s ] %s [ , ... ] ] ORDER BY [ %s ] [ %s ] %s [ , ... ]",
4144 					  _("provider"),
4145 					  _("object_name"),
4146 					  _("table_name"),
4147 					  _("column_name"),
4148 					  _("aggregate_name"),
4149 					  _("aggregate_signature"),
4150 					  _("object_name"),
4151 					  _("object_name"),
4152 					  _("object_name"),
4153 					  _("object_name"),
4154 					  _("function_name"),
4155 					  _("argmode"),
4156 					  _("argname"),
4157 					  _("argtype"),
4158 					  _("large_object_oid"),
4159 					  _("object_name"),
4160 					  _("object_name"),
4161 					  _("procedure_name"),
4162 					  _("argmode"),
4163 					  _("argname"),
4164 					  _("argtype"),
4165 					  _("object_name"),
4166 					  _("object_name"),
4167 					  _("routine_name"),
4168 					  _("argmode"),
4169 					  _("argname"),
4170 					  _("argtype"),
4171 					  _("object_name"),
4172 					  _("object_name"),
4173 					  _("object_name"),
4174 					  _("object_name"),
4175 					  _("object_name"),
4176 					  _("object_name"),
4177 					  _("label"),
4178 					  _("where aggregate_signature is:"),
4179 					  _("argmode"),
4180 					  _("argname"),
4181 					  _("argtype"),
4182 					  _("argmode"),
4183 					  _("argname"),
4184 					  _("argtype"),
4185 					  _("argmode"),
4186 					  _("argname"),
4187 					  _("argtype"));
4188 }
4189 
4190 static void
sql_help_SELECT(PQExpBuffer buf)4191 sql_help_SELECT(PQExpBuffer buf)
4192 {
4193 	appendPQExpBuffer(buf,
4194 					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
4195 					  "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
4196 					  "    [ * | %s [ [ AS ] %s ] [, ...] ]\n"
4197 					  "    [ FROM %s [, ...] ]\n"
4198 					  "    [ WHERE %s ]\n"
4199 					  "    [ GROUP BY %s [, ...] ]\n"
4200 					  "    [ HAVING %s ]\n"
4201 					  "    [ WINDOW %s AS ( %s ) [, ...] ]\n"
4202 					  "    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
4203 					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
4204 					  "    [ LIMIT { %s | ALL } ]\n"
4205 					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
4206 					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } ONLY ]\n"
4207 					  "    [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF %s [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]\n"
4208 					  "\n"
4209 					  "%s\n"
4210 					  "\n"
4211 					  "    [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4212 					  "                [ TABLESAMPLE %s ( %s [, ...] ) [ REPEATABLE ( %s ) ] ]\n"
4213 					  "    [ LATERAL ] ( %s ) [ AS ] %s [ ( %s [, ...] ) ]\n"
4214 					  "    %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4215 					  "    [ LATERAL ] %s ( [ %s [, ...] ] )\n"
4216 					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4217 					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) [ AS ] %s ( %s [, ...] )\n"
4218 					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
4219 					  "    [ LATERAL ] ROWS FROM( %s ( [ %s [, ...] ] ) [ AS ( %s [, ...] ) ] [, ...] )\n"
4220 					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4221 					  "    %s [ NATURAL ] %s %s [ ON %s | USING ( %s [, ...] ) ]\n"
4222 					  "\n"
4223 					  "%s\n"
4224 					  "\n"
4225 					  "    ( )\n"
4226 					  "    %s\n"
4227 					  "    ( %s [, ...] )\n"
4228 					  "    ROLLUP ( { %s | ( %s [, ...] ) } [, ...] )\n"
4229 					  "    CUBE ( { %s | ( %s [, ...] ) } [, ...] )\n"
4230 					  "    GROUPING SETS ( %s [, ...] )\n"
4231 					  "\n"
4232 					  "%s\n"
4233 					  "\n"
4234 					  "    %s [ ( %s [, ...] ) ] AS ( %s | %s | %s | %s | %s )\n"
4235 					  "\n"
4236 					  "TABLE [ ONLY ] %s [ * ]",
4237 					  _("with_query"),
4238 					  _("expression"),
4239 					  _("expression"),
4240 					  _("output_name"),
4241 					  _("from_item"),
4242 					  _("condition"),
4243 					  _("grouping_element"),
4244 					  _("condition"),
4245 					  _("window_name"),
4246 					  _("window_definition"),
4247 					  _("select"),
4248 					  _("expression"),
4249 					  _("operator"),
4250 					  _("count"),
4251 					  _("start"),
4252 					  _("count"),
4253 					  _("table_name"),
4254 					  _("where from_item can be one of:"),
4255 					  _("table_name"),
4256 					  _("alias"),
4257 					  _("column_alias"),
4258 					  _("sampling_method"),
4259 					  _("argument"),
4260 					  _("seed"),
4261 					  _("select"),
4262 					  _("alias"),
4263 					  _("column_alias"),
4264 					  _("with_query_name"),
4265 					  _("alias"),
4266 					  _("column_alias"),
4267 					  _("function_name"),
4268 					  _("argument"),
4269 					  _("alias"),
4270 					  _("column_alias"),
4271 					  _("function_name"),
4272 					  _("argument"),
4273 					  _("alias"),
4274 					  _("column_definition"),
4275 					  _("function_name"),
4276 					  _("argument"),
4277 					  _("column_definition"),
4278 					  _("function_name"),
4279 					  _("argument"),
4280 					  _("column_definition"),
4281 					  _("alias"),
4282 					  _("column_alias"),
4283 					  _("from_item"),
4284 					  _("join_type"),
4285 					  _("from_item"),
4286 					  _("join_condition"),
4287 					  _("join_column"),
4288 					  _("and grouping_element can be one of:"),
4289 					  _("expression"),
4290 					  _("expression"),
4291 					  _("expression"),
4292 					  _("expression"),
4293 					  _("expression"),
4294 					  _("expression"),
4295 					  _("grouping_element"),
4296 					  _("and with_query is:"),
4297 					  _("with_query_name"),
4298 					  _("column_name"),
4299 					  _("select"),
4300 					  _("values"),
4301 					  _("insert"),
4302 					  _("update"),
4303 					  _("delete"),
4304 					  _("table_name"));
4305 }
4306 
4307 static void
sql_help_SELECT_INTO(PQExpBuffer buf)4308 sql_help_SELECT_INTO(PQExpBuffer buf)
4309 {
4310 	appendPQExpBuffer(buf,
4311 					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
4312 					  "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
4313 					  "    * | %s [ [ AS ] %s ] [, ...]\n"
4314 					  "    INTO [ TEMPORARY | TEMP | UNLOGGED ] [ TABLE ] %s\n"
4315 					  "    [ FROM %s [, ...] ]\n"
4316 					  "    [ WHERE %s ]\n"
4317 					  "    [ GROUP BY %s [, ...] ]\n"
4318 					  "    [ HAVING %s ]\n"
4319 					  "    [ WINDOW %s AS ( %s ) [, ...] ]\n"
4320 					  "    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
4321 					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
4322 					  "    [ LIMIT { %s | ALL } ]\n"
4323 					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
4324 					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } ONLY ]\n"
4325 					  "    [ FOR { UPDATE | SHARE } [ OF %s [, ...] ] [ NOWAIT ] [...] ]",
4326 					  _("with_query"),
4327 					  _("expression"),
4328 					  _("expression"),
4329 					  _("output_name"),
4330 					  _("new_table"),
4331 					  _("from_item"),
4332 					  _("condition"),
4333 					  _("expression"),
4334 					  _("condition"),
4335 					  _("window_name"),
4336 					  _("window_definition"),
4337 					  _("select"),
4338 					  _("expression"),
4339 					  _("operator"),
4340 					  _("count"),
4341 					  _("start"),
4342 					  _("count"),
4343 					  _("table_name"));
4344 }
4345 
4346 static void
sql_help_SET(PQExpBuffer buf)4347 sql_help_SET(PQExpBuffer buf)
4348 {
4349 	appendPQExpBuffer(buf,
4350 					  "SET [ SESSION | LOCAL ] %s { TO | = } { %s | '%s' | DEFAULT }\n"
4351 					  "SET [ SESSION | LOCAL ] TIME ZONE { %s | LOCAL | DEFAULT }",
4352 					  _("configuration_parameter"),
4353 					  _("value"),
4354 					  _("value"),
4355 					  _("timezone"));
4356 }
4357 
4358 static void
sql_help_SET_CONSTRAINTS(PQExpBuffer buf)4359 sql_help_SET_CONSTRAINTS(PQExpBuffer buf)
4360 {
4361 	appendPQExpBuffer(buf,
4362 					  "SET CONSTRAINTS { ALL | %s [, ...] } { DEFERRED | IMMEDIATE }",
4363 					  _("name"));
4364 }
4365 
4366 static void
sql_help_SET_ROLE(PQExpBuffer buf)4367 sql_help_SET_ROLE(PQExpBuffer buf)
4368 {
4369 	appendPQExpBuffer(buf,
4370 					  "SET [ SESSION | LOCAL ] ROLE %s\n"
4371 					  "SET [ SESSION | LOCAL ] ROLE NONE\n"
4372 					  "RESET ROLE",
4373 					  _("role_name"));
4374 }
4375 
4376 static void
sql_help_SET_SESSION_AUTHORIZATION(PQExpBuffer buf)4377 sql_help_SET_SESSION_AUTHORIZATION(PQExpBuffer buf)
4378 {
4379 	appendPQExpBuffer(buf,
4380 					  "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION %s\n"
4381 					  "SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT\n"
4382 					  "RESET SESSION AUTHORIZATION",
4383 					  _("user_name"));
4384 }
4385 
4386 static void
sql_help_SET_TRANSACTION(PQExpBuffer buf)4387 sql_help_SET_TRANSACTION(PQExpBuffer buf)
4388 {
4389 	appendPQExpBuffer(buf,
4390 					  "SET TRANSACTION %s [, ...]\n"
4391 					  "SET TRANSACTION SNAPSHOT %s\n"
4392 					  "SET SESSION CHARACTERISTICS AS TRANSACTION %s [, ...]\n"
4393 					  "\n"
4394 					  "%s\n"
4395 					  "\n"
4396 					  "    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
4397 					  "    READ WRITE | READ ONLY\n"
4398 					  "    [ NOT ] DEFERRABLE",
4399 					  _("transaction_mode"),
4400 					  _("snapshot_id"),
4401 					  _("transaction_mode"),
4402 					  _("where transaction_mode is one of:"));
4403 }
4404 
4405 static void
sql_help_SHOW(PQExpBuffer buf)4406 sql_help_SHOW(PQExpBuffer buf)
4407 {
4408 	appendPQExpBuffer(buf,
4409 					  "SHOW %s\n"
4410 					  "SHOW ALL",
4411 					  _("name"));
4412 }
4413 
4414 static void
sql_help_START_TRANSACTION(PQExpBuffer buf)4415 sql_help_START_TRANSACTION(PQExpBuffer buf)
4416 {
4417 	appendPQExpBuffer(buf,
4418 					  "START TRANSACTION [ %s [, ...] ]\n"
4419 					  "\n"
4420 					  "%s\n"
4421 					  "\n"
4422 					  "    ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }\n"
4423 					  "    READ WRITE | READ ONLY\n"
4424 					  "    [ NOT ] DEFERRABLE",
4425 					  _("transaction_mode"),
4426 					  _("where transaction_mode is one of:"));
4427 }
4428 
4429 static void
sql_help_TABLE(PQExpBuffer buf)4430 sql_help_TABLE(PQExpBuffer buf)
4431 {
4432 	appendPQExpBuffer(buf,
4433 					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
4434 					  "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
4435 					  "    [ * | %s [ [ AS ] %s ] [, ...] ]\n"
4436 					  "    [ FROM %s [, ...] ]\n"
4437 					  "    [ WHERE %s ]\n"
4438 					  "    [ GROUP BY %s [, ...] ]\n"
4439 					  "    [ HAVING %s ]\n"
4440 					  "    [ WINDOW %s AS ( %s ) [, ...] ]\n"
4441 					  "    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
4442 					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
4443 					  "    [ LIMIT { %s | ALL } ]\n"
4444 					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
4445 					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } ONLY ]\n"
4446 					  "    [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF %s [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]\n"
4447 					  "\n"
4448 					  "%s\n"
4449 					  "\n"
4450 					  "    [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4451 					  "                [ TABLESAMPLE %s ( %s [, ...] ) [ REPEATABLE ( %s ) ] ]\n"
4452 					  "    [ LATERAL ] ( %s ) [ AS ] %s [ ( %s [, ...] ) ]\n"
4453 					  "    %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4454 					  "    [ LATERAL ] %s ( [ %s [, ...] ] )\n"
4455 					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4456 					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) [ AS ] %s ( %s [, ...] )\n"
4457 					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
4458 					  "    [ LATERAL ] ROWS FROM( %s ( [ %s [, ...] ] ) [ AS ( %s [, ...] ) ] [, ...] )\n"
4459 					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4460 					  "    %s [ NATURAL ] %s %s [ ON %s | USING ( %s [, ...] ) ]\n"
4461 					  "\n"
4462 					  "%s\n"
4463 					  "\n"
4464 					  "    ( )\n"
4465 					  "    %s\n"
4466 					  "    ( %s [, ...] )\n"
4467 					  "    ROLLUP ( { %s | ( %s [, ...] ) } [, ...] )\n"
4468 					  "    CUBE ( { %s | ( %s [, ...] ) } [, ...] )\n"
4469 					  "    GROUPING SETS ( %s [, ...] )\n"
4470 					  "\n"
4471 					  "%s\n"
4472 					  "\n"
4473 					  "    %s [ ( %s [, ...] ) ] AS ( %s | %s | %s | %s | %s )\n"
4474 					  "\n"
4475 					  "TABLE [ ONLY ] %s [ * ]",
4476 					  _("with_query"),
4477 					  _("expression"),
4478 					  _("expression"),
4479 					  _("output_name"),
4480 					  _("from_item"),
4481 					  _("condition"),
4482 					  _("grouping_element"),
4483 					  _("condition"),
4484 					  _("window_name"),
4485 					  _("window_definition"),
4486 					  _("select"),
4487 					  _("expression"),
4488 					  _("operator"),
4489 					  _("count"),
4490 					  _("start"),
4491 					  _("count"),
4492 					  _("table_name"),
4493 					  _("where from_item can be one of:"),
4494 					  _("table_name"),
4495 					  _("alias"),
4496 					  _("column_alias"),
4497 					  _("sampling_method"),
4498 					  _("argument"),
4499 					  _("seed"),
4500 					  _("select"),
4501 					  _("alias"),
4502 					  _("column_alias"),
4503 					  _("with_query_name"),
4504 					  _("alias"),
4505 					  _("column_alias"),
4506 					  _("function_name"),
4507 					  _("argument"),
4508 					  _("alias"),
4509 					  _("column_alias"),
4510 					  _("function_name"),
4511 					  _("argument"),
4512 					  _("alias"),
4513 					  _("column_definition"),
4514 					  _("function_name"),
4515 					  _("argument"),
4516 					  _("column_definition"),
4517 					  _("function_name"),
4518 					  _("argument"),
4519 					  _("column_definition"),
4520 					  _("alias"),
4521 					  _("column_alias"),
4522 					  _("from_item"),
4523 					  _("join_type"),
4524 					  _("from_item"),
4525 					  _("join_condition"),
4526 					  _("join_column"),
4527 					  _("and grouping_element can be one of:"),
4528 					  _("expression"),
4529 					  _("expression"),
4530 					  _("expression"),
4531 					  _("expression"),
4532 					  _("expression"),
4533 					  _("expression"),
4534 					  _("grouping_element"),
4535 					  _("and with_query is:"),
4536 					  _("with_query_name"),
4537 					  _("column_name"),
4538 					  _("select"),
4539 					  _("values"),
4540 					  _("insert"),
4541 					  _("update"),
4542 					  _("delete"),
4543 					  _("table_name"));
4544 }
4545 
4546 static void
sql_help_TRUNCATE(PQExpBuffer buf)4547 sql_help_TRUNCATE(PQExpBuffer buf)
4548 {
4549 	appendPQExpBuffer(buf,
4550 					  "TRUNCATE [ TABLE ] [ ONLY ] %s [ * ] [, ... ]\n"
4551 					  "    [ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]",
4552 					  _("name"));
4553 }
4554 
4555 static void
sql_help_UNLISTEN(PQExpBuffer buf)4556 sql_help_UNLISTEN(PQExpBuffer buf)
4557 {
4558 	appendPQExpBuffer(buf,
4559 					  "UNLISTEN { %s | * }",
4560 					  _("channel"));
4561 }
4562 
4563 static void
sql_help_UPDATE(PQExpBuffer buf)4564 sql_help_UPDATE(PQExpBuffer buf)
4565 {
4566 	appendPQExpBuffer(buf,
4567 					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
4568 					  "UPDATE [ ONLY ] %s [ * ] [ [ AS ] %s ]\n"
4569 					  "    SET { %s = { %s | DEFAULT } |\n"
4570 					  "          ( %s [, ...] ) = [ ROW ] ( { %s | DEFAULT } [, ...] ) |\n"
4571 					  "          ( %s [, ...] ) = ( %s )\n"
4572 					  "        } [, ...]\n"
4573 					  "    [ FROM %s [, ...] ]\n"
4574 					  "    [ WHERE %s | WHERE CURRENT OF %s ]\n"
4575 					  "    [ RETURNING * | %s [ [ AS ] %s ] [, ...] ]",
4576 					  _("with_query"),
4577 					  _("table_name"),
4578 					  _("alias"),
4579 					  _("column_name"),
4580 					  _("expression"),
4581 					  _("column_name"),
4582 					  _("expression"),
4583 					  _("column_name"),
4584 					  _("sub-SELECT"),
4585 					  _("from_item"),
4586 					  _("condition"),
4587 					  _("cursor_name"),
4588 					  _("output_expression"),
4589 					  _("output_name"));
4590 }
4591 
4592 static void
sql_help_VACUUM(PQExpBuffer buf)4593 sql_help_VACUUM(PQExpBuffer buf)
4594 {
4595 	appendPQExpBuffer(buf,
4596 					  "VACUUM [ ( %s [, ...] ) ] [ %s [, ...] ]\n"
4597 					  "VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ %s [, ...] ]\n"
4598 					  "\n"
4599 					  "%s\n"
4600 					  "\n"
4601 					  "    FULL\n"
4602 					  "    FREEZE\n"
4603 					  "    VERBOSE\n"
4604 					  "    ANALYZE\n"
4605 					  "    DISABLE_PAGE_SKIPPING\n"
4606 					  "\n"
4607 					  "%s\n"
4608 					  "\n"
4609 					  "    %s [ ( %s [, ...] ) ]",
4610 					  _("option"),
4611 					  _("table_and_columns"),
4612 					  _("table_and_columns"),
4613 					  _("where option can be one of:"),
4614 					  _("and table_and_columns is:"),
4615 					  _("table_name"),
4616 					  _("column_name"));
4617 }
4618 
4619 static void
sql_help_VALUES(PQExpBuffer buf)4620 sql_help_VALUES(PQExpBuffer buf)
4621 {
4622 	appendPQExpBuffer(buf,
4623 					  "VALUES ( %s [, ...] ) [, ...]\n"
4624 					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [, ...] ]\n"
4625 					  "    [ LIMIT { %s | ALL } ]\n"
4626 					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
4627 					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } ONLY ]",
4628 					  _("expression"),
4629 					  _("sort_expression"),
4630 					  _("operator"),
4631 					  _("count"),
4632 					  _("start"),
4633 					  _("count"));
4634 }
4635 
4636 static void
sql_help_WITH(PQExpBuffer buf)4637 sql_help_WITH(PQExpBuffer buf)
4638 {
4639 	appendPQExpBuffer(buf,
4640 					  "[ WITH [ RECURSIVE ] %s [, ...] ]\n"
4641 					  "SELECT [ ALL | DISTINCT [ ON ( %s [, ...] ) ] ]\n"
4642 					  "    [ * | %s [ [ AS ] %s ] [, ...] ]\n"
4643 					  "    [ FROM %s [, ...] ]\n"
4644 					  "    [ WHERE %s ]\n"
4645 					  "    [ GROUP BY %s [, ...] ]\n"
4646 					  "    [ HAVING %s ]\n"
4647 					  "    [ WINDOW %s AS ( %s ) [, ...] ]\n"
4648 					  "    [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] %s ]\n"
4649 					  "    [ ORDER BY %s [ ASC | DESC | USING %s ] [ NULLS { FIRST | LAST } ] [, ...] ]\n"
4650 					  "    [ LIMIT { %s | ALL } ]\n"
4651 					  "    [ OFFSET %s [ ROW | ROWS ] ]\n"
4652 					  "    [ FETCH { FIRST | NEXT } [ %s ] { ROW | ROWS } ONLY ]\n"
4653 					  "    [ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF %s [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]\n"
4654 					  "\n"
4655 					  "%s\n"
4656 					  "\n"
4657 					  "    [ ONLY ] %s [ * ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4658 					  "                [ TABLESAMPLE %s ( %s [, ...] ) [ REPEATABLE ( %s ) ] ]\n"
4659 					  "    [ LATERAL ] ( %s ) [ AS ] %s [ ( %s [, ...] ) ]\n"
4660 					  "    %s [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4661 					  "    [ LATERAL ] %s ( [ %s [, ...] ] )\n"
4662 					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4663 					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) [ AS ] %s ( %s [, ...] )\n"
4664 					  "    [ LATERAL ] %s ( [ %s [, ...] ] ) AS ( %s [, ...] )\n"
4665 					  "    [ LATERAL ] ROWS FROM( %s ( [ %s [, ...] ] ) [ AS ( %s [, ...] ) ] [, ...] )\n"
4666 					  "                [ WITH ORDINALITY ] [ [ AS ] %s [ ( %s [, ...] ) ] ]\n"
4667 					  "    %s [ NATURAL ] %s %s [ ON %s | USING ( %s [, ...] ) ]\n"
4668 					  "\n"
4669 					  "%s\n"
4670 					  "\n"
4671 					  "    ( )\n"
4672 					  "    %s\n"
4673 					  "    ( %s [, ...] )\n"
4674 					  "    ROLLUP ( { %s | ( %s [, ...] ) } [, ...] )\n"
4675 					  "    CUBE ( { %s | ( %s [, ...] ) } [, ...] )\n"
4676 					  "    GROUPING SETS ( %s [, ...] )\n"
4677 					  "\n"
4678 					  "%s\n"
4679 					  "\n"
4680 					  "    %s [ ( %s [, ...] ) ] AS ( %s | %s | %s | %s | %s )\n"
4681 					  "\n"
4682 					  "TABLE [ ONLY ] %s [ * ]",
4683 					  _("with_query"),
4684 					  _("expression"),
4685 					  _("expression"),
4686 					  _("output_name"),
4687 					  _("from_item"),
4688 					  _("condition"),
4689 					  _("grouping_element"),
4690 					  _("condition"),
4691 					  _("window_name"),
4692 					  _("window_definition"),
4693 					  _("select"),
4694 					  _("expression"),
4695 					  _("operator"),
4696 					  _("count"),
4697 					  _("start"),
4698 					  _("count"),
4699 					  _("table_name"),
4700 					  _("where from_item can be one of:"),
4701 					  _("table_name"),
4702 					  _("alias"),
4703 					  _("column_alias"),
4704 					  _("sampling_method"),
4705 					  _("argument"),
4706 					  _("seed"),
4707 					  _("select"),
4708 					  _("alias"),
4709 					  _("column_alias"),
4710 					  _("with_query_name"),
4711 					  _("alias"),
4712 					  _("column_alias"),
4713 					  _("function_name"),
4714 					  _("argument"),
4715 					  _("alias"),
4716 					  _("column_alias"),
4717 					  _("function_name"),
4718 					  _("argument"),
4719 					  _("alias"),
4720 					  _("column_definition"),
4721 					  _("function_name"),
4722 					  _("argument"),
4723 					  _("column_definition"),
4724 					  _("function_name"),
4725 					  _("argument"),
4726 					  _("column_definition"),
4727 					  _("alias"),
4728 					  _("column_alias"),
4729 					  _("from_item"),
4730 					  _("join_type"),
4731 					  _("from_item"),
4732 					  _("join_condition"),
4733 					  _("join_column"),
4734 					  _("and grouping_element can be one of:"),
4735 					  _("expression"),
4736 					  _("expression"),
4737 					  _("expression"),
4738 					  _("expression"),
4739 					  _("expression"),
4740 					  _("expression"),
4741 					  _("grouping_element"),
4742 					  _("and with_query is:"),
4743 					  _("with_query_name"),
4744 					  _("column_name"),
4745 					  _("select"),
4746 					  _("values"),
4747 					  _("insert"),
4748 					  _("update"),
4749 					  _("delete"),
4750 					  _("table_name"));
4751 }
4752 
4753 
4754 const struct _helpStruct QL_HELP[] = {
4755     { "ABORT",
4756       N_("abort the current transaction"),
4757       sql_help_ABORT,
4758       0 },
4759 
4760     { "ALTER AGGREGATE",
4761       N_("change the definition of an aggregate function"),
4762       sql_help_ALTER_AGGREGATE,
4763       9 },
4764 
4765     { "ALTER COLLATION",
4766       N_("change the definition of a collation"),
4767       sql_help_ALTER_COLLATION,
4768       4 },
4769 
4770     { "ALTER CONVERSION",
4771       N_("change the definition of a conversion"),
4772       sql_help_ALTER_CONVERSION,
4773       2 },
4774 
4775     { "ALTER DATABASE",
4776       N_("change a database"),
4777       sql_help_ALTER_DATABASE,
4778       17 },
4779 
4780     { "ALTER DEFAULT PRIVILEGES",
4781       N_("define default access privileges"),
4782       sql_help_ALTER_DEFAULT_PRIVILEGES,
4783       59 },
4784 
4785     { "ALTER DOMAIN",
4786       N_("change the definition of a domain"),
4787       sql_help_ALTER_DOMAIN,
4788       17 },
4789 
4790     { "ALTER EVENT TRIGGER",
4791       N_("change the definition of an event trigger"),
4792       sql_help_ALTER_EVENT_TRIGGER,
4793       3 },
4794 
4795     { "ALTER EXTENSION",
4796       N_("change the definition of an extension"),
4797       sql_help_ALTER_EXTENSION,
4798       40 },
4799 
4800     { "ALTER FOREIGN DATA WRAPPER",
4801       N_("change the definition of a foreign-data wrapper"),
4802       sql_help_ALTER_FOREIGN_DATA_WRAPPER,
4803       5 },
4804 
4805     { "ALTER FOREIGN TABLE",
4806       N_("change the definition of a foreign table"),
4807       sql_help_ALTER_FOREIGN_TABLE,
4808       34 },
4809 
4810     { "ALTER FUNCTION",
4811       N_("change the definition of a function"),
4812       sql_help_ALTER_FUNCTION,
4813       23 },
4814 
4815     { "ALTER GROUP",
4816       N_("change role name or membership"),
4817       sql_help_ALTER_GROUP,
4818       9 },
4819 
4820     { "ALTER INDEX",
4821       N_("change the definition of an index"),
4822       sql_help_ALTER_INDEX,
4823       9 },
4824 
4825     { "ALTER LANGUAGE",
4826       N_("change the definition of a procedural language"),
4827       sql_help_ALTER_LANGUAGE,
4828       1 },
4829 
4830     { "ALTER LARGE OBJECT",
4831       N_("change the definition of a large object"),
4832       sql_help_ALTER_LARGE_OBJECT,
4833       0 },
4834 
4835     { "ALTER MATERIALIZED VIEW",
4836       N_("change the definition of a materialized view"),
4837       sql_help_ALTER_MATERIALIZED_VIEW,
4838       23 },
4839 
4840     { "ALTER OPERATOR",
4841       N_("change the definition of an operator"),
4842       sql_help_ALTER_OPERATOR,
4843       9 },
4844 
4845     { "ALTER OPERATOR CLASS",
4846       N_("change the definition of an operator class"),
4847       sql_help_ALTER_OPERATOR_CLASS,
4848       7 },
4849 
4850     { "ALTER OPERATOR FAMILY",
4851       N_("change the definition of an operator family"),
4852       sql_help_ALTER_OPERATOR_FAMILY,
4853       19 },
4854 
4855     { "ALTER POLICY",
4856       N_("change the definition of a row level security policy"),
4857       sql_help_ALTER_POLICY,
4858       5 },
4859 
4860     { "ALTER PROCEDURE",
4861       N_("change the definition of a procedure"),
4862       sql_help_ALTER_PROCEDURE,
4863       17 },
4864 
4865     { "ALTER PUBLICATION",
4866       N_("change the definition of a publication"),
4867       sql_help_ALTER_PUBLICATION,
4868       5 },
4869 
4870     { "ALTER ROLE",
4871       N_("change a database role"),
4872       sql_help_ALTER_ROLE,
4873       26 },
4874 
4875     { "ALTER ROUTINE",
4876       N_("change the definition of a routine"),
4877       sql_help_ALTER_ROUTINE,
4878       22 },
4879 
4880     { "ALTER RULE",
4881       N_("change the definition of a rule"),
4882       sql_help_ALTER_RULE,
4883       0 },
4884 
4885     { "ALTER SCHEMA",
4886       N_("change the definition of a schema"),
4887       sql_help_ALTER_SCHEMA,
4888       1 },
4889 
4890     { "ALTER SEQUENCE",
4891       N_("change the definition of a sequence generator"),
4892       sql_help_ALTER_SEQUENCE,
4893       10 },
4894 
4895     { "ALTER SERVER",
4896       N_("change the definition of a foreign server"),
4897       sql_help_ALTER_SERVER,
4898       3 },
4899 
4900     { "ALTER STATISTICS",
4901       N_("change the definition of an extended statistics object"),
4902       sql_help_ALTER_STATISTICS,
4903       2 },
4904 
4905     { "ALTER SUBSCRIPTION",
4906       N_("change the definition of a subscription"),
4907       sql_help_ALTER_SUBSCRIPTION,
4908       7 },
4909 
4910     { "ALTER SYSTEM",
4911       N_("change a server configuration parameter"),
4912       sql_help_ALTER_SYSTEM,
4913       3 },
4914 
4915     { "ALTER TABLE",
4916       N_("change the definition of a table"),
4917       sql_help_ALTER_TABLE,
4918       110 },
4919 
4920     { "ALTER TABLESPACE",
4921       N_("change the definition of a tablespace"),
4922       sql_help_ALTER_TABLESPACE,
4923       3 },
4924 
4925     { "ALTER TEXT SEARCH CONFIGURATION",
4926       N_("change the definition of a text search configuration"),
4927       sql_help_ALTER_TEXT_SEARCH_CONFIGURATION,
4928       12 },
4929 
4930     { "ALTER TEXT SEARCH DICTIONARY",
4931       N_("change the definition of a text search dictionary"),
4932       sql_help_ALTER_TEXT_SEARCH_DICTIONARY,
4933       5 },
4934 
4935     { "ALTER TEXT SEARCH PARSER",
4936       N_("change the definition of a text search parser"),
4937       sql_help_ALTER_TEXT_SEARCH_PARSER,
4938       1 },
4939 
4940     { "ALTER TEXT SEARCH TEMPLATE",
4941       N_("change the definition of a text search template"),
4942       sql_help_ALTER_TEXT_SEARCH_TEMPLATE,
4943       1 },
4944 
4945     { "ALTER TRIGGER",
4946       N_("change the definition of a trigger"),
4947       sql_help_ALTER_TRIGGER,
4948       1 },
4949 
4950     { "ALTER TYPE",
4951       N_("change the definition of a type"),
4952       sql_help_ALTER_TYPE,
4953       12 },
4954 
4955     { "ALTER USER",
4956       N_("change a database role"),
4957       sql_help_ALTER_USER,
4958       26 },
4959 
4960     { "ALTER USER MAPPING",
4961       N_("change the definition of a user mapping"),
4962       sql_help_ALTER_USER_MAPPING,
4963       2 },
4964 
4965     { "ALTER VIEW",
4966       N_("change the definition of a view"),
4967       sql_help_ALTER_VIEW,
4968       6 },
4969 
4970     { "ANALYZE",
4971       N_("collect statistics about a database"),
4972       sql_help_ANALYZE,
4973       9 },
4974 
4975     { "BEGIN",
4976       N_("start a transaction block"),
4977       sql_help_BEGIN,
4978       6 },
4979 
4980     { "CALL",
4981       N_("invoke a procedure"),
4982       sql_help_CALL,
4983       0 },
4984 
4985     { "CHECKPOINT",
4986       N_("force a write-ahead log checkpoint"),
4987       sql_help_CHECKPOINT,
4988       0 },
4989 
4990     { "CLOSE",
4991       N_("close a cursor"),
4992       sql_help_CLOSE,
4993       0 },
4994 
4995     { "CLUSTER",
4996       N_("cluster a table according to an index"),
4997       sql_help_CLUSTER,
4998       1 },
4999 
5000     { "COMMENT",
5001       N_("define or change the comment of an object"),
5002       sql_help_COMMENT,
5003       51 },
5004 
5005     { "COMMIT",
5006       N_("commit the current transaction"),
5007       sql_help_COMMIT,
5008       0 },
5009 
5010     { "COMMIT PREPARED",
5011       N_("commit a transaction that was earlier prepared for two-phase commit"),
5012       sql_help_COMMIT_PREPARED,
5013       0 },
5014 
5015     { "COPY",
5016       N_("copy data between a file and a table"),
5017       sql_help_COPY,
5018       21 },
5019 
5020     { "CREATE ACCESS METHOD",
5021       N_("define a new access method"),
5022       sql_help_CREATE_ACCESS_METHOD,
5023       2 },
5024 
5025     { "CREATE AGGREGATE",
5026       N_("define a new aggregate function"),
5027       sql_help_CREATE_AGGREGATE,
5028       59 },
5029 
5030     { "CREATE CAST",
5031       N_("define a new cast"),
5032       sql_help_CREATE_CAST,
5033       10 },
5034 
5035     { "CREATE COLLATION",
5036       N_("define a new collation"),
5037       sql_help_CREATE_COLLATION,
5038       7 },
5039 
5040     { "CREATE CONVERSION",
5041       N_("define a new encoding conversion"),
5042       sql_help_CREATE_CONVERSION,
5043       1 },
5044 
5045     { "CREATE DATABASE",
5046       N_("create a new database"),
5047       sql_help_CREATE_DATABASE,
5048       9 },
5049 
5050     { "CREATE DOMAIN",
5051       N_("define a new domain"),
5052       sql_help_CREATE_DOMAIN,
5053       8 },
5054 
5055     { "CREATE EVENT TRIGGER",
5056       N_("define a new event trigger"),
5057       sql_help_CREATE_EVENT_TRIGGER,
5058       3 },
5059 
5060     { "CREATE EXTENSION",
5061       N_("install an extension"),
5062       sql_help_CREATE_EXTENSION,
5063       4 },
5064 
5065     { "CREATE FOREIGN DATA WRAPPER",
5066       N_("define a new foreign-data wrapper"),
5067       sql_help_CREATE_FOREIGN_DATA_WRAPPER,
5068       3 },
5069 
5070     { "CREATE FOREIGN TABLE",
5071       N_("define a new foreign table"),
5072       sql_help_CREATE_FOREIGN_TABLE,
5073       29 },
5074 
5075     { "CREATE FUNCTION",
5076       N_("define a new function"),
5077       sql_help_CREATE_FUNCTION,
5078       17 },
5079 
5080     { "CREATE GROUP",
5081       N_("define a new database role"),
5082       sql_help_CREATE_GROUP,
5083       19 },
5084 
5085     { "CREATE INDEX",
5086       N_("define a new index"),
5087       sql_help_CREATE_INDEX,
5088       5 },
5089 
5090     { "CREATE LANGUAGE",
5091       N_("define a new procedural language"),
5092       sql_help_CREATE_LANGUAGE,
5093       2 },
5094 
5095     { "CREATE MATERIALIZED VIEW",
5096       N_("define a new materialized view"),
5097       sql_help_CREATE_MATERIALIZED_VIEW,
5098       5 },
5099 
5100     { "CREATE OPERATOR",
5101       N_("define a new operator"),
5102       sql_help_CREATE_OPERATOR,
5103       6 },
5104 
5105     { "CREATE OPERATOR CLASS",
5106       N_("define a new operator class"),
5107       sql_help_CREATE_OPERATOR_CLASS,
5108       5 },
5109 
5110     { "CREATE OPERATOR FAMILY",
5111       N_("define a new operator family"),
5112       sql_help_CREATE_OPERATOR_FAMILY,
5113       0 },
5114 
5115     { "CREATE POLICY",
5116       N_("define a new row level security policy for a table"),
5117       sql_help_CREATE_POLICY,
5118       5 },
5119 
5120     { "CREATE PROCEDURE",
5121       N_("define a new procedure"),
5122       sql_help_CREATE_PROCEDURE,
5123       8 },
5124 
5125     { "CREATE PUBLICATION",
5126       N_("define a new publication"),
5127       sql_help_CREATE_PUBLICATION,
5128       3 },
5129 
5130     { "CREATE ROLE",
5131       N_("define a new database role"),
5132       sql_help_CREATE_ROLE,
5133       19 },
5134 
5135     { "CREATE RULE",
5136       N_("define a new rewrite rule"),
5137       sql_help_CREATE_RULE,
5138       6 },
5139 
5140     { "CREATE SCHEMA",
5141       N_("define a new schema"),
5142       sql_help_CREATE_SCHEMA,
5143       9 },
5144 
5145     { "CREATE SEQUENCE",
5146       N_("define a new sequence generator"),
5147       sql_help_CREATE_SEQUENCE,
5148       5 },
5149 
5150     { "CREATE SERVER",
5151       N_("define a new foreign server"),
5152       sql_help_CREATE_SERVER,
5153       2 },
5154 
5155     { "CREATE STATISTICS",
5156       N_("define extended statistics"),
5157       sql_help_CREATE_STATISTICS,
5158       3 },
5159 
5160     { "CREATE SUBSCRIPTION",
5161       N_("define a new subscription"),
5162       sql_help_CREATE_SUBSCRIPTION,
5163       3 },
5164 
5165     { "CREATE TABLE",
5166       N_("define a new table"),
5167       sql_help_CREATE_TABLE,
5168       78 },
5169 
5170     { "CREATE TABLE AS",
5171       N_("define a new table from the results of a query"),
5172       sql_help_CREATE_TABLE_AS,
5173       6 },
5174 
5175     { "CREATE TABLESPACE",
5176       N_("define a new tablespace"),
5177       sql_help_CREATE_TABLESPACE,
5178       3 },
5179 
5180     { "CREATE TEXT SEARCH CONFIGURATION",
5181       N_("define a new text search configuration"),
5182       sql_help_CREATE_TEXT_SEARCH_CONFIGURATION,
5183       3 },
5184 
5185     { "CREATE TEXT SEARCH DICTIONARY",
5186       N_("define a new text search dictionary"),
5187       sql_help_CREATE_TEXT_SEARCH_DICTIONARY,
5188       3 },
5189 
5190     { "CREATE TEXT SEARCH PARSER",
5191       N_("define a new text search parser"),
5192       sql_help_CREATE_TEXT_SEARCH_PARSER,
5193       6 },
5194 
5195     { "CREATE TEXT SEARCH TEMPLATE",
5196       N_("define a new text search template"),
5197       sql_help_CREATE_TEXT_SEARCH_TEMPLATE,
5198       3 },
5199 
5200     { "CREATE TRANSFORM",
5201       N_("define a new transform"),
5202       sql_help_CREATE_TRANSFORM,
5203       3 },
5204 
5205     { "CREATE TRIGGER",
5206       N_("define a new trigger"),
5207       sql_help_CREATE_TRIGGER,
5208       14 },
5209 
5210     { "CREATE TYPE",
5211       N_("define a new data type"),
5212       sql_help_CREATE_TYPE,
5213       35 },
5214 
5215     { "CREATE USER",
5216       N_("define a new database role"),
5217       sql_help_CREATE_USER,
5218       19 },
5219 
5220     { "CREATE USER MAPPING",
5221       N_("define a new mapping of a user to a foreign server"),
5222       sql_help_CREATE_USER_MAPPING,
5223       2 },
5224 
5225     { "CREATE VIEW",
5226       N_("define a new view"),
5227       sql_help_CREATE_VIEW,
5228       3 },
5229 
5230     { "DEALLOCATE",
5231       N_("deallocate a prepared statement"),
5232       sql_help_DEALLOCATE,
5233       0 },
5234 
5235     { "DECLARE",
5236       N_("define a cursor"),
5237       sql_help_DECLARE,
5238       1 },
5239 
5240     { "DELETE",
5241       N_("delete rows of a table"),
5242       sql_help_DELETE,
5243       4 },
5244 
5245     { "DISCARD",
5246       N_("discard session state"),
5247       sql_help_DISCARD,
5248       0 },
5249 
5250     { "DO",
5251       N_("execute an anonymous code block"),
5252       sql_help_DO,
5253       0 },
5254 
5255     { "DROP ACCESS METHOD",
5256       N_("remove an access method"),
5257       sql_help_DROP_ACCESS_METHOD,
5258       0 },
5259 
5260     { "DROP AGGREGATE",
5261       N_("remove an aggregate function"),
5262       sql_help_DROP_AGGREGATE,
5263       6 },
5264 
5265     { "DROP CAST",
5266       N_("remove a cast"),
5267       sql_help_DROP_CAST,
5268       0 },
5269 
5270     { "DROP COLLATION",
5271       N_("remove a collation"),
5272       sql_help_DROP_COLLATION,
5273       0 },
5274 
5275     { "DROP CONVERSION",
5276       N_("remove a conversion"),
5277       sql_help_DROP_CONVERSION,
5278       0 },
5279 
5280     { "DROP DATABASE",
5281       N_("remove a database"),
5282       sql_help_DROP_DATABASE,
5283       0 },
5284 
5285     { "DROP DOMAIN",
5286       N_("remove a domain"),
5287       sql_help_DROP_DOMAIN,
5288       0 },
5289 
5290     { "DROP EVENT TRIGGER",
5291       N_("remove an event trigger"),
5292       sql_help_DROP_EVENT_TRIGGER,
5293       0 },
5294 
5295     { "DROP EXTENSION",
5296       N_("remove an extension"),
5297       sql_help_DROP_EXTENSION,
5298       0 },
5299 
5300     { "DROP FOREIGN DATA WRAPPER",
5301       N_("remove a foreign-data wrapper"),
5302       sql_help_DROP_FOREIGN_DATA_WRAPPER,
5303       0 },
5304 
5305     { "DROP FOREIGN TABLE",
5306       N_("remove a foreign table"),
5307       sql_help_DROP_FOREIGN_TABLE,
5308       0 },
5309 
5310     { "DROP FUNCTION",
5311       N_("remove a function"),
5312       sql_help_DROP_FUNCTION,
5313       1 },
5314 
5315     { "DROP GROUP",
5316       N_("remove a database role"),
5317       sql_help_DROP_GROUP,
5318       0 },
5319 
5320     { "DROP INDEX",
5321       N_("remove an index"),
5322       sql_help_DROP_INDEX,
5323       0 },
5324 
5325     { "DROP LANGUAGE",
5326       N_("remove a procedural language"),
5327       sql_help_DROP_LANGUAGE,
5328       0 },
5329 
5330     { "DROP MATERIALIZED VIEW",
5331       N_("remove a materialized view"),
5332       sql_help_DROP_MATERIALIZED_VIEW,
5333       0 },
5334 
5335     { "DROP OPERATOR",
5336       N_("remove an operator"),
5337       sql_help_DROP_OPERATOR,
5338       0 },
5339 
5340     { "DROP OPERATOR CLASS",
5341       N_("remove an operator class"),
5342       sql_help_DROP_OPERATOR_CLASS,
5343       0 },
5344 
5345     { "DROP OPERATOR FAMILY",
5346       N_("remove an operator family"),
5347       sql_help_DROP_OPERATOR_FAMILY,
5348       0 },
5349 
5350     { "DROP OWNED",
5351       N_("remove database objects owned by a database role"),
5352       sql_help_DROP_OWNED,
5353       0 },
5354 
5355     { "DROP POLICY",
5356       N_("remove a row level security policy from a table"),
5357       sql_help_DROP_POLICY,
5358       0 },
5359 
5360     { "DROP PROCEDURE",
5361       N_("remove a procedure"),
5362       sql_help_DROP_PROCEDURE,
5363       1 },
5364 
5365     { "DROP PUBLICATION",
5366       N_("remove a publication"),
5367       sql_help_DROP_PUBLICATION,
5368       0 },
5369 
5370     { "DROP ROLE",
5371       N_("remove a database role"),
5372       sql_help_DROP_ROLE,
5373       0 },
5374 
5375     { "DROP ROUTINE",
5376       N_("remove a routine"),
5377       sql_help_DROP_ROUTINE,
5378       1 },
5379 
5380     { "DROP RULE",
5381       N_("remove a rewrite rule"),
5382       sql_help_DROP_RULE,
5383       0 },
5384 
5385     { "DROP SCHEMA",
5386       N_("remove a schema"),
5387       sql_help_DROP_SCHEMA,
5388       0 },
5389 
5390     { "DROP SEQUENCE",
5391       N_("remove a sequence"),
5392       sql_help_DROP_SEQUENCE,
5393       0 },
5394 
5395     { "DROP SERVER",
5396       N_("remove a foreign server descriptor"),
5397       sql_help_DROP_SERVER,
5398       0 },
5399 
5400     { "DROP STATISTICS",
5401       N_("remove extended statistics"),
5402       sql_help_DROP_STATISTICS,
5403       0 },
5404 
5405     { "DROP SUBSCRIPTION",
5406       N_("remove a subscription"),
5407       sql_help_DROP_SUBSCRIPTION,
5408       0 },
5409 
5410     { "DROP TABLE",
5411       N_("remove a table"),
5412       sql_help_DROP_TABLE,
5413       0 },
5414 
5415     { "DROP TABLESPACE",
5416       N_("remove a tablespace"),
5417       sql_help_DROP_TABLESPACE,
5418       0 },
5419 
5420     { "DROP TEXT SEARCH CONFIGURATION",
5421       N_("remove a text search configuration"),
5422       sql_help_DROP_TEXT_SEARCH_CONFIGURATION,
5423       0 },
5424 
5425     { "DROP TEXT SEARCH DICTIONARY",
5426       N_("remove a text search dictionary"),
5427       sql_help_DROP_TEXT_SEARCH_DICTIONARY,
5428       0 },
5429 
5430     { "DROP TEXT SEARCH PARSER",
5431       N_("remove a text search parser"),
5432       sql_help_DROP_TEXT_SEARCH_PARSER,
5433       0 },
5434 
5435     { "DROP TEXT SEARCH TEMPLATE",
5436       N_("remove a text search template"),
5437       sql_help_DROP_TEXT_SEARCH_TEMPLATE,
5438       0 },
5439 
5440     { "DROP TRANSFORM",
5441       N_("remove a transform"),
5442       sql_help_DROP_TRANSFORM,
5443       0 },
5444 
5445     { "DROP TRIGGER",
5446       N_("remove a trigger"),
5447       sql_help_DROP_TRIGGER,
5448       0 },
5449 
5450     { "DROP TYPE",
5451       N_("remove a data type"),
5452       sql_help_DROP_TYPE,
5453       0 },
5454 
5455     { "DROP USER",
5456       N_("remove a database role"),
5457       sql_help_DROP_USER,
5458       0 },
5459 
5460     { "DROP USER MAPPING",
5461       N_("remove a user mapping for a foreign server"),
5462       sql_help_DROP_USER_MAPPING,
5463       0 },
5464 
5465     { "DROP VIEW",
5466       N_("remove a view"),
5467       sql_help_DROP_VIEW,
5468       0 },
5469 
5470     { "END",
5471       N_("commit the current transaction"),
5472       sql_help_END,
5473       0 },
5474 
5475     { "EXECUTE",
5476       N_("execute a prepared statement"),
5477       sql_help_EXECUTE,
5478       0 },
5479 
5480     { "EXPLAIN",
5481       N_("show the execution plan of a statement"),
5482       sql_help_EXPLAIN,
5483       11 },
5484 
5485     { "FETCH",
5486       N_("retrieve rows from a query using a cursor"),
5487       sql_help_FETCH,
5488       17 },
5489 
5490     { "GRANT",
5491       N_("define access privileges"),
5492       sql_help_GRANT,
5493       67 },
5494 
5495     { "IMPORT FOREIGN SCHEMA",
5496       N_("import table definitions from a foreign server"),
5497       sql_help_IMPORT_FOREIGN_SCHEMA,
5498       4 },
5499 
5500     { "INSERT",
5501       N_("create new rows in a table"),
5502       sql_help_INSERT,
5503       19 },
5504 
5505     { "LISTEN",
5506       N_("listen for a notification"),
5507       sql_help_LISTEN,
5508       0 },
5509 
5510     { "LOAD",
5511       N_("load a shared library file"),
5512       sql_help_LOAD,
5513       0 },
5514 
5515     { "LOCK",
5516       N_("lock a table"),
5517       sql_help_LOCK,
5518       5 },
5519 
5520     { "MOVE",
5521       N_("position a cursor"),
5522       sql_help_MOVE,
5523       17 },
5524 
5525     { "NOTIFY",
5526       N_("generate a notification"),
5527       sql_help_NOTIFY,
5528       0 },
5529 
5530     { "PREPARE",
5531       N_("prepare a statement for execution"),
5532       sql_help_PREPARE,
5533       0 },
5534 
5535     { "PREPARE TRANSACTION",
5536       N_("prepare the current transaction for two-phase commit"),
5537       sql_help_PREPARE_TRANSACTION,
5538       0 },
5539 
5540     { "REASSIGN OWNED",
5541       N_("change the ownership of database objects owned by a database role"),
5542       sql_help_REASSIGN_OWNED,
5543       1 },
5544 
5545     { "REFRESH MATERIALIZED VIEW",
5546       N_("replace the contents of a materialized view"),
5547       sql_help_REFRESH_MATERIALIZED_VIEW,
5548       1 },
5549 
5550     { "REINDEX",
5551       N_("rebuild indexes"),
5552       sql_help_REINDEX,
5553       0 },
5554 
5555     { "RELEASE SAVEPOINT",
5556       N_("destroy a previously defined savepoint"),
5557       sql_help_RELEASE_SAVEPOINT,
5558       0 },
5559 
5560     { "RESET",
5561       N_("restore the value of a run-time parameter to the default value"),
5562       sql_help_RESET,
5563       1 },
5564 
5565     { "REVOKE",
5566       N_("remove access privileges"),
5567       sql_help_REVOKE,
5568       94 },
5569 
5570     { "ROLLBACK",
5571       N_("abort the current transaction"),
5572       sql_help_ROLLBACK,
5573       0 },
5574 
5575     { "ROLLBACK PREPARED",
5576       N_("cancel a transaction that was earlier prepared for two-phase commit"),
5577       sql_help_ROLLBACK_PREPARED,
5578       0 },
5579 
5580     { "ROLLBACK TO SAVEPOINT",
5581       N_("roll back to a savepoint"),
5582       sql_help_ROLLBACK_TO_SAVEPOINT,
5583       0 },
5584 
5585     { "SAVEPOINT",
5586       N_("define a new savepoint within the current transaction"),
5587       sql_help_SAVEPOINT,
5588       0 },
5589 
5590     { "SECURITY LABEL",
5591       N_("define or change a security label applied to an object"),
5592       sql_help_SECURITY_LABEL,
5593       29 },
5594 
5595     { "SELECT",
5596       N_("retrieve rows from a table or view"),
5597       sql_help_SELECT,
5598       42 },
5599 
5600     { "SELECT INTO",
5601       N_("define a new table from the results of a query"),
5602       sql_help_SELECT_INTO,
5603       14 },
5604 
5605     { "SET",
5606       N_("change a run-time parameter"),
5607       sql_help_SET,
5608       1 },
5609 
5610     { "SET CONSTRAINTS",
5611       N_("set constraint check timing for the current transaction"),
5612       sql_help_SET_CONSTRAINTS,
5613       0 },
5614 
5615     { "SET ROLE",
5616       N_("set the current user identifier of the current session"),
5617       sql_help_SET_ROLE,
5618       2 },
5619 
5620     { "SET SESSION AUTHORIZATION",
5621       N_("set the session user identifier and the current user identifier of the current session"),
5622       sql_help_SET_SESSION_AUTHORIZATION,
5623       2 },
5624 
5625     { "SET TRANSACTION",
5626       N_("set the characteristics of the current transaction"),
5627       sql_help_SET_TRANSACTION,
5628       8 },
5629 
5630     { "SHOW",
5631       N_("show the value of a run-time parameter"),
5632       sql_help_SHOW,
5633       1 },
5634 
5635     { "START TRANSACTION",
5636       N_("start a transaction block"),
5637       sql_help_START_TRANSACTION,
5638       6 },
5639 
5640     { "TABLE",
5641       N_("retrieve rows from a table or view"),
5642       sql_help_TABLE,
5643       42 },
5644 
5645     { "TRUNCATE",
5646       N_("empty a table or set of tables"),
5647       sql_help_TRUNCATE,
5648       1 },
5649 
5650     { "UNLISTEN",
5651       N_("stop listening for a notification"),
5652       sql_help_UNLISTEN,
5653       0 },
5654 
5655     { "UPDATE",
5656       N_("update rows of a table"),
5657       sql_help_UPDATE,
5658       8 },
5659 
5660     { "VACUUM",
5661       N_("garbage-collect and optionally analyze a database"),
5662       sql_help_VACUUM,
5663       13 },
5664 
5665     { "VALUES",
5666       N_("compute a set of rows"),
5667       sql_help_VALUES,
5668       4 },
5669 
5670     { "WITH",
5671       N_("retrieve rows from a table or view"),
5672       sql_help_WITH,
5673       42 },
5674 
5675 
5676     { NULL, NULL, NULL }    /* End of list marker */
5677 };
5678