Skip to content

Commit b58a3c6

Browse files
committed
Feature: Import PostgreSQL 17 RC1 new parser.
Major changes of PostgreSQL 17 parser include: - Allow MERGE to use NOT MATCHED BY SOURCE and RETURNING clause: MERGE INTO ... WHEN NOT MATCHED BY SOURCE ... MERGE INTO ... RETURNING ... - Add new COPY option ON_ERROR ignore and LOG_VERBOSITY: COPY ... WITH (ON_ERROR ignore); COPY ... WITH (LOG_VERBOSITY verbose); - Allow to use '*' to specify the COPY FROM options FORCE_NOT_NULL and FORCE_NULL for all columns. COPY ... WITH (FORCE_NOT_NULL *); COPY ... WITH (FORCE_NULL *); - Add EXPLAIN option SERIALIZE and MEMORY EXPLAIN (MEMORY) ... EXPLAIN (ANALYZE, SERIALIZE ...) ... - Allow ALTER TABLE to use SET STATISTICS DEFAULT to set a column to the default statistics target ALTER TABLE ... ALTER COLUMN ... SET STATISTICS DEFAULT; - Allow ALTER TABLE to change a column's generation expression ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION; - Add DEFAULT setting for ALTER TABLE .. SET ACCESS METHOD ALTER TABLE ... SET STATISTICS DEFAULT; - Allow event triggers to use login event: CREATE EVENT TRIGGER ... ON login ... - Add event trigger support for REINDEX.
1 parent f84c2a6 commit b58a3c6

38 files changed

+5442
-1980
lines changed

src/include/parser/gramparse.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@
88
* Definitions that are needed outside the core parser should be in parser.h.
99
*
1010
*
11-
* Portions Copyright (c) 2003-2022, PgPool Global Development Group
12-
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
11+
* Portions Copyright (c) 2003-2024, PgPool Global Development Group
12+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
1313
* Portions Copyright (c) 1994, Regents of the University of California
1414
*
1515
* src/include/parser/gramparse.h

src/include/parser/keywords.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
* PostgreSQL's list of SQL keywords
55
*
66
*
7-
* Portions Copyright (c) 2003-2023, PgPool Global Development Group
8-
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7+
* Portions Copyright (c) 2003-2024, PgPool Global Development Group
8+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
99
* Portions Copyright (c) 1994, Regents of the University of California
1010
*
1111
* src/include/common/keywords.h

