From e7d63e271c6c3dbb03e33f427f2f37594c2d307a Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 21 Oct 2019 13:10:48 +0200 Subject: [PATCH] [jOOQ/jOOQ#9410] Omit CREATE SEQUENCE default flag SQL generation --- .../org/jooq/impl/CreateSequenceImpl.java | 53 +++++++++++-------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java index 82cceefda3..4faa9fd5d1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateSequenceImpl.java @@ -90,9 +90,14 @@ final class CreateSequenceImpl extends AbstractRowCountQuery implements private static final Clause[] CLAUSES = { CREATE_SEQUENCE }; private static final Set NO_SUPPORT_IF_NOT_EXISTS = SQLDialect.supported(DERBY, FIREBIRD); private static final Set REQUIRES_START_WITH = SQLDialect.supported(DERBY); - private static final Set NO_SUPPORT_CACHE = SQLDialect.supported(DERBY, HSQLDB); + private static final Set NO_SUPPORT_CACHE = SQLDialect.supported(DERBY, FIREBIRD, HSQLDB); + private static final Set NO_SUPPORT_CYCLE = SQLDialect.supported(FIREBIRD); + private static final Set NO_SUPPORT_INCREMENT_BY = SQLDialect.supported(FIREBIRD); + private static final Set NO_SUPPORT_MINVALUE = SQLDialect.supported(FIREBIRD); + private static final Set NO_SUPPORT_MAXVALUE = SQLDialect.supported(FIREBIRD); + private static final Set NO_SUPPORT_START_WITH = SQLDialect.supported(FIREBIRD); private static final Set NO_SEPARATOR = SQLDialect.supported(CUBRID, MARIADB); - private static final Set OMIT_NO_CACHE = SQLDialect.supported(POSTGRES); + private static final Set OMIT_NO_CACHE = SQLDialect.supported(FIREBIRD, POSTGRES); private final Sequence sequence; private final boolean ifNotExists; @@ -252,29 +257,35 @@ final class CreateSequenceImpl extends AbstractRowCountQuery implements ctx.visit(sequence); String noSeparator = NO_SEPARATOR.contains(family) ? "" : " "; - // Some databases default to sequences starting with MIN_VALUE - if (startWith == null && REQUIRES_START_WITH.contains(family)) - ctx.sql(' ').visit(K_START_WITH).sql(" 1"); - else if (startWith != null) - ctx.sql(' ').visit(K_START_WITH).sql(' ').visit(startWith); + if (!NO_SUPPORT_START_WITH.contains(family)) - if (incrementBy != null) - ctx.sql(' ').visit(K_INCREMENT_BY).sql(' ').visit(incrementBy); + // Some databases default to sequences starting with MIN_VALUE + if (startWith == null && REQUIRES_START_WITH.contains(family)) + ctx.sql(' ').visit(K_START_WITH).sql(" 1"); + else if (startWith != null) + ctx.sql(' ').visit(K_START_WITH).sql(' ').visit(startWith); - if (minvalue != null) - ctx.sql(' ').visit(K_MINVALUE).sql(' ').visit(minvalue); - else if (noMinvalue) - ctx.sql(' ').visit(K_NO).sql(noSeparator).visit(K_MINVALUE); + if (!NO_SUPPORT_INCREMENT_BY.contains(family)) + if (incrementBy != null) + ctx.sql(' ').visit(K_INCREMENT_BY).sql(' ').visit(incrementBy); - if (maxvalue != null) - ctx.sql(' ').visit(K_MAXVALUE).sql(' ').visit(maxvalue); - else if (noMaxvalue) - ctx.sql(' ').visit(K_NO).sql(noSeparator).visit(K_MAXVALUE); + if (!NO_SUPPORT_MINVALUE.contains(family)) + if (minvalue != null) + ctx.sql(' ').visit(K_MINVALUE).sql(' ').visit(minvalue); + else if (noMinvalue) + ctx.sql(' ').visit(K_NO).sql(noSeparator).visit(K_MINVALUE); - if (cycle) - ctx.sql(' ').visit(K_CYCLE); - else if (noCycle) - ctx.sql(' ').visit(K_NO).sql(noSeparator).visit(K_CYCLE); + if (!NO_SUPPORT_MAXVALUE.contains(family)) + if (maxvalue != null) + ctx.sql(' ').visit(K_MAXVALUE).sql(' ').visit(maxvalue); + else if (noMaxvalue) + ctx.sql(' ').visit(K_NO).sql(noSeparator).visit(K_MAXVALUE); + + if (!NO_SUPPORT_CYCLE.contains(family)) + if (cycle) + ctx.sql(' ').visit(K_CYCLE); + else if (noCycle) + ctx.sql(' ').visit(K_NO).sql(noSeparator).visit(K_CYCLE); if (!NO_SUPPORT_CACHE.contains(family)) if (cache != null)