From ef3ba45b9595f8f6cd394a260ac96d59b71cfa4c Mon Sep 17 00:00:00 2001 From: lukaseder Date: Tue, 5 Nov 2019 20:17:27 +0100 Subject: [PATCH] [jOOQ/jOOQ#9425] Diff createOrReplaceView flag --- .../java/org/jooq/DDLDiffConfiguration.java | 32 ++++++ .../java/org/jooq/DDLExportConfiguration.java | 98 +++++++++++++++++++ jOOQ/src/main/java/org/jooq/impl/DDL.java | 4 +- jOOQ/src/main/java/org/jooq/impl/Diff.java | 7 ++ 4 files changed, 140 insertions(+), 1 deletion(-) diff --git a/jOOQ/src/main/java/org/jooq/DDLDiffConfiguration.java b/jOOQ/src/main/java/org/jooq/DDLDiffConfiguration.java index c82d7c29b6..d65434a4a2 100644 --- a/jOOQ/src/main/java/org/jooq/DDLDiffConfiguration.java +++ b/jOOQ/src/main/java/org/jooq/DDLDiffConfiguration.java @@ -202,6 +202,38 @@ package org.jooq; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/DDLExportConfiguration.java b/jOOQ/src/main/java/org/jooq/DDLExportConfiguration.java index 7e9a656266..86d3389bf6 100644 --- a/jOOQ/src/main/java/org/jooq/DDLExportConfiguration.java +++ b/jOOQ/src/main/java/org/jooq/DDLExportConfiguration.java @@ -55,6 +55,8 @@ public final class DDLExportConfiguration { private final boolean createTableIfNotExists; private final boolean createIndexIfNotExists; private final boolean createSequenceIfNotExists; + private final boolean createViewIfNotExists; + private final boolean createOrReplaceView; private final EnumSet flags; private final boolean respectCatalogOrder; private final boolean respectSchemaOrder; @@ -75,6 +77,8 @@ public final class DDLExportConfiguration { false, false, false, + false, + false, false, false, @@ -92,6 +96,8 @@ public final class DDLExportConfiguration { boolean createTableIfNotExists, boolean createIndexIfNotExists, boolean createSequenceIfNotExists, + boolean createViewIfNotExists, + boolean createOrreplaceView, boolean respectCatalogOrder, boolean respectSchemaOrder, boolean respectTableOrder, @@ -106,6 +112,8 @@ public final class DDLExportConfiguration { this.createTableIfNotExists = createTableIfNotExists; this.createIndexIfNotExists = createIndexIfNotExists; this.createSequenceIfNotExists = createSequenceIfNotExists; + this.createViewIfNotExists = createViewIfNotExists; + this.createOrReplaceView = createOrreplaceView; this.respectCatalogOrder = respectCatalogOrder; this.respectSchemaOrder = respectSchemaOrder; @@ -140,6 +148,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, respectSchemaOrder, respectTableOrder, @@ -171,6 +181,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, respectSchemaOrder, respectTableOrder, @@ -202,6 +214,8 @@ public final class DDLExportConfiguration { newCreateTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, respectSchemaOrder, respectTableOrder, @@ -233,6 +247,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, newCreateIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, respectSchemaOrder, respectTableOrder, @@ -264,6 +280,74 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, newCreateSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, + respectCatalogOrder, + respectSchemaOrder, + respectTableOrder, + respectColumnOrder, + respectConstraintOrder, + respectIndexOrder, + respectSequenceOrder + ); + } + + /** + * Whether to generate CREATE VIEW IF NOT EXISTS statements. + *

+ * Not all RDBMS support this flag. Check + * {@link DSLContext#createViewIfNotExists(Table, Field...)} to see if your + * {@link SQLDialect} supports the clause. + */ + public final boolean createViewIfNotExists() { + return createViewIfNotExists; + } + + /** + * Whether to generate CREATE VIEW IF NOT EXISTS statements. + */ + public final DDLExportConfiguration createViewIfNotExists(boolean newCreateViewIfNotExists) { + return new DDLExportConfiguration( + flags, + createSchemaIfNotExists, + createTableIfNotExists, + createIndexIfNotExists, + createSequenceIfNotExists, + newCreateViewIfNotExists, + createOrReplaceView, + respectCatalogOrder, + respectSchemaOrder, + respectTableOrder, + respectColumnOrder, + respectConstraintOrder, + respectIndexOrder, + respectSequenceOrder + ); + } + + /** + * Whether to generate CREATE OR REPLACE VIEW statements. + *

+ * Not all RDBMS support this flag. Check + * {@link DSLContext#createOrReplaceView(Table, Field...)} to see if your + * {@link SQLDialect} supports the clause. + */ + public final boolean createOrReplaceView() { + return createOrReplaceView; + } + + /** + * Whether to generate CREATE OR REPLACE VIEW statements. + */ + public final DDLExportConfiguration createOrReplaceView(boolean newCreateOrReplaceView) { + return new DDLExportConfiguration( + flags, + createSchemaIfNotExists, + createTableIfNotExists, + createIndexIfNotExists, + createSequenceIfNotExists, + createViewIfNotExists, + newCreateOrReplaceView, respectCatalogOrder, respectSchemaOrder, respectTableOrder, @@ -293,6 +377,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, newRespectCatalogOrder, respectSchemaOrder, respectTableOrder, @@ -322,6 +408,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, newRespectSchemaOrder, respectTableOrder, @@ -351,6 +439,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, respectSchemaOrder, newRespectTableOrder, @@ -380,6 +470,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, respectSchemaOrder, respectTableOrder, @@ -409,6 +501,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, respectSchemaOrder, respectTableOrder, @@ -438,6 +532,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, respectSchemaOrder, respectTableOrder, @@ -467,6 +563,8 @@ public final class DDLExportConfiguration { createTableIfNotExists, createIndexIfNotExists, createSequenceIfNotExists, + createViewIfNotExists, + createOrReplaceView, respectCatalogOrder, respectSchemaOrder, respectTableOrder, diff --git a/jOOQ/src/main/java/org/jooq/impl/DDL.java b/jOOQ/src/main/java/org/jooq/impl/DDL.java index 36cfd47c38..a5b1535056 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DDL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DDL.java @@ -93,8 +93,10 @@ final class DDL { OnCommit onCommit = table.getOptions().onCommit(); if (view) - return (configuration.createTableIfNotExists() + return (configuration.createViewIfNotExists() ? ctx.createViewIfNotExists(table, table.fields()) + : configuration.createOrReplaceView() + ? ctx.createOrReplaceView(table, table.fields()) : ctx.createView(table, table.fields())) .as(table.getOptions().select()); diff --git a/jOOQ/src/main/java/org/jooq/impl/Diff.java b/jOOQ/src/main/java/org/jooq/impl/Diff.java index d81042f083..9378d6e3ad 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Diff.java +++ b/jOOQ/src/main/java/org/jooq/impl/Diff.java @@ -497,6 +497,13 @@ package org.jooq.impl; + + + + + + +