diff --git a/CHANGES.md b/CHANGES.md index a15ee10103..ee2fa37695 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,9 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( ## [Unreleased] +### Added +* Added support for JBDI bind list params in sql formatter ([#955](https://github.com/diffplug/spotless/pull/955)) + ## [2.18.0] - 2021-09-30 ### Added * Added support for custom JSR223 formatters ([#945](https://github.com/diffplug/spotless/pull/945)) diff --git a/lib/src/main/java/com/diffplug/spotless/sql/dbeaver/SQLTokenizedFormatter.java b/lib/src/main/java/com/diffplug/spotless/sql/dbeaver/SQLTokenizedFormatter.java index 28f94de0de..f2c98eebc1 100644 --- a/lib/src/main/java/com/diffplug/spotless/sql/dbeaver/SQLTokenizedFormatter.java +++ b/lib/src/main/java/com/diffplug/spotless/sql/dbeaver/SQLTokenizedFormatter.java @@ -138,6 +138,13 @@ private List format(final List argList) { argList.remove(index + 1); argList.remove(index + 1); } + + // JDBI bind list + if (tokenString.equals("<") && t1.getType() == TokenType.NAME && token2String.equals(">")) { + t0.setString(t0.getString() + t1.getString() + t2.getString()); + argList.remove(index + 1); + argList.remove(index + 1); + } } int indent = 0; diff --git a/plugin-gradle/CHANGES.md b/plugin-gradle/CHANGES.md index 866e5a6755..7525020e4a 100644 --- a/plugin-gradle/CHANGES.md +++ b/plugin-gradle/CHANGES.md @@ -4,6 +4,9 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( ## [Unreleased] +### Added +* Added support for JBDI bind list params in sql formatter ([#955](https://github.com/diffplug/spotless/pull/955)) + ## [5.15.2] - 2021-09-27 ### Changed * Added support and bump Eclipse formatter default versions to `4.21` for `eclipse-cdt`, `eclipse-jdt`, `eclipse-wtp`. Change is only applied for JVM 11+. diff --git a/plugin-maven/CHANGES.md b/plugin-maven/CHANGES.md index d633f65cc1..3237e5eb81 100644 --- a/plugin-maven/CHANGES.md +++ b/plugin-maven/CHANGES.md @@ -4,6 +4,9 @@ We adhere to the [keepachangelog](https://keepachangelog.com/en/1.0.0/) format ( ## [Unreleased] +### Added +* Added support for JBDI bind list params in sql formatter ([#955](https://github.com/diffplug/spotless/pull/955)) + ## [2.15.0] - 2021-09-30 ### Added * Added support for custom JSR223 formatters ([#945](https://github.com/diffplug/spotless/pull/945)) diff --git a/testlib/src/main/resources/sql/dbeaver/full.clean b/testlib/src/main/resources/sql/dbeaver/full.clean index bd53dad562..006e502a5d 100644 --- a/testlib/src/main/resources/sql/dbeaver/full.clean +++ b/testlib/src/main/resources/sql/dbeaver/full.clean @@ -51,9 +51,10 @@ WHERE table3.name = 'Foo Bar' AND table3.type = 'unknown_type' AND table3.param =:aParam + AND table3.listParam IN() ) GROUP BY table1.id, table2.number ORDER BY - table1.id; \ No newline at end of file + table1.id; diff --git a/testlib/src/main/resources/sql/dbeaver/full.dirty b/testlib/src/main/resources/sql/dbeaver/full.dirty index 03b722747a..87c0dac231 100644 --- a/testlib/src/main/resources/sql/dbeaver/full.dirty +++ b/testlib/src/main/resources/sql/dbeaver/full.dirty @@ -9,5 +9,5 @@ DELETE FROM TABLE1 WHERE a=1; UPDATE TABLE1 SET a=2 WHERE a=1; SELECT table1.id, table2.number, SUM(table1.amount) FROM table1 INNER JOIN table2 ON table.id = table2.table1_id -WHERE table1.id IN (SELECT table1_id FROM table3 WHERE table3.name = 'Foo Bar' and table3.type = 'unknown_type' And table3.param = :aParam) -GROUP BY table1.id, table2.number ORDER BY table1.id; \ No newline at end of file +WHERE table1.id IN (SELECT table1_id FROM table3 WHERE table3.name = 'Foo Bar' and table3.type = 'unknown_type' And table3.param = :aParam aNd table3.listParam IN ( )) +GROUP BY table1.id, table2.number ORDER BY table1.id; diff --git a/testlib/src/main/resources/sql/dbeaver/jdbi-params.clean b/testlib/src/main/resources/sql/dbeaver/jdbi-params.clean new file mode 100644 index 0000000000..be0934772a --- /dev/null +++ b/testlib/src/main/resources/sql/dbeaver/jdbi-params.clean @@ -0,0 +1,7 @@ +SELECT + * +FROM + TABLE + WHERE + id IN() + AND user_id =:user_id; diff --git a/testlib/src/main/resources/sql/dbeaver/jdbi-params.dirty b/testlib/src/main/resources/sql/dbeaver/jdbi-params.dirty new file mode 100644 index 0000000000..3193e724a9 --- /dev/null +++ b/testlib/src/main/resources/sql/dbeaver/jdbi-params.dirty @@ -0,0 +1 @@ +SELECT * FROM table WHERE id IN () AND user_id = :user_id; diff --git a/testlib/src/test/java/com/diffplug/spotless/sql/DBeaverSQLFormatterStepTest.java b/testlib/src/test/java/com/diffplug/spotless/sql/DBeaverSQLFormatterStepTest.java index 44b2cecad3..58b0115b9c 100644 --- a/testlib/src/test/java/com/diffplug/spotless/sql/DBeaverSQLFormatterStepTest.java +++ b/testlib/src/test/java/com/diffplug/spotless/sql/DBeaverSQLFormatterStepTest.java @@ -35,7 +35,8 @@ void behavior() throws Exception { .testResource("sql/dbeaver/full.dirty", "sql/dbeaver/full.clean") .testResource("sql/dbeaver/V1_initial.sql.dirty", "sql/dbeaver/V1_initial.sql.clean") .testResource("sql/dbeaver/alter-table.dirty", "sql/dbeaver/alter-table.clean") - .testResource("sql/dbeaver/create.dirty", "sql/dbeaver/create.clean"); + .testResource("sql/dbeaver/create.dirty", "sql/dbeaver/create.clean") + .testResource("sql/dbeaver/jdbi-params.dirty", "sql/dbeaver/jdbi-params.clean"); } @Test