src/include/parser/kwlist.h

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
* by the PG_KEYWORD macro, which is not defined in this file; it can
88
* be defined by the caller for special purposes.
99
*
10-
* Portions Copyright (c) 2003-2023, PgPool Global Development Group
11-
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
10+
* Portions Copyright (c) 2003-2024, PgPool Global Development Group
11+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
1212
* Portions Copyright (c) 1994, Regents of the University of California
1313
*
1414
* IDENTIFICATION
@@ -94,6 +94,7 @@ PG_KEYWORD("commit", COMMIT, UNRESERVED_KEYWORD, BARE_LABEL)
9494
PG_KEYWORD("committed", COMMITTED, UNRESERVED_KEYWORD, BARE_LABEL)
9595
PG_KEYWORD("compression", COMPRESSION, UNRESERVED_KEYWORD, BARE_LABEL)
9696
PG_KEYWORD("concurrently", CONCURRENTLY, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
97+
PG_KEYWORD("conditional", CONDITIONAL, UNRESERVED_KEYWORD, BARE_LABEL)
9798
PG_KEYWORD("configuration", CONFIGURATION, UNRESERVED_KEYWORD, BARE_LABEL)
9899
PG_KEYWORD("conflict", CONFLICT, UNRESERVED_KEYWORD, BARE_LABEL)
99100
PG_KEYWORD("connection", CONNECTION, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -148,11 +149,13 @@ PG_KEYWORD("double", DOUBLE_P, UNRESERVED_KEYWORD, BARE_LABEL)
148149
PG_KEYWORD("drop", DROP, UNRESERVED_KEYWORD, BARE_LABEL)
149150
PG_KEYWORD("each", EACH, UNRESERVED_KEYWORD, BARE_LABEL)
150151
PG_KEYWORD("else", ELSE, RESERVED_KEYWORD, BARE_LABEL)
152+
PG_KEYWORD("empty", EMPTY_P, UNRESERVED_KEYWORD, BARE_LABEL)
151153
PG_KEYWORD("enable", ENABLE_P, UNRESERVED_KEYWORD, BARE_LABEL)
152154
PG_KEYWORD("encoding", ENCODING, UNRESERVED_KEYWORD, BARE_LABEL)
153155
PG_KEYWORD("encrypted", ENCRYPTED, UNRESERVED_KEYWORD, BARE_LABEL)
154156
PG_KEYWORD("end", END_P, RESERVED_KEYWORD, BARE_LABEL)
155157
PG_KEYWORD("enum", ENUM_P, UNRESERVED_KEYWORD, BARE_LABEL)
158+
PG_KEYWORD("error", ERROR_P, UNRESERVED_KEYWORD, BARE_LABEL)
156159
PG_KEYWORD("escape", ESCAPE, UNRESERVED_KEYWORD, BARE_LABEL)
157160
PG_KEYWORD("event", EVENT, UNRESERVED_KEYWORD, BARE_LABEL)
158161
PG_KEYWORD("except", EXCEPT, RESERVED_KEYWORD, AS_LABEL)
@@ -231,11 +234,18 @@ PG_KEYWORD("is", IS, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
231234
PG_KEYWORD("isnull", ISNULL, TYPE_FUNC_NAME_KEYWORD, AS_LABEL)
232235
PG_KEYWORD("isolation", ISOLATION, UNRESERVED_KEYWORD, BARE_LABEL)
233236
PG_KEYWORD("join", JOIN, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
234-
PG_KEYWORD("json", JSON, UNRESERVED_KEYWORD, BARE_LABEL)
237+
PG_KEYWORD("json", JSON, COL_NAME_KEYWORD, BARE_LABEL)
235238
PG_KEYWORD("json_array", JSON_ARRAY, COL_NAME_KEYWORD, BARE_LABEL)
236239
PG_KEYWORD("json_arrayagg", JSON_ARRAYAGG, COL_NAME_KEYWORD, BARE_LABEL)
240+
PG_KEYWORD("json_exists", JSON_EXISTS, COL_NAME_KEYWORD, BARE_LABEL)
237241
PG_KEYWORD("json_object", JSON_OBJECT, COL_NAME_KEYWORD, BARE_LABEL)
238242
PG_KEYWORD("json_objectagg", JSON_OBJECTAGG, COL_NAME_KEYWORD, BARE_LABEL)
243+
PG_KEYWORD("json_query", JSON_QUERY, COL_NAME_KEYWORD, BARE_LABEL)
244+
PG_KEYWORD("json_scalar", JSON_SCALAR, COL_NAME_KEYWORD, BARE_LABEL)
245+
PG_KEYWORD("json_serialize", JSON_SERIALIZE, COL_NAME_KEYWORD, BARE_LABEL)
246+
PG_KEYWORD("json_table", JSON_TABLE, COL_NAME_KEYWORD, BARE_LABEL)
247+
PG_KEYWORD("json_value", JSON_VALUE, COL_NAME_KEYWORD, BARE_LABEL)
248+
PG_KEYWORD("keep", KEEP, UNRESERVED_KEYWORD, BARE_LABEL)
239249
PG_KEYWORD("key", KEY, UNRESERVED_KEYWORD, BARE_LABEL)
240250
PG_KEYWORD("keys", KEYS, UNRESERVED_KEYWORD, BARE_LABEL)
241251
PG_KEYWORD("label", LABEL, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -265,6 +275,7 @@ PG_KEYWORD("matched", MATCHED, UNRESERVED_KEYWORD, BARE_LABEL)
265275
PG_KEYWORD("materialized", MATERIALIZED, UNRESERVED_KEYWORD, BARE_LABEL)
266276
PG_KEYWORD("maxvalue", MAXVALUE, UNRESERVED_KEYWORD, BARE_LABEL)
267277
PG_KEYWORD("merge", MERGE, UNRESERVED_KEYWORD, BARE_LABEL)
278+
PG_KEYWORD("merge_action", MERGE_ACTION, COL_NAME_KEYWORD, BARE_LABEL)
268279
PG_KEYWORD("method", METHOD, UNRESERVED_KEYWORD, BARE_LABEL)
269280
PG_KEYWORD("minute", MINUTE_P, UNRESERVED_KEYWORD, AS_LABEL)
270281
PG_KEYWORD("minvalue", MINVALUE, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -276,6 +287,7 @@ PG_KEYWORD("names", NAMES, UNRESERVED_KEYWORD, BARE_LABEL)
276287
PG_KEYWORD("national", NATIONAL, COL_NAME_KEYWORD, BARE_LABEL)
277288
PG_KEYWORD("natural", NATURAL, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
278289
PG_KEYWORD("nchar", NCHAR, COL_NAME_KEYWORD, BARE_LABEL)
290+
PG_KEYWORD("nested", NESTED, UNRESERVED_KEYWORD, BARE_LABEL)
279291
PG_KEYWORD("new", NEW, UNRESERVED_KEYWORD, BARE_LABEL)
280292
PG_KEYWORD("next", NEXT, UNRESERVED_KEYWORD, BARE_LABEL)
281293
PG_KEYWORD("nfc", NFC, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -301,6 +313,7 @@ PG_KEYWORD("off", OFF, UNRESERVED_KEYWORD, BARE_LABEL)
301313
PG_KEYWORD("offset", OFFSET, RESERVED_KEYWORD, AS_LABEL)
302314
PG_KEYWORD("oids", OIDS, UNRESERVED_KEYWORD, BARE_LABEL)
303315
PG_KEYWORD("old", OLD, UNRESERVED_KEYWORD, BARE_LABEL)
316+
PG_KEYWORD("omit", OMIT, UNRESERVED_KEYWORD, BARE_LABEL)
304317
PG_KEYWORD("on", ON, RESERVED_KEYWORD, AS_LABEL)
305318
PG_KEYWORD("only", ONLY, RESERVED_KEYWORD, BARE_LABEL)
306319
PG_KEYWORD("operator", OPERATOR, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -325,8 +338,10 @@ PG_KEYWORD("partial", PARTIAL, UNRESERVED_KEYWORD, BARE_LABEL)
325338
PG_KEYWORD("partition", PARTITION, UNRESERVED_KEYWORD, BARE_LABEL)
326339
PG_KEYWORD("passing", PASSING, UNRESERVED_KEYWORD, BARE_LABEL)
327340
PG_KEYWORD("password", PASSWORD, UNRESERVED_KEYWORD, BARE_LABEL)
341+
PG_KEYWORD("path", PATH, UNRESERVED_KEYWORD, BARE_LABEL)
328342
PG_KEYWORD("pgpool", PGPOOL, UNRESERVED_KEYWORD, BARE_LABEL)
329343
PG_KEYWORD("placing", PLACING, RESERVED_KEYWORD, BARE_LABEL)
344+
PG_KEYWORD("plan", PLAN, UNRESERVED_KEYWORD, BARE_LABEL)
330345
PG_KEYWORD("plans", PLANS, UNRESERVED_KEYWORD, BARE_LABEL)
331346
PG_KEYWORD("policy", POLICY, UNRESERVED_KEYWORD, BARE_LABEL)
332347
PG_KEYWORD("position", POSITION, COL_NAME_KEYWORD, BARE_LABEL)
@@ -344,6 +359,7 @@ PG_KEYWORD("procedures", PROCEDURES, UNRESERVED_KEYWORD, BARE_LABEL)
344359
PG_KEYWORD("program", PROGRAM, UNRESERVED_KEYWORD, BARE_LABEL)
345360
PG_KEYWORD("publication", PUBLICATION, UNRESERVED_KEYWORD, BARE_LABEL)
346361
PG_KEYWORD("quote", QUOTE, UNRESERVED_KEYWORD, BARE_LABEL)
362+
PG_KEYWORD("quotes", QUOTES, UNRESERVED_KEYWORD, BARE_LABEL)
347363
PG_KEYWORD("range", RANGE, UNRESERVED_KEYWORD, BARE_LABEL)
348364
PG_KEYWORD("read", READ, UNRESERVED_KEYWORD, BARE_LABEL)
349365
PG_KEYWORD("real", REAL, COL_NAME_KEYWORD, BARE_LABEL)
@@ -403,6 +419,7 @@ PG_KEYWORD("skip", SKIP, UNRESERVED_KEYWORD, BARE_LABEL)
403419
PG_KEYWORD("smallint", SMALLINT, COL_NAME_KEYWORD, BARE_LABEL)
404420
PG_KEYWORD("snapshot", SNAPSHOT, UNRESERVED_KEYWORD, BARE_LABEL)
405421
PG_KEYWORD("some", SOME, RESERVED_KEYWORD, BARE_LABEL)
422+
PG_KEYWORD("source", SOURCE, UNRESERVED_KEYWORD, BARE_LABEL)
406423
PG_KEYWORD("sql", SQL_P, UNRESERVED_KEYWORD, BARE_LABEL)
407424
PG_KEYWORD("stable", STABLE, UNRESERVED_KEYWORD, BARE_LABEL)
408425
PG_KEYWORD("standalone", STANDALONE_P, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -414,6 +431,7 @@ PG_KEYWORD("stdout", STDOUT, UNRESERVED_KEYWORD, BARE_LABEL)
414431
PG_KEYWORD("storage", STORAGE, UNRESERVED_KEYWORD, BARE_LABEL)
415432
PG_KEYWORD("stored", STORED, UNRESERVED_KEYWORD, BARE_LABEL)
416433
PG_KEYWORD("strict", STRICT_P, UNRESERVED_KEYWORD, BARE_LABEL)
434+
PG_KEYWORD("string", STRING_P, UNRESERVED_KEYWORD, BARE_LABEL)
417435
PG_KEYWORD("strip", STRIP_P, UNRESERVED_KEYWORD, BARE_LABEL)
418436
PG_KEYWORD("subscription", SUBSCRIPTION, UNRESERVED_KEYWORD, BARE_LABEL)
419437
PG_KEYWORD("substring", SUBSTRING, COL_NAME_KEYWORD, BARE_LABEL)
@@ -426,6 +444,7 @@ PG_KEYWORD("table", TABLE, RESERVED_KEYWORD, BARE_LABEL)
426444
PG_KEYWORD("tables", TABLES, UNRESERVED_KEYWORD, BARE_LABEL)
427445
PG_KEYWORD("tablesample", TABLESAMPLE, TYPE_FUNC_NAME_KEYWORD, BARE_LABEL)
428446
PG_KEYWORD("tablespace", TABLESPACE, UNRESERVED_KEYWORD, BARE_LABEL)
447+
PG_KEYWORD("target", TARGET, UNRESERVED_KEYWORD, BARE_LABEL)
429448
PG_KEYWORD("temp", TEMP, UNRESERVED_KEYWORD, BARE_LABEL)
430449
PG_KEYWORD("template", TEMPLATE, UNRESERVED_KEYWORD, BARE_LABEL)
431450
PG_KEYWORD("temporary", TEMPORARY, UNRESERVED_KEYWORD, BARE_LABEL)
@@ -449,6 +468,7 @@ PG_KEYWORD("types", TYPES_P, UNRESERVED_KEYWORD, BARE_LABEL)
449468
PG_KEYWORD("uescape", UESCAPE, UNRESERVED_KEYWORD, BARE_LABEL)
450469
PG_KEYWORD("unbounded", UNBOUNDED, UNRESERVED_KEYWORD, BARE_LABEL)
451470
PG_KEYWORD("uncommitted", UNCOMMITTED, UNRESERVED_KEYWORD, BARE_LABEL)
471+
PG_KEYWORD("unconditional", UNCONDITIONAL, UNRESERVED_KEYWORD, BARE_LABEL)
452472
PG_KEYWORD("unencrypted", UNENCRYPTED, UNRESERVED_KEYWORD, BARE_LABEL)
453473
PG_KEYWORD("union", UNION, RESERVED_KEYWORD, AS_LABEL)
454474
PG_KEYWORD("unique", UNIQUE, RESERVED_KEYWORD, BARE_LABEL)

0 commit comments

Comments
 (0)