diff --git a/src/languages/transactsql/transactsql.formatter.ts b/src/languages/transactsql/transactsql.formatter.ts index 01f6806cc7..12c0b3f027 100644 --- a/src/languages/transactsql/transactsql.formatter.ts +++ b/src/languages/transactsql/transactsql.formatter.ts @@ -20,6 +20,7 @@ const reservedClauses = expandPhrases([ 'FETCH {FIRST | NEXT}', 'FOR {BROWSE | XML | JSON}', 'OPTION', + 'OUTPUT', // Data manipulation // - insert: 'INSERT [INTO]', diff --git a/test/transactsql.test.ts b/test/transactsql.test.ts index f3041c23fe..8a65456026 100644 --- a/test/transactsql.test.ts +++ b/test/transactsql.test.ts @@ -220,7 +220,35 @@ describe('TransactSqlFormatter', () => { it('supports special $ACTION keyword', () => { expect(format(`MERGE INTO tbl OUTPUT $action AS act;`)).toBe(dedent` MERGE INTO - tbl OUTPUT $action AS act; + tbl + OUTPUT + $action AS act; + `); + }); + + // Issue #888 + it('formats OUTPUT clause on a separate line', () => { + expect( + format( + `UPDATE tbl SET a = 1 OUTPUT inserted.id, deleted.a INTO @log WHERE b = 2; DELETE FROM tbl OUTPUT deleted.id WHERE b = 3;` + ) + ).toBe(dedent` + UPDATE tbl + SET + a = 1 + OUTPUT + inserted.id, + deleted.a + INTO + @log + WHERE + b = 2; + + DELETE FROM tbl + OUTPUT + deleted.id + WHERE + b = 3; `); });