neonctl 2.22.2 → 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -0
- package/analytics.js +5 -2
- package/commands/branches.js +9 -1
- package/commands/connection_string.js +9 -1
- package/commands/functions.js +277 -0
- package/commands/index.js +4 -0
- package/commands/neon_auth.js +1013 -0
- package/commands/projects.js +9 -1
- package/commands/psql.js +6 -1
- package/functions_api.js +44 -0
- package/package.json +15 -5
- package/psql/cli.js +51 -0
- package/psql/command/cmd_cond.js +437 -0
- package/psql/command/cmd_connect.js +815 -0
- package/psql/command/cmd_copy.js +1025 -0
- package/psql/command/cmd_describe.js +1810 -0
- package/psql/command/cmd_format.js +909 -0
- package/psql/command/cmd_io.js +2187 -0
- package/psql/command/cmd_lo.js +385 -0
- package/psql/command/cmd_meta.js +970 -0
- package/psql/command/cmd_misc.js +187 -0
- package/psql/command/cmd_pipeline.js +1141 -0
- package/psql/command/cmd_restrict.js +171 -0
- package/psql/command/cmd_show.js +751 -0
- package/psql/command/dispatch.js +343 -0
- package/psql/command/inputQueue.js +42 -0
- package/psql/command/shared.js +71 -0
- package/psql/complete/filenames.js +139 -0
- package/psql/complete/index.js +104 -0
- package/psql/complete/matcher.js +314 -0
- package/psql/complete/psqlVars.js +247 -0
- package/psql/complete/queries.js +491 -0
- package/psql/complete/rules.js +2387 -0
- package/psql/core/common.js +1250 -0
- package/psql/core/help.js +576 -0
- package/psql/core/mainloop.js +1353 -0
- package/psql/core/prompt.js +437 -0
- package/psql/core/settings.js +684 -0
- package/psql/core/sqlHelp.js +1066 -0
- package/psql/core/startup.js +840 -0
- package/psql/core/syncVars.js +116 -0
- package/psql/core/variables.js +287 -0
- package/psql/describe/formatters.js +1277 -0
- package/psql/describe/processNamePattern.js +270 -0
- package/psql/describe/queries.js +2373 -0
- package/psql/describe/versionGate.js +43 -0
- package/psql/index.js +2005 -0
- package/psql/io/history.js +299 -0
- package/psql/io/input.js +120 -0
- package/psql/io/lineEditor/buffer.js +323 -0
- package/psql/io/lineEditor/complete.js +227 -0
- package/psql/io/lineEditor/filename.js +159 -0
- package/psql/io/lineEditor/index.js +891 -0
- package/psql/io/lineEditor/keymap.js +738 -0
- package/psql/io/lineEditor/vt100.js +363 -0
- package/psql/io/pgpass.js +202 -0
- package/psql/io/pgservice.js +194 -0
- package/psql/io/psqlrc.js +422 -0
- package/psql/print/aligned.js +1756 -0
- package/psql/print/asciidoc.js +248 -0
- package/psql/print/crosstab.js +460 -0
- package/psql/print/csv.js +92 -0
- package/psql/print/html.js +258 -0
- package/psql/print/json.js +96 -0
- package/psql/print/latex.js +396 -0
- package/psql/print/pager.js +265 -0
- package/psql/print/troff.js +258 -0
- package/psql/print/unaligned.js +118 -0
- package/psql/print/units.js +135 -0
- package/psql/scanner/slash.js +513 -0
- package/psql/scanner/sql.js +910 -0
- package/psql/scanner/stringutils.js +390 -0
- package/psql/types/backslash.js +1 -0
- package/psql/types/connection.js +1 -0
- package/psql/types/index.js +7 -0
- package/psql/types/printer.js +1 -0
- package/psql/types/repl.js +1 -0
- package/psql/types/scanner.js +24 -0
- package/psql/types/settings.js +1 -0
- package/psql/types/variables.js +1 -0
- package/psql/wire/connection.js +2844 -0
- package/psql/wire/copy.js +108 -0
- package/psql/wire/notify.js +59 -0
- package/psql/wire/pipeline.js +519 -0
- package/psql/wire/protocol.js +466 -0
- package/psql/wire/sasl.js +296 -0
- package/psql/wire/tls.js +596 -0
- package/test_utils/fixtures.js +1 -0
- package/utils/esbuild.js +147 -0
- package/utils/psql.js +107 -11
- package/utils/zip.js +4 -0
- package/writer.js +1 -1
- package/commands/auth.test.js +0 -211
- package/commands/branches.test.js +0 -460
- package/commands/checkout.test.js +0 -170
- package/commands/connection_string.test.js +0 -196
- package/commands/data_api.test.js +0 -169
- package/commands/databases.test.js +0 -39
- package/commands/help.test.js +0 -9
- package/commands/init.test.js +0 -56
- package/commands/ip_allow.test.js +0 -59
- package/commands/link.test.js +0 -381
- package/commands/operations.test.js +0 -7
- package/commands/orgs.test.js +0 -7
- package/commands/projects.test.js +0 -144
- package/commands/psql.test.js +0 -49
- package/commands/roles.test.js +0 -37
- package/commands/set_context.test.js +0 -159
- package/commands/vpc_endpoints.test.js +0 -69
- package/context.test.js +0 -119
- package/env.test.js +0 -55
- package/utils/formats.test.js +0 -32
- package/writer.test.js +0 -104
|
@@ -0,0 +1,1066 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQL command help data for `\h` (helpSQL).
|
|
3
|
+
*
|
|
4
|
+
* This is a minimum-viable subset of upstream PostgreSQL's `sql_help.h`, which
|
|
5
|
+
* is auto-generated from the SGML documentation at psql build time and covers
|
|
6
|
+
* roughly 600 commands. Here we ship concise syntax skeletons for the ~70 SQL
|
|
7
|
+
* commands that account for the vast majority of interactive `\h` lookups.
|
|
8
|
+
* Each entry mirrors the shape of upstream `\h` output:
|
|
9
|
+
*
|
|
10
|
+
* Command: <cmd>
|
|
11
|
+
* Description: <one-line description>
|
|
12
|
+
* Syntax:
|
|
13
|
+
* <multi-line synopsis>
|
|
14
|
+
*
|
|
15
|
+
* URL: <docs page>
|
|
16
|
+
*
|
|
17
|
+
* Drill-down on rarer commands is delegated to the URL — accuracy on the
|
|
18
|
+
* skeleton is what matters here; the docs page is the source of truth for
|
|
19
|
+
* details like reloption catalogs and per-storage-engine quirks.
|
|
20
|
+
*/
|
|
21
|
+
const PG_DOCS = 'https://www.postgresql.org/docs/current/sql-';
|
|
22
|
+
export const SQL_HELP = [
|
|
23
|
+
// ---------------------------------------------------------------------------
|
|
24
|
+
// DML
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
{
|
|
27
|
+
cmd: 'SELECT',
|
|
28
|
+
description: 'retrieve rows from a table or view',
|
|
29
|
+
syntax: `[ WITH [ RECURSIVE ] with_query [, ...] ]
|
|
30
|
+
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ]
|
|
31
|
+
[ * | expression [ [ AS ] output_name ] [, ...] ]
|
|
32
|
+
[ FROM from_item [, ...] ]
|
|
33
|
+
[ WHERE condition ]
|
|
34
|
+
[ GROUP BY [ ALL | DISTINCT ] grouping_element [, ...] ]
|
|
35
|
+
[ HAVING condition ]
|
|
36
|
+
[ WINDOW window_name AS ( window_definition ) [, ...] ]
|
|
37
|
+
[ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ]
|
|
38
|
+
[ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] ]
|
|
39
|
+
[ LIMIT { count | ALL } ]
|
|
40
|
+
[ OFFSET start [ ROW | ROWS ] ]
|
|
41
|
+
[ FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF from_reference [, ...] ] [ NOWAIT | SKIP LOCKED ] [...] ]`,
|
|
42
|
+
docUrl: `${PG_DOCS}select.html`,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
cmd: 'INSERT',
|
|
46
|
+
description: 'create new rows in a table',
|
|
47
|
+
syntax: `[ WITH [ RECURSIVE ] with_query [, ...] ]
|
|
48
|
+
INSERT INTO table_name [ AS alias ] [ ( column_name [, ...] ) ]
|
|
49
|
+
[ OVERRIDING { SYSTEM | USER } VALUE ]
|
|
50
|
+
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query }
|
|
51
|
+
[ ON CONFLICT [ conflict_target ] conflict_action ]
|
|
52
|
+
[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]
|
|
53
|
+
|
|
54
|
+
where conflict_action is one of:
|
|
55
|
+
DO NOTHING
|
|
56
|
+
DO UPDATE SET { column_name = { expression | DEFAULT } |
|
|
57
|
+
( column_name [, ...] ) = ( { expression | DEFAULT } [, ...] ) } [, ...]
|
|
58
|
+
[ WHERE condition ]`,
|
|
59
|
+
docUrl: `${PG_DOCS}insert.html`,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
cmd: 'UPDATE',
|
|
63
|
+
description: 'update rows of a table',
|
|
64
|
+
syntax: `[ WITH [ RECURSIVE ] with_query [, ...] ]
|
|
65
|
+
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
|
|
66
|
+
SET { column_name = { expression | DEFAULT } |
|
|
67
|
+
( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [, ...] ) |
|
|
68
|
+
( column_name [, ...] ) = ( sub-SELECT )
|
|
69
|
+
} [, ...]
|
|
70
|
+
[ FROM from_item [, ...] ]
|
|
71
|
+
[ WHERE condition | WHERE CURRENT OF cursor_name ]
|
|
72
|
+
[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]`,
|
|
73
|
+
docUrl: `${PG_DOCS}update.html`,
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
cmd: 'DELETE',
|
|
77
|
+
description: 'delete rows of a table',
|
|
78
|
+
syntax: `[ WITH [ RECURSIVE ] with_query [, ...] ]
|
|
79
|
+
DELETE FROM [ ONLY ] table_name [ * ] [ [ AS ] alias ]
|
|
80
|
+
[ USING from_item [, ...] ]
|
|
81
|
+
[ WHERE condition | WHERE CURRENT OF cursor_name ]
|
|
82
|
+
[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]`,
|
|
83
|
+
docUrl: `${PG_DOCS}delete.html`,
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
cmd: 'MERGE',
|
|
87
|
+
description: 'conditionally insert, update, or delete rows of a table',
|
|
88
|
+
syntax: `[ WITH with_query [, ...] ]
|
|
89
|
+
MERGE INTO [ ONLY ] target_table_name [ * ] [ [ AS ] target_alias ]
|
|
90
|
+
USING data_source ON join_condition
|
|
91
|
+
when_clause [...]
|
|
92
|
+
[ RETURNING { * | output_expression [ [ AS ] output_name ] } [, ...] ]
|
|
93
|
+
|
|
94
|
+
where when_clause is one of:
|
|
95
|
+
WHEN MATCHED [ AND condition ] THEN { merge_update | merge_delete | DO NOTHING }
|
|
96
|
+
WHEN NOT MATCHED BY SOURCE [ AND condition ] THEN { merge_update | merge_delete | DO NOTHING }
|
|
97
|
+
WHEN NOT MATCHED [ BY TARGET ] [ AND condition ] THEN { merge_insert | DO NOTHING }`,
|
|
98
|
+
docUrl: `${PG_DOCS}merge.html`,
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
cmd: 'COPY',
|
|
102
|
+
description: 'copy data between a file and a table',
|
|
103
|
+
syntax: `COPY table_name [ ( column_name [, ...] ) ]
|
|
104
|
+
FROM { 'filename' | PROGRAM 'command' | STDIN }
|
|
105
|
+
[ [ WITH ] ( option [, ...] ) ]
|
|
106
|
+
[ WHERE condition ]
|
|
107
|
+
|
|
108
|
+
COPY { table_name [ ( column_name [, ...] ) ] | ( query ) }
|
|
109
|
+
TO { 'filename' | PROGRAM 'command' | STDOUT }
|
|
110
|
+
[ [ WITH ] ( option [, ...] ) ]`,
|
|
111
|
+
docUrl: `${PG_DOCS}copy.html`,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
cmd: 'EXPLAIN',
|
|
115
|
+
description: 'show the execution plan of a statement',
|
|
116
|
+
syntax: `EXPLAIN [ ( option [, ...] ) ] statement
|
|
117
|
+
EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
|
|
118
|
+
|
|
119
|
+
where option can be one of:
|
|
120
|
+
ANALYZE [ boolean ]
|
|
121
|
+
VERBOSE [ boolean ]
|
|
122
|
+
COSTS [ boolean ]
|
|
123
|
+
SETTINGS [ boolean ]
|
|
124
|
+
GENERIC_PLAN [ boolean ]
|
|
125
|
+
BUFFERS [ boolean ]
|
|
126
|
+
SERIALIZE [ { NONE | TEXT | BINARY } ]
|
|
127
|
+
WAL [ boolean ]
|
|
128
|
+
TIMING [ boolean ]
|
|
129
|
+
SUMMARY [ boolean ]
|
|
130
|
+
MEMORY [ boolean ]
|
|
131
|
+
FORMAT { TEXT | XML | JSON | YAML }`,
|
|
132
|
+
docUrl: `${PG_DOCS}explain.html`,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
cmd: 'ANALYZE',
|
|
136
|
+
description: 'collect statistics about a database',
|
|
137
|
+
syntax: `ANALYZE [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
|
|
138
|
+
ANALYZE [ VERBOSE ] [ table_and_columns [, ...] ]
|
|
139
|
+
|
|
140
|
+
where option can be one of:
|
|
141
|
+
VERBOSE [ boolean ]
|
|
142
|
+
SKIP_LOCKED [ boolean ]
|
|
143
|
+
BUFFER_USAGE_LIMIT size
|
|
144
|
+
|
|
145
|
+
and table_and_columns is:
|
|
146
|
+
table_name [ ( column_name [, ...] ) ]`,
|
|
147
|
+
docUrl: `${PG_DOCS}analyze.html`,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
cmd: 'VACUUM',
|
|
151
|
+
description: 'garbage-collect and optionally analyze a database',
|
|
152
|
+
syntax: `VACUUM [ ( option [, ...] ) ] [ table_and_columns [, ...] ]
|
|
153
|
+
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ ANALYZE ] [ table_and_columns [, ...] ]
|
|
154
|
+
|
|
155
|
+
where option can be one of:
|
|
156
|
+
FULL [ boolean ]
|
|
157
|
+
FREEZE [ boolean ]
|
|
158
|
+
VERBOSE [ boolean ]
|
|
159
|
+
ANALYZE [ boolean ]
|
|
160
|
+
DISABLE_PAGE_SKIPPING [ boolean ]
|
|
161
|
+
SKIP_LOCKED [ boolean ]
|
|
162
|
+
INDEX_CLEANUP { AUTO | ON | OFF }
|
|
163
|
+
PROCESS_TOAST [ boolean ]
|
|
164
|
+
TRUNCATE [ boolean ]
|
|
165
|
+
PARALLEL integer
|
|
166
|
+
SKIP_DATABASE_STATS [ boolean ]
|
|
167
|
+
ONLY_DATABASE_STATS [ boolean ]
|
|
168
|
+
BUFFER_USAGE_LIMIT size`,
|
|
169
|
+
docUrl: `${PG_DOCS}vacuum.html`,
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
cmd: 'REINDEX',
|
|
173
|
+
description: 'rebuild indexes',
|
|
174
|
+
syntax: `REINDEX [ ( option [, ...] ) ] { INDEX | TABLE | SCHEMA } [ CONCURRENTLY ] name
|
|
175
|
+
REINDEX [ ( option [, ...] ) ] { DATABASE | SYSTEM } [ CONCURRENTLY ] [ name ]
|
|
176
|
+
|
|
177
|
+
where option can be one of:
|
|
178
|
+
CONCURRENTLY [ boolean ]
|
|
179
|
+
TABLESPACE new_tablespace
|
|
180
|
+
VERBOSE [ boolean ]`,
|
|
181
|
+
docUrl: `${PG_DOCS}reindex.html`,
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
cmd: 'TRUNCATE',
|
|
185
|
+
description: 'empty a table or set of tables',
|
|
186
|
+
syntax: `TRUNCATE [ TABLE ] [ ONLY ] name [ * ] [, ... ]
|
|
187
|
+
[ RESTART IDENTITY | CONTINUE IDENTITY ] [ CASCADE | RESTRICT ]`,
|
|
188
|
+
docUrl: `${PG_DOCS}truncate.html`,
|
|
189
|
+
},
|
|
190
|
+
// ---------------------------------------------------------------------------
|
|
191
|
+
// CREATE
|
|
192
|
+
// ---------------------------------------------------------------------------
|
|
193
|
+
{
|
|
194
|
+
cmd: 'CREATE TABLE',
|
|
195
|
+
description: 'define a new table',
|
|
196
|
+
syntax: `CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [
|
|
197
|
+
{ column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] [ COMPRESSION compression_method ] [ COLLATE collation ] [ column_constraint [ ... ] ]
|
|
198
|
+
| table_constraint
|
|
199
|
+
| LIKE source_table [ like_option ... ] }
|
|
200
|
+
[, ... ]
|
|
201
|
+
] )
|
|
202
|
+
[ INHERITS ( parent_table [, ... ] ) ]
|
|
203
|
+
[ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
|
|
204
|
+
[ USING method ]
|
|
205
|
+
[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
|
|
206
|
+
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
|
|
207
|
+
[ TABLESPACE tablespace_name ]
|
|
208
|
+
|
|
209
|
+
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
|
|
210
|
+
OF type_name [ ( { column_name [ WITH OPTIONS ] [ column_constraint [ ... ] ] | table_constraint } [, ... ] ) ] [...]
|
|
211
|
+
|
|
212
|
+
CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name
|
|
213
|
+
PARTITION OF parent_table [ ( ... ) ] { FOR VALUES partition_bound_spec | DEFAULT } [...]`,
|
|
214
|
+
docUrl: `${PG_DOCS}createtable.html`,
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
cmd: 'CREATE INDEX',
|
|
218
|
+
description: 'define a new index',
|
|
219
|
+
syntax: `CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] name ] ON [ ONLY ] table_name [ USING method ]
|
|
220
|
+
( { column_name | ( expression ) } [ COLLATE collation ] [ opclass [ ( opclass_parameter = value [, ... ] ) ] ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] )
|
|
221
|
+
[ INCLUDE ( column_name [, ...] ) ]
|
|
222
|
+
[ NULLS [ NOT ] DISTINCT ]
|
|
223
|
+
[ WITH ( storage_parameter [= value] [, ... ] ) ]
|
|
224
|
+
[ TABLESPACE tablespace_name ]
|
|
225
|
+
[ WHERE predicate ]`,
|
|
226
|
+
docUrl: `${PG_DOCS}createindex.html`,
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
cmd: 'CREATE VIEW',
|
|
230
|
+
description: 'define a new view',
|
|
231
|
+
syntax: `CREATE [ OR REPLACE ] [ TEMP | TEMPORARY ] [ RECURSIVE ] VIEW name [ ( column_name [, ...] ) ]
|
|
232
|
+
[ WITH ( view_option_name [= view_option_value] [, ... ] ) ]
|
|
233
|
+
AS query
|
|
234
|
+
[ WITH [ CASCADED | LOCAL ] CHECK OPTION ]`,
|
|
235
|
+
docUrl: `${PG_DOCS}createview.html`,
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
cmd: 'CREATE MATERIALIZED VIEW',
|
|
239
|
+
description: 'define a new materialized view',
|
|
240
|
+
syntax: `CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] table_name
|
|
241
|
+
[ (column_name [, ...] ) ]
|
|
242
|
+
[ USING method ]
|
|
243
|
+
[ WITH ( storage_parameter [= value] [, ... ] ) ]
|
|
244
|
+
[ TABLESPACE tablespace_name ]
|
|
245
|
+
AS query
|
|
246
|
+
[ WITH [ NO ] DATA ]`,
|
|
247
|
+
docUrl: `${PG_DOCS}creatematerializedview.html`,
|
|
248
|
+
},
|
|
249
|
+
{
|
|
250
|
+
cmd: 'CREATE FUNCTION',
|
|
251
|
+
description: 'define a new function',
|
|
252
|
+
syntax: `CREATE [ OR REPLACE ] FUNCTION
|
|
253
|
+
name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
|
|
254
|
+
[ RETURNS rettype
|
|
255
|
+
| RETURNS TABLE ( column_name column_type [, ...] ) ]
|
|
256
|
+
{ LANGUAGE lang_name
|
|
257
|
+
| TRANSFORM { FOR TYPE type_name } [, ... ]
|
|
258
|
+
| WINDOW
|
|
259
|
+
| { IMMUTABLE | STABLE | VOLATILE }
|
|
260
|
+
| [ NOT ] LEAKPROOF
|
|
261
|
+
| { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT }
|
|
262
|
+
| { [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER }
|
|
263
|
+
| PARALLEL { UNSAFE | RESTRICTED | SAFE }
|
|
264
|
+
| COST execution_cost
|
|
265
|
+
| ROWS result_rows
|
|
266
|
+
| SUPPORT support_function
|
|
267
|
+
| SET configuration_parameter { TO value | = value | FROM CURRENT }
|
|
268
|
+
| AS 'definition'
|
|
269
|
+
| AS 'obj_file', 'link_symbol'
|
|
270
|
+
| sql_body
|
|
271
|
+
} ...`,
|
|
272
|
+
docUrl: `${PG_DOCS}createfunction.html`,
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
cmd: 'CREATE PROCEDURE',
|
|
276
|
+
description: 'define a new procedure',
|
|
277
|
+
syntax: `CREATE [ OR REPLACE ] PROCEDURE
|
|
278
|
+
name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
|
|
279
|
+
{ LANGUAGE lang_name
|
|
280
|
+
| TRANSFORM { FOR TYPE type_name } [, ... ]
|
|
281
|
+
| [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
|
|
282
|
+
| SET configuration_parameter { TO value | = value | FROM CURRENT }
|
|
283
|
+
| AS 'definition'
|
|
284
|
+
| AS 'obj_file', 'link_symbol'
|
|
285
|
+
| sql_body
|
|
286
|
+
} ...`,
|
|
287
|
+
docUrl: `${PG_DOCS}createprocedure.html`,
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
cmd: 'CREATE EXTENSION',
|
|
291
|
+
description: 'install an extension',
|
|
292
|
+
syntax: `CREATE EXTENSION [ IF NOT EXISTS ] extension_name
|
|
293
|
+
[ WITH ] [ SCHEMA schema_name ]
|
|
294
|
+
[ VERSION version ]
|
|
295
|
+
[ CASCADE ]`,
|
|
296
|
+
docUrl: `${PG_DOCS}createextension.html`,
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
cmd: 'CREATE SCHEMA',
|
|
300
|
+
description: 'define a new schema',
|
|
301
|
+
syntax: `CREATE SCHEMA [ IF NOT EXISTS ] schema_name [ AUTHORIZATION role_specification ] [ schema_element [ ... ] ]
|
|
302
|
+
CREATE SCHEMA [ IF NOT EXISTS ] AUTHORIZATION role_specification [ schema_element [ ... ] ]
|
|
303
|
+
|
|
304
|
+
where role_specification can be:
|
|
305
|
+
user_name
|
|
306
|
+
| CURRENT_ROLE
|
|
307
|
+
| CURRENT_USER
|
|
308
|
+
| SESSION_USER`,
|
|
309
|
+
docUrl: `${PG_DOCS}createschema.html`,
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
cmd: 'CREATE DATABASE',
|
|
313
|
+
description: 'create a new database',
|
|
314
|
+
syntax: `CREATE DATABASE name
|
|
315
|
+
[ WITH ] [ OWNER [=] user_name ]
|
|
316
|
+
[ TEMPLATE [=] template ]
|
|
317
|
+
[ ENCODING [=] encoding ]
|
|
318
|
+
[ STRATEGY [=] strategy ]
|
|
319
|
+
[ LOCALE [=] locale ]
|
|
320
|
+
[ LC_COLLATE [=] lc_collate ]
|
|
321
|
+
[ LC_CTYPE [=] lc_ctype ]
|
|
322
|
+
[ BUILTIN_LOCALE [=] builtin_locale ]
|
|
323
|
+
[ ICU_LOCALE [=] icu_locale ]
|
|
324
|
+
[ ICU_RULES [=] icu_rules ]
|
|
325
|
+
[ LOCALE_PROVIDER [=] locale_provider ]
|
|
326
|
+
[ COLLATION_VERSION = collation_version ]
|
|
327
|
+
[ TABLESPACE [=] tablespace_name ]
|
|
328
|
+
[ ALLOW_CONNECTIONS [=] allowconn ]
|
|
329
|
+
[ CONNECTION LIMIT [=] connlimit ]
|
|
330
|
+
[ IS_TEMPLATE [=] istemplate ]
|
|
331
|
+
[ OID [=] oid ]`,
|
|
332
|
+
docUrl: `${PG_DOCS}createdatabase.html`,
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
cmd: 'CREATE ROLE',
|
|
336
|
+
description: 'define a new database role',
|
|
337
|
+
syntax: `CREATE ROLE name [ [ WITH ] option [ ... ] ]
|
|
338
|
+
|
|
339
|
+
where option can be:
|
|
340
|
+
|
|
341
|
+
SUPERUSER | NOSUPERUSER
|
|
342
|
+
| CREATEDB | NOCREATEDB
|
|
343
|
+
| CREATEROLE | NOCREATEROLE
|
|
344
|
+
| INHERIT | NOINHERIT
|
|
345
|
+
| LOGIN | NOLOGIN
|
|
346
|
+
| REPLICATION | NOREPLICATION
|
|
347
|
+
| BYPASSRLS | NOBYPASSRLS
|
|
348
|
+
| CONNECTION LIMIT connlimit
|
|
349
|
+
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
|
|
350
|
+
| VALID UNTIL 'timestamp'
|
|
351
|
+
| IN ROLE role_name [, ...]
|
|
352
|
+
| ROLE role_name [, ...]
|
|
353
|
+
| ADMIN role_name [, ...]
|
|
354
|
+
| SYSID uid`,
|
|
355
|
+
docUrl: `${PG_DOCS}createrole.html`,
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
cmd: 'CREATE USER',
|
|
359
|
+
description: 'define a new database role (alias for CREATE ROLE ... LOGIN)',
|
|
360
|
+
syntax: `CREATE USER name [ [ WITH ] option [ ... ] ]
|
|
361
|
+
|
|
362
|
+
where option can be:
|
|
363
|
+
|
|
364
|
+
SUPERUSER | NOSUPERUSER
|
|
365
|
+
| CREATEDB | NOCREATEDB
|
|
366
|
+
| CREATEROLE | NOCREATEROLE
|
|
367
|
+
| INHERIT | NOINHERIT
|
|
368
|
+
| LOGIN | NOLOGIN
|
|
369
|
+
| REPLICATION | NOREPLICATION
|
|
370
|
+
| BYPASSRLS | NOBYPASSRLS
|
|
371
|
+
| CONNECTION LIMIT connlimit
|
|
372
|
+
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
|
|
373
|
+
| VALID UNTIL 'timestamp'
|
|
374
|
+
| IN ROLE role_name [, ...]
|
|
375
|
+
| ROLE role_name [, ...]
|
|
376
|
+
| ADMIN role_name [, ...]`,
|
|
377
|
+
docUrl: `${PG_DOCS}createuser.html`,
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
cmd: 'CREATE TYPE',
|
|
381
|
+
description: 'define a new data type',
|
|
382
|
+
syntax: `CREATE TYPE name AS
|
|
383
|
+
( [ attribute_name data_type [ COLLATE collation ] [, ... ] ] )
|
|
384
|
+
|
|
385
|
+
CREATE TYPE name AS ENUM
|
|
386
|
+
( [ 'label' [, ... ] ] )
|
|
387
|
+
|
|
388
|
+
CREATE TYPE name AS RANGE (
|
|
389
|
+
SUBTYPE = subtype
|
|
390
|
+
[ , SUBTYPE_OPCLASS = subtype_operator_class ]
|
|
391
|
+
[ , COLLATION = collation ]
|
|
392
|
+
[ , CANONICAL = canonical_function ]
|
|
393
|
+
[ , SUBTYPE_DIFF = subtype_diff_function ]
|
|
394
|
+
[ , MULTIRANGE_TYPE_NAME = multirange_type_name ]
|
|
395
|
+
)
|
|
396
|
+
|
|
397
|
+
CREATE TYPE name (
|
|
398
|
+
INPUT = input_function,
|
|
399
|
+
OUTPUT = output_function
|
|
400
|
+
[ , RECEIVE = receive_function ]
|
|
401
|
+
[ , SEND = send_function ]
|
|
402
|
+
[ , ... ]
|
|
403
|
+
)
|
|
404
|
+
|
|
405
|
+
CREATE TYPE name`,
|
|
406
|
+
docUrl: `${PG_DOCS}createtype.html`,
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
cmd: 'CREATE TRIGGER',
|
|
410
|
+
description: 'define a new trigger',
|
|
411
|
+
syntax: `CREATE [ OR REPLACE ] [ CONSTRAINT ] TRIGGER name { BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
|
|
412
|
+
ON table_name
|
|
413
|
+
[ FROM referenced_table_name ]
|
|
414
|
+
[ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ]
|
|
415
|
+
[ REFERENCING { { OLD | NEW } TABLE [ AS ] transition_relation_name } [ ... ] ]
|
|
416
|
+
[ FOR [ EACH ] { ROW | STATEMENT } ]
|
|
417
|
+
[ WHEN ( condition ) ]
|
|
418
|
+
EXECUTE { FUNCTION | PROCEDURE } function_name ( arguments )
|
|
419
|
+
|
|
420
|
+
where event can be one of:
|
|
421
|
+
INSERT
|
|
422
|
+
UPDATE [ OF column_name [, ... ] ]
|
|
423
|
+
DELETE
|
|
424
|
+
TRUNCATE`,
|
|
425
|
+
docUrl: `${PG_DOCS}createtrigger.html`,
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
cmd: 'CREATE POLICY',
|
|
429
|
+
description: 'define a new row-level security policy for a table',
|
|
430
|
+
syntax: `CREATE POLICY name ON table_name
|
|
431
|
+
[ AS { PERMISSIVE | RESTRICTIVE } ]
|
|
432
|
+
[ FOR { ALL | SELECT | INSERT | UPDATE | DELETE } ]
|
|
433
|
+
[ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
|
|
434
|
+
[ USING ( using_expression ) ]
|
|
435
|
+
[ WITH CHECK ( check_expression ) ]`,
|
|
436
|
+
docUrl: `${PG_DOCS}createpolicy.html`,
|
|
437
|
+
},
|
|
438
|
+
{
|
|
439
|
+
cmd: 'CREATE PUBLICATION',
|
|
440
|
+
description: 'define a new publication',
|
|
441
|
+
syntax: `CREATE PUBLICATION name
|
|
442
|
+
[ FOR ALL TABLES
|
|
443
|
+
| FOR publication_object [, ... ] ]
|
|
444
|
+
[ WITH ( publication_parameter [= value] [, ... ] ) ]
|
|
445
|
+
|
|
446
|
+
where publication_object is one of:
|
|
447
|
+
|
|
448
|
+
TABLE [ ONLY ] table_name [ * ] [ ( column_name [, ... ] ) ] [ WHERE ( expression ) ] [, ... ]
|
|
449
|
+
TABLES IN SCHEMA { schema_name | CURRENT_SCHEMA } [, ... ]`,
|
|
450
|
+
docUrl: `${PG_DOCS}createpublication.html`,
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
cmd: 'CREATE SUBSCRIPTION',
|
|
454
|
+
description: 'define a new subscription',
|
|
455
|
+
syntax: `CREATE SUBSCRIPTION subscription_name
|
|
456
|
+
CONNECTION 'conninfo'
|
|
457
|
+
PUBLICATION publication_name [, ...]
|
|
458
|
+
[ WITH ( subscription_parameter [= value] [, ... ] ) ]`,
|
|
459
|
+
docUrl: `${PG_DOCS}createsubscription.html`,
|
|
460
|
+
},
|
|
461
|
+
// ---------------------------------------------------------------------------
|
|
462
|
+
// ALTER
|
|
463
|
+
// ---------------------------------------------------------------------------
|
|
464
|
+
{
|
|
465
|
+
cmd: 'ALTER TABLE',
|
|
466
|
+
description: 'change the definition of a table',
|
|
467
|
+
syntax: `ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
|
|
468
|
+
action [, ... ]
|
|
469
|
+
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
|
|
470
|
+
RENAME [ COLUMN ] column_name TO new_column_name
|
|
471
|
+
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ]
|
|
472
|
+
RENAME CONSTRAINT constraint_name TO new_constraint_name
|
|
473
|
+
ALTER TABLE [ IF EXISTS ] name
|
|
474
|
+
RENAME TO new_name
|
|
475
|
+
ALTER TABLE [ IF EXISTS ] name
|
|
476
|
+
SET SCHEMA new_schema
|
|
477
|
+
ALTER TABLE ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
|
|
478
|
+
SET TABLESPACE new_tablespace [ NOWAIT ]
|
|
479
|
+
ALTER TABLE [ IF EXISTS ] name
|
|
480
|
+
ATTACH PARTITION partition_name { FOR VALUES partition_bound_spec | DEFAULT }
|
|
481
|
+
ALTER TABLE [ IF EXISTS ] name
|
|
482
|
+
DETACH PARTITION partition_name [ CONCURRENTLY | FINALIZE ]
|
|
483
|
+
|
|
484
|
+
where action is one of:
|
|
485
|
+
ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
|
|
486
|
+
DROP [ COLUMN ] [ IF EXISTS ] column_name [ RESTRICT | CASCADE ]
|
|
487
|
+
ALTER [ COLUMN ] column_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
|
|
488
|
+
ALTER [ COLUMN ] column_name SET DEFAULT expression
|
|
489
|
+
ALTER [ COLUMN ] column_name DROP DEFAULT
|
|
490
|
+
ALTER [ COLUMN ] column_name { SET | DROP } NOT NULL
|
|
491
|
+
ADD table_constraint [ NOT VALID ]
|
|
492
|
+
DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
|
|
493
|
+
ENABLE | DISABLE ROW LEVEL SECURITY
|
|
494
|
+
OWNER TO new_owner
|
|
495
|
+
SET TABLESPACE new_tablespace`,
|
|
496
|
+
docUrl: `${PG_DOCS}altertable.html`,
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
cmd: 'ALTER INDEX',
|
|
500
|
+
description: 'change the definition of an index',
|
|
501
|
+
syntax: `ALTER INDEX [ IF EXISTS ] name RENAME TO new_name
|
|
502
|
+
ALTER INDEX [ IF EXISTS ] name SET TABLESPACE tablespace_name
|
|
503
|
+
ALTER INDEX name ATTACH PARTITION index_name
|
|
504
|
+
ALTER INDEX name [ NO ] DEPENDS ON EXTENSION extension_name
|
|
505
|
+
ALTER INDEX [ IF EXISTS ] name SET ( storage_parameter [= value] [, ... ] )
|
|
506
|
+
ALTER INDEX [ IF EXISTS ] name RESET ( storage_parameter [, ... ] )
|
|
507
|
+
ALTER INDEX [ IF EXISTS ] name ALTER [ COLUMN ] column_number
|
|
508
|
+
SET STATISTICS integer
|
|
509
|
+
ALTER INDEX ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
|
|
510
|
+
SET TABLESPACE new_tablespace [ NOWAIT ]`,
|
|
511
|
+
docUrl: `${PG_DOCS}alterindex.html`,
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
cmd: 'ALTER VIEW',
|
|
515
|
+
description: 'change the definition of a view',
|
|
516
|
+
syntax: `ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
|
|
517
|
+
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
|
|
518
|
+
ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
|
|
519
|
+
ALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name
|
|
520
|
+
ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
|
|
521
|
+
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
|
|
522
|
+
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
|
|
523
|
+
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )`,
|
|
524
|
+
docUrl: `${PG_DOCS}alterview.html`,
|
|
525
|
+
},
|
|
526
|
+
{
|
|
527
|
+
cmd: 'ALTER MATERIALIZED VIEW',
|
|
528
|
+
description: 'change the definition of a materialized view',
|
|
529
|
+
syntax: `ALTER MATERIALIZED VIEW [ IF EXISTS ] name action [, ... ]
|
|
530
|
+
ALTER MATERIALIZED VIEW name
|
|
531
|
+
[ NO ] DEPENDS ON EXTENSION extension_name
|
|
532
|
+
ALTER MATERIALIZED VIEW [ IF EXISTS ] name
|
|
533
|
+
RENAME [ COLUMN ] column_name TO new_column_name
|
|
534
|
+
ALTER MATERIALIZED VIEW [ IF EXISTS ] name RENAME TO new_name
|
|
535
|
+
ALTER MATERIALIZED VIEW [ IF EXISTS ] name SET SCHEMA new_schema
|
|
536
|
+
ALTER MATERIALIZED VIEW ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ]
|
|
537
|
+
SET TABLESPACE new_tablespace [ NOWAIT ]`,
|
|
538
|
+
docUrl: `${PG_DOCS}altermaterializedview.html`,
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
cmd: 'ALTER FUNCTION',
|
|
542
|
+
description: 'change the definition of a function',
|
|
543
|
+
syntax: `ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
|
|
544
|
+
action [ ... ] [ RESTRICT ]
|
|
545
|
+
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
|
|
546
|
+
RENAME TO new_name
|
|
547
|
+
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
|
|
548
|
+
OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
|
|
549
|
+
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
|
|
550
|
+
SET SCHEMA new_schema
|
|
551
|
+
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ]
|
|
552
|
+
[ NO ] DEPENDS ON EXTENSION extension_name`,
|
|
553
|
+
docUrl: `${PG_DOCS}alterfunction.html`,
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
cmd: 'ALTER EXTENSION',
|
|
557
|
+
description: 'change the definition of an extension',
|
|
558
|
+
syntax: `ALTER EXTENSION name UPDATE [ TO new_version ]
|
|
559
|
+
ALTER EXTENSION name SET SCHEMA new_schema
|
|
560
|
+
ALTER EXTENSION name ADD member_object
|
|
561
|
+
ALTER EXTENSION name DROP member_object
|
|
562
|
+
|
|
563
|
+
where member_object is one of:
|
|
564
|
+
ACCESS METHOD object_name |
|
|
565
|
+
AGGREGATE aggregate_name ( aggregate_signature ) |
|
|
566
|
+
CAST (source_type AS target_type) |
|
|
567
|
+
COLLATION object_name |
|
|
568
|
+
DOMAIN object_name |
|
|
569
|
+
FUNCTION function_name [ ( ... ) ] |
|
|
570
|
+
OPERATOR operator_name (left_type, right_type) |
|
|
571
|
+
SCHEMA object_name |
|
|
572
|
+
SEQUENCE object_name |
|
|
573
|
+
TABLE object_name |
|
|
574
|
+
TYPE object_name |
|
|
575
|
+
VIEW object_name`,
|
|
576
|
+
docUrl: `${PG_DOCS}alterextension.html`,
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
cmd: 'ALTER SCHEMA',
|
|
580
|
+
description: 'change the definition of a schema',
|
|
581
|
+
syntax: `ALTER SCHEMA name RENAME TO new_name
|
|
582
|
+
ALTER SCHEMA name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }`,
|
|
583
|
+
docUrl: `${PG_DOCS}alterschema.html`,
|
|
584
|
+
},
|
|
585
|
+
{
|
|
586
|
+
cmd: 'ALTER DATABASE',
|
|
587
|
+
description: 'change a database',
|
|
588
|
+
syntax: `ALTER DATABASE name [ [ WITH ] option [ ... ] ]
|
|
589
|
+
|
|
590
|
+
where option can be:
|
|
591
|
+
|
|
592
|
+
ALLOW_CONNECTIONS allowconn
|
|
593
|
+
CONNECTION LIMIT connlimit
|
|
594
|
+
IS_TEMPLATE istemplate
|
|
595
|
+
|
|
596
|
+
ALTER DATABASE name RENAME TO new_name
|
|
597
|
+
ALTER DATABASE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
|
|
598
|
+
ALTER DATABASE name SET TABLESPACE new_tablespace
|
|
599
|
+
ALTER DATABASE name REFRESH COLLATION VERSION
|
|
600
|
+
ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }
|
|
601
|
+
ALTER DATABASE name SET configuration_parameter FROM CURRENT
|
|
602
|
+
ALTER DATABASE name RESET configuration_parameter
|
|
603
|
+
ALTER DATABASE name RESET ALL`,
|
|
604
|
+
docUrl: `${PG_DOCS}alterdatabase.html`,
|
|
605
|
+
},
|
|
606
|
+
{
|
|
607
|
+
cmd: 'ALTER ROLE',
|
|
608
|
+
description: 'change a database role',
|
|
609
|
+
syntax: `ALTER ROLE role_specification [ WITH ] option [ ... ]
|
|
610
|
+
|
|
611
|
+
where option can be:
|
|
612
|
+
|
|
613
|
+
SUPERUSER | NOSUPERUSER
|
|
614
|
+
| CREATEDB | NOCREATEDB
|
|
615
|
+
| CREATEROLE | NOCREATEROLE
|
|
616
|
+
| INHERIT | NOINHERIT
|
|
617
|
+
| LOGIN | NOLOGIN
|
|
618
|
+
| REPLICATION | NOREPLICATION
|
|
619
|
+
| BYPASSRLS | NOBYPASSRLS
|
|
620
|
+
| CONNECTION LIMIT connlimit
|
|
621
|
+
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
|
|
622
|
+
| VALID UNTIL 'timestamp'
|
|
623
|
+
|
|
624
|
+
ALTER ROLE name RENAME TO new_name
|
|
625
|
+
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT }
|
|
626
|
+
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT
|
|
627
|
+
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET configuration_parameter
|
|
628
|
+
ALTER ROLE { role_specification | ALL } [ IN DATABASE database_name ] RESET ALL`,
|
|
629
|
+
docUrl: `${PG_DOCS}alterrole.html`,
|
|
630
|
+
},
|
|
631
|
+
{
|
|
632
|
+
cmd: 'ALTER USER',
|
|
633
|
+
description: 'change a database role (alias for ALTER ROLE)',
|
|
634
|
+
syntax: `ALTER USER role_specification [ WITH ] option [ ... ]
|
|
635
|
+
|
|
636
|
+
where option can be:
|
|
637
|
+
|
|
638
|
+
SUPERUSER | NOSUPERUSER
|
|
639
|
+
| CREATEDB | NOCREATEDB
|
|
640
|
+
| CREATEROLE | NOCREATEROLE
|
|
641
|
+
| INHERIT | NOINHERIT
|
|
642
|
+
| LOGIN | NOLOGIN
|
|
643
|
+
| REPLICATION | NOREPLICATION
|
|
644
|
+
| BYPASSRLS | NOBYPASSRLS
|
|
645
|
+
| CONNECTION LIMIT connlimit
|
|
646
|
+
| [ ENCRYPTED ] PASSWORD 'password' | PASSWORD NULL
|
|
647
|
+
| VALID UNTIL 'timestamp'
|
|
648
|
+
|
|
649
|
+
ALTER USER name RENAME TO new_name`,
|
|
650
|
+
docUrl: `${PG_DOCS}alteruser.html`,
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
cmd: 'ALTER TYPE',
|
|
654
|
+
description: 'change the definition of a type',
|
|
655
|
+
syntax: `ALTER TYPE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
|
|
656
|
+
ALTER TYPE name RENAME ATTRIBUTE attribute_name TO new_attribute_name [ CASCADE | RESTRICT ]
|
|
657
|
+
ALTER TYPE name RENAME TO new_name
|
|
658
|
+
ALTER TYPE name SET SCHEMA new_schema
|
|
659
|
+
ALTER TYPE name ADD VALUE [ IF NOT EXISTS ] new_enum_value [ { BEFORE | AFTER } neighbor_enum_value ]
|
|
660
|
+
ALTER TYPE name RENAME VALUE existing_enum_value TO new_enum_value
|
|
661
|
+
ALTER TYPE name SET ( property = value [, ... ] )
|
|
662
|
+
|
|
663
|
+
where action is one of:
|
|
664
|
+
ADD ATTRIBUTE attribute_name data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]
|
|
665
|
+
DROP ATTRIBUTE [ IF EXISTS ] attribute_name [ CASCADE | RESTRICT ]
|
|
666
|
+
ALTER ATTRIBUTE attribute_name [ SET DATA ] TYPE data_type [ COLLATE collation ] [ CASCADE | RESTRICT ]`,
|
|
667
|
+
docUrl: `${PG_DOCS}altertype.html`,
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
cmd: 'ALTER TRIGGER',
|
|
671
|
+
description: 'change the definition of a trigger',
|
|
672
|
+
syntax: `ALTER TRIGGER name ON table_name RENAME TO new_name
|
|
673
|
+
ALTER TRIGGER name ON table_name [ NO ] DEPENDS ON EXTENSION extension_name`,
|
|
674
|
+
docUrl: `${PG_DOCS}altertrigger.html`,
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
cmd: 'ALTER POLICY',
|
|
678
|
+
description: 'change the definition of a row-level security policy',
|
|
679
|
+
syntax: `ALTER POLICY name ON table_name RENAME TO new_name
|
|
680
|
+
|
|
681
|
+
ALTER POLICY name ON table_name
|
|
682
|
+
[ TO { role_name | PUBLIC | CURRENT_ROLE | CURRENT_USER | SESSION_USER } [, ...] ]
|
|
683
|
+
[ USING ( using_expression ) ]
|
|
684
|
+
[ WITH CHECK ( check_expression ) ]`,
|
|
685
|
+
docUrl: `${PG_DOCS}alterpolicy.html`,
|
|
686
|
+
},
|
|
687
|
+
// ---------------------------------------------------------------------------
|
|
688
|
+
// DROP
|
|
689
|
+
// ---------------------------------------------------------------------------
|
|
690
|
+
{
|
|
691
|
+
cmd: 'DROP TABLE',
|
|
692
|
+
description: 'remove a table',
|
|
693
|
+
syntax: `DROP TABLE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]`,
|
|
694
|
+
docUrl: `${PG_DOCS}droptable.html`,
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
cmd: 'DROP INDEX',
|
|
698
|
+
description: 'remove an index',
|
|
699
|
+
syntax: `DROP INDEX [ CONCURRENTLY ] [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]`,
|
|
700
|
+
docUrl: `${PG_DOCS}dropindex.html`,
|
|
701
|
+
},
|
|
702
|
+
{
|
|
703
|
+
cmd: 'DROP VIEW',
|
|
704
|
+
description: 'remove a view',
|
|
705
|
+
syntax: `DROP VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]`,
|
|
706
|
+
docUrl: `${PG_DOCS}dropview.html`,
|
|
707
|
+
},
|
|
708
|
+
{
|
|
709
|
+
cmd: 'DROP MATERIALIZED VIEW',
|
|
710
|
+
description: 'remove a materialized view',
|
|
711
|
+
syntax: `DROP MATERIALIZED VIEW [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]`,
|
|
712
|
+
docUrl: `${PG_DOCS}dropmaterializedview.html`,
|
|
713
|
+
},
|
|
714
|
+
{
|
|
715
|
+
cmd: 'DROP FUNCTION',
|
|
716
|
+
description: 'remove a function',
|
|
717
|
+
syntax: `DROP FUNCTION [ IF EXISTS ] name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [, ...]
|
|
718
|
+
[ CASCADE | RESTRICT ]`,
|
|
719
|
+
docUrl: `${PG_DOCS}dropfunction.html`,
|
|
720
|
+
},
|
|
721
|
+
{
|
|
722
|
+
cmd: 'DROP EXTENSION',
|
|
723
|
+
description: 'remove an extension',
|
|
724
|
+
syntax: `DROP EXTENSION [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]`,
|
|
725
|
+
docUrl: `${PG_DOCS}dropextension.html`,
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
cmd: 'DROP SCHEMA',
|
|
729
|
+
description: 'remove a schema',
|
|
730
|
+
syntax: `DROP SCHEMA [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]`,
|
|
731
|
+
docUrl: `${PG_DOCS}dropschema.html`,
|
|
732
|
+
},
|
|
733
|
+
{
|
|
734
|
+
cmd: 'DROP DATABASE',
|
|
735
|
+
description: 'remove a database',
|
|
736
|
+
syntax: `DROP DATABASE [ IF EXISTS ] name [ [ WITH ] ( option [, ...] ) ]
|
|
737
|
+
|
|
738
|
+
where option can be:
|
|
739
|
+
|
|
740
|
+
FORCE`,
|
|
741
|
+
docUrl: `${PG_DOCS}dropdatabase.html`,
|
|
742
|
+
},
|
|
743
|
+
{
|
|
744
|
+
cmd: 'DROP ROLE',
|
|
745
|
+
description: 'remove a database role',
|
|
746
|
+
syntax: `DROP ROLE [ IF EXISTS ] name [, ...]`,
|
|
747
|
+
docUrl: `${PG_DOCS}droprole.html`,
|
|
748
|
+
},
|
|
749
|
+
// ---------------------------------------------------------------------------
|
|
750
|
+
// Privileges
|
|
751
|
+
// ---------------------------------------------------------------------------
|
|
752
|
+
{
|
|
753
|
+
cmd: 'GRANT',
|
|
754
|
+
description: 'define access privileges',
|
|
755
|
+
syntax: `GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }
|
|
756
|
+
[, ...] | ALL [ PRIVILEGES ] }
|
|
757
|
+
ON { [ TABLE ] table_name [, ...]
|
|
758
|
+
| ALL TABLES IN SCHEMA schema_name [, ...] }
|
|
759
|
+
TO role_specification [, ...] [ WITH GRANT OPTION ]
|
|
760
|
+
[ GRANTED BY role_specification ]
|
|
761
|
+
|
|
762
|
+
GRANT { { USAGE | SELECT | UPDATE }
|
|
763
|
+
[, ...] | ALL [ PRIVILEGES ] }
|
|
764
|
+
ON { SEQUENCE sequence_name [, ...]
|
|
765
|
+
| ALL SEQUENCES IN SCHEMA schema_name [, ...] }
|
|
766
|
+
TO role_specification [, ...] [ WITH GRANT OPTION ]
|
|
767
|
+
|
|
768
|
+
GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
|
|
769
|
+
ON DATABASE database_name [, ...]
|
|
770
|
+
TO role_specification [, ...] [ WITH GRANT OPTION ]
|
|
771
|
+
|
|
772
|
+
GRANT { EXECUTE | ALL [ PRIVILEGES ] }
|
|
773
|
+
ON { { FUNCTION | PROCEDURE | ROUTINE } routine_name [ ( ... ) ] [, ...] | ALL { FUNCTIONS | PROCEDURES | ROUTINES } IN SCHEMA schema_name [, ...] }
|
|
774
|
+
TO role_specification [, ...] [ WITH GRANT OPTION ]
|
|
775
|
+
|
|
776
|
+
GRANT role_name [, ...] TO role_specification [, ...]
|
|
777
|
+
[ WITH { ADMIN | INHERIT | SET } { OPTION | TRUE | FALSE } ]
|
|
778
|
+
[ GRANTED BY role_specification ]`,
|
|
779
|
+
docUrl: `${PG_DOCS}grant.html`,
|
|
780
|
+
},
|
|
781
|
+
{
|
|
782
|
+
cmd: 'REVOKE',
|
|
783
|
+
description: 'remove access privileges',
|
|
784
|
+
syntax: `REVOKE [ GRANT OPTION FOR ]
|
|
785
|
+
{ { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER | MAINTAIN }
|
|
786
|
+
[, ...] | ALL [ PRIVILEGES ] }
|
|
787
|
+
ON { [ TABLE ] table_name [, ...]
|
|
788
|
+
| ALL TABLES IN SCHEMA schema_name [, ...] }
|
|
789
|
+
FROM role_specification [, ...]
|
|
790
|
+
[ GRANTED BY role_specification ]
|
|
791
|
+
[ CASCADE | RESTRICT ]
|
|
792
|
+
|
|
793
|
+
REVOKE [ ADMIN OPTION FOR ]
|
|
794
|
+
role_name [, ...] FROM role_specification [, ...]
|
|
795
|
+
[ GRANTED BY role_specification ]
|
|
796
|
+
[ CASCADE | RESTRICT ]`,
|
|
797
|
+
docUrl: `${PG_DOCS}revoke.html`,
|
|
798
|
+
},
|
|
799
|
+
// ---------------------------------------------------------------------------
|
|
800
|
+
// Transaction control
|
|
801
|
+
// ---------------------------------------------------------------------------
|
|
802
|
+
{
|
|
803
|
+
cmd: 'BEGIN',
|
|
804
|
+
description: 'start a transaction block',
|
|
805
|
+
syntax: `BEGIN [ WORK | TRANSACTION ] [ transaction_mode [, ...] ]
|
|
806
|
+
|
|
807
|
+
where transaction_mode is one of:
|
|
808
|
+
|
|
809
|
+
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
|
|
810
|
+
READ WRITE | READ ONLY
|
|
811
|
+
[ NOT ] DEFERRABLE`,
|
|
812
|
+
docUrl: `${PG_DOCS}begin.html`,
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
cmd: 'COMMIT',
|
|
816
|
+
description: 'commit the current transaction',
|
|
817
|
+
syntax: `COMMIT [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]`,
|
|
818
|
+
docUrl: `${PG_DOCS}commit.html`,
|
|
819
|
+
},
|
|
820
|
+
{
|
|
821
|
+
cmd: 'ROLLBACK',
|
|
822
|
+
description: 'abort the current transaction',
|
|
823
|
+
syntax: `ROLLBACK [ WORK | TRANSACTION ] [ AND [ NO ] CHAIN ]`,
|
|
824
|
+
docUrl: `${PG_DOCS}rollback.html`,
|
|
825
|
+
},
|
|
826
|
+
{
|
|
827
|
+
cmd: 'SAVEPOINT',
|
|
828
|
+
description: 'define a new savepoint within the current transaction',
|
|
829
|
+
syntax: `SAVEPOINT savepoint_name`,
|
|
830
|
+
docUrl: `${PG_DOCS}savepoint.html`,
|
|
831
|
+
},
|
|
832
|
+
{
|
|
833
|
+
cmd: 'RELEASE SAVEPOINT',
|
|
834
|
+
description: 'destroy a previously defined savepoint',
|
|
835
|
+
syntax: `RELEASE [ SAVEPOINT ] savepoint_name`,
|
|
836
|
+
docUrl: `${PG_DOCS}release-savepoint.html`,
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
cmd: 'START TRANSACTION',
|
|
840
|
+
description: 'start a transaction block',
|
|
841
|
+
syntax: `START TRANSACTION [ transaction_mode [, ...] ]
|
|
842
|
+
|
|
843
|
+
where transaction_mode is one of:
|
|
844
|
+
|
|
845
|
+
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
|
|
846
|
+
READ WRITE | READ ONLY
|
|
847
|
+
[ NOT ] DEFERRABLE`,
|
|
848
|
+
docUrl: `${PG_DOCS}start-transaction.html`,
|
|
849
|
+
},
|
|
850
|
+
// ---------------------------------------------------------------------------
|
|
851
|
+
// Session / runtime configuration
|
|
852
|
+
// ---------------------------------------------------------------------------
|
|
853
|
+
{
|
|
854
|
+
cmd: 'SET',
|
|
855
|
+
description: 'change a run-time parameter',
|
|
856
|
+
syntax: `SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value | 'value' | DEFAULT }
|
|
857
|
+
SET [ SESSION | LOCAL ] TIME ZONE { value | 'value' | LOCAL | DEFAULT }`,
|
|
858
|
+
docUrl: `${PG_DOCS}set.html`,
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
cmd: 'SET ROLE',
|
|
862
|
+
description: 'set the current user identifier of the current session',
|
|
863
|
+
syntax: `SET [ SESSION | LOCAL ] ROLE role_name
|
|
864
|
+
SET [ SESSION | LOCAL ] ROLE NONE
|
|
865
|
+
RESET ROLE`,
|
|
866
|
+
docUrl: `${PG_DOCS}set-role.html`,
|
|
867
|
+
},
|
|
868
|
+
{
|
|
869
|
+
cmd: 'RESET',
|
|
870
|
+
description: 'restore the value of a run-time parameter to the default value',
|
|
871
|
+
syntax: `RESET configuration_parameter
|
|
872
|
+
RESET ALL`,
|
|
873
|
+
docUrl: `${PG_DOCS}reset.html`,
|
|
874
|
+
},
|
|
875
|
+
{
|
|
876
|
+
cmd: 'SHOW',
|
|
877
|
+
description: 'show the value of a run-time parameter',
|
|
878
|
+
syntax: `SHOW name
|
|
879
|
+
SHOW ALL`,
|
|
880
|
+
docUrl: `${PG_DOCS}show.html`,
|
|
881
|
+
},
|
|
882
|
+
// ---------------------------------------------------------------------------
|
|
883
|
+
// Async notification
|
|
884
|
+
// ---------------------------------------------------------------------------
|
|
885
|
+
{
|
|
886
|
+
cmd: 'LISTEN',
|
|
887
|
+
description: 'listen for a notification',
|
|
888
|
+
syntax: `LISTEN channel`,
|
|
889
|
+
docUrl: `${PG_DOCS}listen.html`,
|
|
890
|
+
},
|
|
891
|
+
{
|
|
892
|
+
cmd: 'NOTIFY',
|
|
893
|
+
description: 'generate a notification',
|
|
894
|
+
syntax: `NOTIFY channel [ , payload ]`,
|
|
895
|
+
docUrl: `${PG_DOCS}notify.html`,
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
cmd: 'UNLISTEN',
|
|
899
|
+
description: 'stop listening for a notification',
|
|
900
|
+
syntax: `UNLISTEN { channel | * }`,
|
|
901
|
+
docUrl: `${PG_DOCS}unlisten.html`,
|
|
902
|
+
},
|
|
903
|
+
// ---------------------------------------------------------------------------
|
|
904
|
+
// Locking
|
|
905
|
+
// ---------------------------------------------------------------------------
|
|
906
|
+
{
|
|
907
|
+
cmd: 'LOCK',
|
|
908
|
+
description: 'lock a table',
|
|
909
|
+
syntax: `LOCK [ TABLE ] [ ONLY ] name [ * ] [, ...] [ IN lockmode MODE ] [ NOWAIT ]
|
|
910
|
+
|
|
911
|
+
where lockmode is one of:
|
|
912
|
+
|
|
913
|
+
ACCESS SHARE | ROW SHARE | ROW EXCLUSIVE | SHARE UPDATE EXCLUSIVE
|
|
914
|
+
| SHARE | SHARE ROW EXCLUSIVE | EXCLUSIVE | ACCESS EXCLUSIVE`,
|
|
915
|
+
docUrl: `${PG_DOCS}lock.html`,
|
|
916
|
+
},
|
|
917
|
+
// ---------------------------------------------------------------------------
|
|
918
|
+
// Prepared statements
|
|
919
|
+
// ---------------------------------------------------------------------------
|
|
920
|
+
{
|
|
921
|
+
cmd: 'PREPARE',
|
|
922
|
+
description: 'prepare a statement for execution',
|
|
923
|
+
syntax: `PREPARE name [ ( data_type [, ...] ) ] AS statement`,
|
|
924
|
+
docUrl: `${PG_DOCS}prepare.html`,
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
cmd: 'EXECUTE',
|
|
928
|
+
description: 'execute a prepared statement',
|
|
929
|
+
syntax: `EXECUTE name [ ( parameter [, ...] ) ]`,
|
|
930
|
+
docUrl: `${PG_DOCS}execute.html`,
|
|
931
|
+
},
|
|
932
|
+
{
|
|
933
|
+
cmd: 'DEALLOCATE',
|
|
934
|
+
description: 'deallocate a prepared statement',
|
|
935
|
+
syntax: `DEALLOCATE [ PREPARE ] { name | ALL }`,
|
|
936
|
+
docUrl: `${PG_DOCS}deallocate.html`,
|
|
937
|
+
},
|
|
938
|
+
// ---------------------------------------------------------------------------
|
|
939
|
+
// Cursors
|
|
940
|
+
// ---------------------------------------------------------------------------
|
|
941
|
+
{
|
|
942
|
+
cmd: 'DECLARE',
|
|
943
|
+
description: 'define a cursor',
|
|
944
|
+
syntax: `DECLARE name [ BINARY ] [ ASENSITIVE | INSENSITIVE ] [ [ NO ] SCROLL ]
|
|
945
|
+
CURSOR [ { WITH | WITHOUT } HOLD ] FOR query`,
|
|
946
|
+
docUrl: `${PG_DOCS}declare.html`,
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
cmd: 'FETCH',
|
|
950
|
+
description: 'retrieve rows from a query using a cursor',
|
|
951
|
+
syntax: `FETCH [ direction ] [ FROM | IN ] cursor_name
|
|
952
|
+
|
|
953
|
+
where direction can be empty or one of:
|
|
954
|
+
|
|
955
|
+
NEXT
|
|
956
|
+
PRIOR
|
|
957
|
+
FIRST
|
|
958
|
+
LAST
|
|
959
|
+
ABSOLUTE count
|
|
960
|
+
RELATIVE count
|
|
961
|
+
count
|
|
962
|
+
ALL
|
|
963
|
+
FORWARD
|
|
964
|
+
FORWARD count
|
|
965
|
+
FORWARD ALL
|
|
966
|
+
BACKWARD
|
|
967
|
+
BACKWARD count
|
|
968
|
+
BACKWARD ALL`,
|
|
969
|
+
docUrl: `${PG_DOCS}fetch.html`,
|
|
970
|
+
},
|
|
971
|
+
{
|
|
972
|
+
cmd: 'MOVE',
|
|
973
|
+
description: 'position a cursor',
|
|
974
|
+
syntax: `MOVE [ direction ] [ FROM | IN ] cursor_name
|
|
975
|
+
|
|
976
|
+
where direction can be empty or one of:
|
|
977
|
+
|
|
978
|
+
NEXT | PRIOR | FIRST | LAST
|
|
979
|
+
| ABSOLUTE count | RELATIVE count | count | ALL
|
|
980
|
+
| FORWARD | FORWARD count | FORWARD ALL
|
|
981
|
+
| BACKWARD | BACKWARD count | BACKWARD ALL`,
|
|
982
|
+
docUrl: `${PG_DOCS}move.html`,
|
|
983
|
+
},
|
|
984
|
+
{
|
|
985
|
+
cmd: 'CLOSE',
|
|
986
|
+
description: 'close a cursor',
|
|
987
|
+
syntax: `CLOSE { name | ALL }`,
|
|
988
|
+
docUrl: `${PG_DOCS}close.html`,
|
|
989
|
+
},
|
|
990
|
+
// ---------------------------------------------------------------------------
|
|
991
|
+
// Procedural / misc
|
|
992
|
+
// ---------------------------------------------------------------------------
|
|
993
|
+
{
|
|
994
|
+
cmd: 'CALL',
|
|
995
|
+
description: 'invoke a procedure',
|
|
996
|
+
syntax: `CALL name ( [ argument ] [, ...] )`,
|
|
997
|
+
docUrl: `${PG_DOCS}call.html`,
|
|
998
|
+
},
|
|
999
|
+
{
|
|
1000
|
+
cmd: 'DO',
|
|
1001
|
+
description: 'execute an anonymous code block',
|
|
1002
|
+
syntax: `DO [ LANGUAGE lang_name ] code`,
|
|
1003
|
+
docUrl: `${PG_DOCS}do.html`,
|
|
1004
|
+
},
|
|
1005
|
+
];
|
|
1006
|
+
// ---------------------------------------------------------------------------
|
|
1007
|
+
// Lookup helpers.
|
|
1008
|
+
//
|
|
1009
|
+
// Upstream's matcher is case-insensitive and matches by whitespace-tokenised
|
|
1010
|
+
// prefix: "create t" matches CREATE TABLE, CREATE TRIGGER, CREATE TYPE; the
|
|
1011
|
+
// full command name is also accepted. If the input matches an entry exactly
|
|
1012
|
+
// (case-insensitively), we treat that as a single match even if it's a prefix
|
|
1013
|
+
// of others — so `\h CREATE` lists everything starting with CREATE rather
|
|
1014
|
+
// than failing on ambiguity (which matches the spec's "prefix match" wording).
|
|
1015
|
+
// We additionally accept a single trailing space.
|
|
1016
|
+
// ---------------------------------------------------------------------------
|
|
1017
|
+
/** Normalise a topic string for matching. */
|
|
1018
|
+
const normalize = (s) => s.trim().replace(/\s+/gu, ' ').toUpperCase();
|
|
1019
|
+
/** Tokenise on whitespace, dropping empties. */
|
|
1020
|
+
const tokens = (s) => s.split(/\s+/u).filter((t) => t.length > 0);
|
|
1021
|
+
/**
|
|
1022
|
+
* Return entries whose `cmd` matches the topic by whitespace-tokenised prefix.
|
|
1023
|
+
*
|
|
1024
|
+
* Semantics:
|
|
1025
|
+
* - "select" → [SELECT]
|
|
1026
|
+
* - "CREATE T" → all CREATE entries starting with "T" (TABLE, TRIGGER, TYPE)
|
|
1027
|
+
* - "CREATE" → all CREATE entries
|
|
1028
|
+
* - "CREATE TABLE"→ exactly [CREATE TABLE]
|
|
1029
|
+
*
|
|
1030
|
+
* Each topic token must be a prefix of the entry's token at the same index;
|
|
1031
|
+
* the entry must have at least as many tokens as the topic.
|
|
1032
|
+
*/
|
|
1033
|
+
export const findMatches = (topic) => {
|
|
1034
|
+
const needle = normalize(topic);
|
|
1035
|
+
if (needle.length === 0)
|
|
1036
|
+
return [];
|
|
1037
|
+
const needleToks = tokens(needle);
|
|
1038
|
+
return SQL_HELP.filter((entry) => {
|
|
1039
|
+
const cmdToks = tokens(entry.cmd.toUpperCase());
|
|
1040
|
+
if (cmdToks.length < needleToks.length)
|
|
1041
|
+
return false;
|
|
1042
|
+
for (let i = 0; i < needleToks.length; i++) {
|
|
1043
|
+
if (!cmdToks[i].startsWith(needleToks[i]))
|
|
1044
|
+
return false;
|
|
1045
|
+
}
|
|
1046
|
+
return true;
|
|
1047
|
+
});
|
|
1048
|
+
};
|
|
1049
|
+
/**
|
|
1050
|
+
* Format a single entry the way upstream `\h` does:
|
|
1051
|
+
*
|
|
1052
|
+
* Command: CMD
|
|
1053
|
+
* Description: DESC
|
|
1054
|
+
* Syntax:
|
|
1055
|
+
* <syntax body>
|
|
1056
|
+
*
|
|
1057
|
+
* URL: <docs>
|
|
1058
|
+
*/
|
|
1059
|
+
export const formatEntry = (entry) => {
|
|
1060
|
+
return (`Command: ${entry.cmd}\n` +
|
|
1061
|
+
`Description: ${entry.description}\n` +
|
|
1062
|
+
`Syntax:\n` +
|
|
1063
|
+
`${entry.syntax}\n` +
|
|
1064
|
+
`\n` +
|
|
1065
|
+
`URL: ${entry.docUrl}\n`);
|
|
1066
|
+
};
|