Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
129 changes: 77 additions & 52 deletions __fixtures__/generated/generated.json

Large diffs are not rendered by default.

36 changes: 36 additions & 0 deletions __fixtures__/kitchen-sink/misc/pg18.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
-- PG18: RETURNING OLD/NEW aliases (ReturningClause options)
INSERT INTO t (a) VALUES (1) RETURNING WITH (OLD AS o, NEW AS n) o.a, n.a;
UPDATE t SET a = 2 WHERE a = 1 RETURNING WITH (OLD AS prev, NEW AS next) prev.a AS before, next.a AS after;
DELETE FROM t WHERE a = 2 RETURNING WITH (OLD AS o) o.*;
MERGE INTO t USING s ON t.id = s.id WHEN MATCHED THEN UPDATE SET a = s.a RETURNING WITH (OLD AS o, NEW AS n) merge_action(), o.a, n.a;
INSERT INTO t (a) VALUES (1) RETURNING new.a;
UPDATE t SET a = 2 RETURNING old.a, new.a;

-- PG18: VIRTUAL generated columns
CREATE TABLE gtest (a int, b int GENERATED ALWAYS AS (a * 2) VIRTUAL);
CREATE TABLE gtest2 (a int, b int GENERATED ALWAYS AS (a * 2) STORED, c int GENERATED ALWAYS AS (a + 1) VIRTUAL);

-- PG18: NOT ENFORCED constraints
CREATE TABLE enf (a int, CONSTRAINT chk CHECK (a > 0) NOT ENFORCED);
CREATE TABLE enf2 (a int CHECK (a > 0) NOT ENFORCED);
ALTER TABLE enf ADD CONSTRAINT fk FOREIGN KEY (a) REFERENCES other (a) NOT ENFORCED;
ALTER TABLE enf ALTER CONSTRAINT chk NOT ENFORCED;
ALTER TABLE enf ALTER CONSTRAINT chk ENFORCED;

-- PG18: ALTER CONSTRAINT INHERIT / NO INHERIT
ALTER TABLE enf ALTER CONSTRAINT chk NO INHERIT;
ALTER TABLE enf ALTER CONSTRAINT chk INHERIT;
ALTER TABLE enf ALTER CONSTRAINT fk DEFERRABLE INITIALLY DEFERRED;
ALTER TABLE enf ALTER CONSTRAINT fk NOT DEFERRABLE;

-- PG18: temporal primary keys / unique WITHOUT OVERLAPS and PERIOD foreign keys
CREATE TABLE temporal_rng (id int4range, valid_at daterange, CONSTRAINT temporal_rng_pk PRIMARY KEY (id, valid_at WITHOUT OVERLAPS));
CREATE TABLE temporal_rng_uq (id int4range, valid_at daterange, CONSTRAINT temporal_rng_uq UNIQUE (id, valid_at WITHOUT OVERLAPS));
CREATE TABLE temporal_fk_rng2rng (id int4range, valid_at daterange, parent_id int4range, CONSTRAINT temporal_fk_rng2rng_fk FOREIGN KEY (parent_id, PERIOD valid_at) REFERENCES temporal_rng (id, PERIOD valid_at));
ALTER TABLE temporal_fk_rng2rng ADD CONSTRAINT temporal_fk_rng2rng_fk2 FOREIGN KEY (parent_id, PERIOD valid_at) REFERENCES temporal_rng (id, PERIOD valid_at) ON DELETE CASCADE;

-- PG18: named NOT NULL table constraints
CREATE TABLE nn (a int, CONSTRAINT a_not_null NOT NULL a);
ALTER TABLE nn ADD CONSTRAINT b_not_null NOT NULL a;
ALTER TABLE nn ADD NOT NULL a NOT VALID;
CREATE TABLE nn2 (a int, NOT NULL a NO INHERIT);
352 changes: 174 additions & 178 deletions __fixtures__/plpgsql-generated/generated.json

Large diffs are not rendered by default.

4,188 changes: 4,188 additions & 0 deletions __fixtures__/proto/18-latest.proto

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions config/versions.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,13 @@
"pgsql-deparser": "17.11.2",
"@pgsql/types": "17.6.1",
"npmTag": "pg17"
},
"18": {
"libpg-query": "18.1.1",
"pgsql-parser": "18.0.0",
"pgsql-deparser": "18.0.0",
"@pgsql/types": "18.0.0",
"npmTag": "pg18"
}
}
}
33 changes: 33 additions & 0 deletions packages/deparser/__tests__/kitchen-sink/misc-pg18.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@

import { FixtureTestUtils } from '../../test-utils';
const fixtures = new FixtureTestUtils();

it('misc-pg18', async () => {
await fixtures.runFixtureTests([
"misc/pg18-1.sql",
"misc/pg18-2.sql",
"misc/pg18-3.sql",
"misc/pg18-4.sql",
"misc/pg18-5.sql",
"misc/pg18-6.sql",
"misc/pg18-7.sql",
"misc/pg18-8.sql",
"misc/pg18-9.sql",
"misc/pg18-10.sql",
"misc/pg18-11.sql",
"misc/pg18-12.sql",
"misc/pg18-13.sql",
"misc/pg18-14.sql",
"misc/pg18-15.sql",
"misc/pg18-16.sql",
"misc/pg18-17.sql",
"misc/pg18-18.sql",
"misc/pg18-19.sql",
"misc/pg18-20.sql",
"misc/pg18-21.sql",
"misc/pg18-22.sql",
"misc/pg18-23.sql",
"misc/pg18-24.sql",
"misc/pg18-25.sql"
]);
});
4 changes: 2 additions & 2 deletions packages/deparser/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,11 @@
"database"
],
"devDependencies": {
"libpg-query": "17.7.3",
"libpg-query": "18.1.1",
"makage": "^0.1.8"
},
"dependencies": {
"@pgsql/quotes": "workspace:*",
"@pgsql/types": "^17.6.2"
"@pgsql/types": "^18.0.0"
}
}
4 changes: 4 additions & 0 deletions packages/deparser/scripts/clean-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,10 @@ export const cleanTree = (tree: any) => {
stmt_len: noop,
stmt_location: noop,
location: noop,
rexpr_list_start: noop,
rexpr_list_end: noop,
list_start: noop,
list_end: noop,
DefElem: (obj: any) => {
if (obj.defname === 'as') {
if (Array.isArray(obj.arg) && obj.arg.length) {
Expand Down
Loading
Loading