From 89c4b40a2b635c9dabe6d999b3affd8a141d4cd2 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Thu, 15 Feb 2018 18:01:18 +0100 Subject: [PATCH] [#5319] Added support for PostgreSQL --- .../main/java/org/jooq/AlterTableStep.java | 12 ++++----- .../java/org/jooq/impl/AlterTableImpl.java | 25 +++++++++++++++++++ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/AlterTableStep.java b/jOOQ/src/main/java/org/jooq/AlterTableStep.java index fadab28554..ff8de6f712 100644 --- a/jOOQ/src/main/java/org/jooq/AlterTableStep.java +++ b/jOOQ/src/main/java/org/jooq/AlterTableStep.java @@ -457,7 +457,7 @@ public interface AlterTableStep { *

* This is an alias for {@link #dropColumns(Collection)}. */ - @Support({ H2, FIREBIRD, MARIADB, MYSQL }) + @Support({ H2, FIREBIRD, MARIADB, MYSQL, POSTGRES }) AlterTableDropStep drop(Field... fields); /** @@ -466,7 +466,7 @@ public interface AlterTableStep { *

* This is an alias for {@link #dropColumns(Collection)}. */ - @Support({ H2, FIREBIRD, MARIADB, MYSQL }) + @Support({ H2, FIREBIRD, MARIADB, MYSQL, POSTGRES }) AlterTableDropStep drop(Name... fields); /** @@ -475,21 +475,21 @@ public interface AlterTableStep { *

* This is an alias for {@link #dropColumns(Collection)}. */ - @Support({ H2, FIREBIRD, MARIADB, MYSQL }) + @Support({ H2, FIREBIRD, MARIADB, MYSQL, POSTGRES }) AlterTableDropStep drop(String... fields); /** * Add an DROP COLUMN clause to the ALTER TABLE * statement. */ - @Support({ H2, FIREBIRD, MARIADB, MYSQL }) + @Support({ H2, FIREBIRD, MARIADB, MYSQL, POSTGRES }) AlterTableDropStep dropColumns(Field... fields); /** * Add an DROP COLUMN clause to the ALTER TABLE * statement. */ - @Support({ H2, FIREBIRD, MARIADB, MYSQL }) + @Support({ H2, FIREBIRD, MARIADB, MYSQL, POSTGRES }) AlterTableDropStep dropColumns(Name... fields); /** @@ -512,7 +512,7 @@ public interface AlterTableStep { * Add an DROP COLUMN clause to the ALTER TABLE * statement. */ - @Support({ H2, FIREBIRD, MARIADB, MYSQL }) + @Support({ H2, FIREBIRD, MARIADB, MYSQL, POSTGRES }) AlterTableDropStep dropColumns(Collection> fields); /** diff --git a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java index 6357fa6072..bf390317de 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/AlterTableImpl.java @@ -65,6 +65,7 @@ import static org.jooq.SQLDialect.MYSQL; // ... import static org.jooq.SQLDialect.POSTGRES; // ... +import static org.jooq.impl.DSL.alterTable; import static org.jooq.impl.DSL.commentOnTable; import static org.jooq.impl.DSL.constraint; import static org.jooq.impl.DSL.field; @@ -730,6 +731,15 @@ final class AlterTableImpl extends AbstractQuery implements } } + // [#5319] Compound statements to drop multiple columns in a single statement. + if (dropColumns != null && dropColumns.size() > 1) { + switch (family) { + case POSTGRES: + dropColumnsInBlock(ctx); + return; + } + } + accept1(ctx); } @@ -1203,6 +1213,21 @@ final class AlterTableImpl extends AbstractQuery implements + + private final void dropColumnsInBlock(Context ctx) { + begin(ctx); + + for (int i = 0; i < dropColumns.size(); i++) { + Field f = dropColumns.get(i); + + if (i > 0) + ctx.formatSeparator(); + + ctx.visit(alterTable(table).dropColumn(f)).sql(';'); + } + + end(ctx); + } private final void alterColumnTypeAndNullabilityInBlock(Context ctx) { begin(ctx);