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