From 2c5171cc404b950bde5c52fff6b8ad645ac2a8d0 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 19 Nov 2019 15:13:33 +0100 Subject: [PATCH] [jOOQ/jOOQ#8528] Add support for ADD IF NOT EXISTS --- .../main/java/org/jooq/impl/DDLInterpreter.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java b/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java index e7734b3dbd..21272f1f80 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java +++ b/jOOQ/src/main/java/org/jooq/impl/DDLInterpreter.java @@ -403,6 +403,11 @@ final class DDLInterpreter { throw unsupportedQuery(query); } else if (query.$addColumn() != null) { + if (existing.field(query.$addColumn()) != null) + if (!query.$ifNotExistsColumn()) + throw fieldAlreadyExists(query.$addColumn()); + else + return; // TODO: Check if we already have the column if (query.$addFirst()) @@ -438,12 +443,11 @@ final class DDLInterpreter { else if (query.$alterColumn() != null) { MutableField existingField = existing.field(query.$alterColumn()); - if (existingField == null) { + if (existingField == null) if (!query.$ifExistsColumn()) throw columnNotExists(query.$alterColumn()); - - return; - } + else + return; if (query.$alterColumnNullability() != null) existingField.type = existingField.type.nullability(query.$alterColumnNullability()); @@ -853,7 +857,7 @@ final class DDLInterpreter { } private static final DataDefinitionException fieldAlreadyExists(Field field) { - return new DataDefinitionException("Field does not exist: " + field.getQualifiedName()); + return new DataDefinitionException("Field already exists: " + field.getQualifiedName()); } // -------------------------------------------------------------------------