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