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