Skip to content

Commit 2005974

Browse files
committed
Add optional syntax to PostgreSQL create statements (#851)
2 parents 0b825e6 + c758b01 commit 2005974

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

AUTHORS

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ ivan baktsheev
2727
Jacobo Bouzas Quiroga <[email protected]>
2828
JagmitSwami <[email protected]>
2929
João Pimentel Ferreira
30+
James A Rosen <[email protected]>
3031
Jonathan Schuster
3132
Josh Sandler <[email protected]>
3233
Justin Dane Vallar <[email protected]>

src/languages/postgresql/postgresql.formatter.ts

+10-10
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,10 @@ const tabularOnelineClauses = expandPhrases([
116116
'COMMIT PREPARED',
117117
'COPY',
118118
'CREATE ACCESS METHOD',
119-
'CREATE AGGREGATE',
119+
'CREATE [OR REPLACE] AGGREGATE',
120120
'CREATE CAST',
121121
'CREATE COLLATION',
122-
'CREATE CONVERSION',
122+
'CREATE [DEFAULT] CONVERSION',
123123
'CREATE DATABASE',
124124
'CREATE DOMAIN',
125125
'CREATE EVENT TRIGGER',
@@ -128,18 +128,18 @@ const tabularOnelineClauses = expandPhrases([
128128
'CREATE FOREIGN TABLE',
129129
'CREATE [OR REPLACE] FUNCTION',
130130
'CREATE GROUP',
131-
'CREATE INDEX',
132-
'CREATE LANGUAGE',
131+
'CREATE [UNIQUE] INDEX',
132+
'CREATE [OR REPLACE] [TRUSTED] [PROCEDURAL] LANGUAGE',
133133
'CREATE OPERATOR',
134134
'CREATE OPERATOR CLASS',
135135
'CREATE OPERATOR FAMILY',
136136
'CREATE POLICY',
137-
'CREATE PROCEDURE',
137+
'CREATE [OR REPLACE] PROCEDURE',
138138
'CREATE PUBLICATION',
139139
'CREATE ROLE',
140-
'CREATE RULE',
141-
'CREATE SCHEMA',
142-
'CREATE SEQUENCE',
140+
'CREATE [OR REPLACE] RULE',
141+
'CREATE SCHEMA [AUTHORIZATION]',
142+
'CREATE [TEMPORARY | TEMP | UNLOGGED] SEQUENCE',
143143
'CREATE SERVER',
144144
'CREATE STATISTICS',
145145
'CREATE SUBSCRIPTION',
@@ -148,8 +148,8 @@ const tabularOnelineClauses = expandPhrases([
148148
'CREATE TEXT SEARCH DICTIONARY',
149149
'CREATE TEXT SEARCH PARSER',
150150
'CREATE TEXT SEARCH TEMPLATE',
151-
'CREATE TRANSFORM',
152-
'CREATE TRIGGER',
151+
'CREATE [OR REPLACE] TRANSFORM',
152+
'CREATE [OR REPLACE] [CONSTRAINT] TRIGGER',
153153
'CREATE TYPE',
154154
'CREATE USER',
155155
'CREATE USER MAPPING',

test/postgresql.test.ts

+7
Original file line numberDiff line numberDiff line change
@@ -398,4 +398,11 @@ describe('PostgreSqlFormatter', () => {
398398
})
399399
).toBe('CREATE TABLE foo (bar JSON, baz JSONB);');
400400
});
401+
402+
// Issue #850
403+
it('supports OR REPLACE in CREATE PROCEDURE', () => {
404+
expect(format(`CREATE OR REPLACE PROCEDURE foo () LANGUAGE sql AS $$ BEGIN END $$;`)).toBe(
405+
dedent`CREATE OR REPLACE PROCEDURE foo () LANGUAGE sql AS $$ BEGIN END $$;`
406+
);
407+
});
401408
});

0 commit comments

Comments
 (0)