diff --git a/src/languages/postgresql/postgresql.formatter.ts b/src/languages/postgresql/postgresql.formatter.ts index e46fddce8..27bdfe5ea 100644 --- a/src/languages/postgresql/postgresql.formatter.ts +++ b/src/languages/postgresql/postgresql.formatter.ts @@ -116,10 +116,10 @@ const tabularOnelineClauses = expandPhrases([ 'COMMIT PREPARED', 'COPY', 'CREATE ACCESS METHOD', - 'CREATE AGGREGATE', + 'CREATE [OR REPLACE] AGGREGATE', 'CREATE CAST', 'CREATE COLLATION', - 'CREATE CONVERSION', + 'CREATE [DEFAULT] CONVERSION', 'CREATE DATABASE', 'CREATE DOMAIN', 'CREATE EVENT TRIGGER', @@ -128,18 +128,18 @@ const tabularOnelineClauses = expandPhrases([ 'CREATE FOREIGN TABLE', 'CREATE [OR REPLACE] FUNCTION', 'CREATE GROUP', - 'CREATE INDEX', - 'CREATE LANGUAGE', + 'CREATE [UNIQUE] INDEX', + 'CREATE [OR REPLACE] [TRUSTED] [PROCEDURAL] LANGUAGE', 'CREATE OPERATOR', 'CREATE OPERATOR CLASS', 'CREATE OPERATOR FAMILY', 'CREATE POLICY', - 'CREATE PROCEDURE', + 'CREATE [OR REPLACE] PROCEDURE', 'CREATE PUBLICATION', 'CREATE ROLE', - 'CREATE RULE', - 'CREATE SCHEMA', - 'CREATE SEQUENCE', + 'CREATE [OR REPLACE] RULE', + 'CREATE SCHEMA [AUTHORIZATION]', + 'CREATE {TEMPORARY | TEMP | UNLOGGED} SEQUENCE', 'CREATE SERVER', 'CREATE STATISTICS', 'CREATE SUBSCRIPTION', @@ -148,8 +148,8 @@ const tabularOnelineClauses = expandPhrases([ 'CREATE TEXT SEARCH DICTIONARY', 'CREATE TEXT SEARCH PARSER', 'CREATE TEXT SEARCH TEMPLATE', - 'CREATE TRANSFORM', - 'CREATE TRIGGER', + 'CREATE [OR REPLACE] TRANSFORM', + 'CREATE [OR REPLACE] [CONSTRAINT] TRIGGER', 'CREATE TYPE', 'CREATE USER', 'CREATE USER MAPPING', diff --git a/test/postgresql.test.ts b/test/postgresql.test.ts index cd4f9a9e5..c725b57bc 100644 --- a/test/postgresql.test.ts +++ b/test/postgresql.test.ts @@ -398,4 +398,11 @@ describe('PostgreSqlFormatter', () => { }) ).toBe('CREATE TABLE foo (bar JSON, baz JSONB);'); }); + + // Issue #850 + it('supports OR REPLACE in CREATE PROCEDURE', () => { + expect(format(`CREATE OR REPLACE PROCEDURE foo () LANGUAGE sql AS $$ BEGIN END $$;`)).toBe( + dedent`CREATE OR REPLACE PROCEDURE foo () LANGUAGE sql AS $$ BEGIN END $$;` + ); + }); });