From 2d8229d54a13d8c460c65d171c4fc727f29e0eda Mon Sep 17 00:00:00 2001 From: Yevgen Antymyrov Date: Thu, 3 Nov 2022 12:24:06 +0100 Subject: [PATCH] feat: Improve SELECT DISTINCT formatting, making it clear that the DISTINCT affects all columns, not just the first one --- src/languages/Db2Formatter.js | 1 + src/languages/N1qlFormatter.js | 1 + src/languages/PlSqlFormatter.js | 2 +- src/languages/StandardSqlFormatter.js | 2 +- test/behavesLikeSqlFormatter.js | 12 ++++++------ 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/languages/Db2Formatter.js b/src/languages/Db2Formatter.js index 02ba83ea7d..923e4de44e 100644 --- a/src/languages/Db2Formatter.js +++ b/src/languages/Db2Formatter.js @@ -522,6 +522,7 @@ const reservedTopLevelWords = [ 'INTERSECT', 'LIMIT', 'ORDER BY', + 'SELECT DISTINCT', 'SELECT', 'SET CURRENT SCHEMA', 'SET SCHEMA', diff --git a/src/languages/N1qlFormatter.js b/src/languages/N1qlFormatter.js index 0405fad051..e722e443c2 100644 --- a/src/languages/N1qlFormatter.js +++ b/src/languages/N1qlFormatter.js @@ -192,6 +192,7 @@ const reservedTopLevelWords = [ 'NEST', 'ORDER BY', 'PREPARE', + 'SELECT DISTINCT', 'SELECT', 'SET CURRENT SCHEMA', 'SET SCHEMA', diff --git a/src/languages/PlSqlFormatter.js b/src/languages/PlSqlFormatter.js index d560f96ee1..e0f0d4d51d 100644 --- a/src/languages/PlSqlFormatter.js +++ b/src/languages/PlSqlFormatter.js @@ -84,7 +84,6 @@ const reservedWords = [ 'DESC', 'DETERMINISTIC', 'DIRECTORY', - 'DISTINCT', 'DO', 'DOUBLE', 'DROP', @@ -379,6 +378,7 @@ const reservedTopLevelWords = [ 'LOOP', 'MODIFY', 'ORDER BY', + 'SELECT DISTINCT', 'SELECT', 'SET CURRENT SCHEMA', 'SET SCHEMA', diff --git a/src/languages/StandardSqlFormatter.js b/src/languages/StandardSqlFormatter.js index 619d20b7ef..63f80cd787 100644 --- a/src/languages/StandardSqlFormatter.js +++ b/src/languages/StandardSqlFormatter.js @@ -56,7 +56,6 @@ const reservedWords = [ 'DESC', 'DESCRIBE', 'DETERMINISTIC', - 'DISTINCT', 'DISTINCTROW', 'DIV', 'DO', @@ -293,6 +292,7 @@ const reservedTopLevelWords = [ 'LIMIT', 'MODIFY', 'ORDER BY', + 'SELECT DISTINCT', 'SELECT', 'SET CURRENT SCHEMA', 'SET SCHEMA', diff --git a/test/behavesLikeSqlFormatter.js b/test/behavesLikeSqlFormatter.js index 9fb876b83d..d886846062 100644 --- a/test/behavesLikeSqlFormatter.js +++ b/test/behavesLikeSqlFormatter.js @@ -48,8 +48,8 @@ export default function behavesLikeSqlFormatter(language) { "SELECT DISTINCT name, ROUND(age/7) field1, 18 + 20 AS field2, 'some string' FROM foo;" ); expect(result).toBe(dedent/* sql */ ` - SELECT - DISTINCT name, + SELECT DISTINCT + name, ROUND(age / 7) field1, 18 + 20 AS field2, 'some string' @@ -140,8 +140,8 @@ export default function behavesLikeSqlFormatter(language) { it('preserves case of keywords', () => { const result = format('select distinct * frOM foo left join bar WHERe a > 1 and b = 3'); expect(result).toBe(dedent/* sql */ ` - select - distinct * + select distinct + * frOM foo left join bar @@ -483,8 +483,8 @@ export default function behavesLikeSqlFormatter(language) { uppercase: true }); expect(result).toBe(dedent/* sql */ ` - SELECT - DISTINCT * + SELECT DISTINCT + * FROM foo LEFT JOIN bar