From 91fa53d6c52e057dfe2b42a5d1fe57588815a437 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 20 Jun 2023 13:00:00 +0200 Subject: [PATCH] [jOOQ/jOOQ#15207] A fix for a regression when both true and false In this fix, we move the assumption of an EnumType being stored in the schema from an EnumType::getSchema check to an EnumType::getName check. The latter being null really means the enum isn't stored. --- .../src/main/java/org/jooq/codegen/JavaGenerator.java | 2 +- jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java | 10 +++++----- jOOQ/src/main/java/org/jooq/impl/ParserImpl.java | 2 +- jOOQ/src/main/java/org/jooq/impl/Tools.java | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java index f2cb0c0bdd..2b6e91277d 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -3869,7 +3869,7 @@ public class JavaGenerator extends AbstractGenerator { out.println("}"); out.println(); - out.println("sealed trait %s extends %s[[before= with ][%s]] {", className, EnumType.class, interfaces); + out.println("sealed trait %s extends %s[[before= with ][separator= with ][%s]] {", className, EnumType.class, interfaces); if (noCatalog) out.println("override def getCatalog: %s = null", Catalog.class); diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index 8d013219f6..e00f98feec 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -2865,7 +2865,7 @@ public class DefaultBinding implements Binding { c -> pgRenderEnumCast(c, dataType.getType(), enumValue), // Postgres needs explicit casting for enum (array) types - () -> REQUIRE_ENUM_CAST.contains(ctx.dialect()) && enumValue.getSchema() != null + () -> REQUIRE_ENUM_CAST.contains(ctx.dialect()) && enumValue.getName() != null ); } @@ -2878,7 +2878,7 @@ public class DefaultBinding implements Binding { c -> pgRenderEnumCast(c, dataType.getType(), enumValue), // Postgres needs explicit casting for enum (array) types - () -> REQUIRE_ENUM_CAST.contains(ctx.dialect()) && enumValue.getSchema() != null + () -> REQUIRE_ENUM_CAST.contains(ctx.dialect()) && enumValue.getName() != null ); } @@ -2929,9 +2929,9 @@ public class DefaultBinding implements Binding { } static final void pgRenderEnumCast(Context ctx, Class type, EnumType value) { - Schema schema = value.getSchema(); - if (schema != null) { - schema = using(ctx.configuration()).map(schema); + if (value.getName() != null) { + Schema schema = using(ctx.configuration()).map(value.getSchema()); + if (schema != null && TRUE.equals(ctx.configuration().settings().isRenderSchema())) { ctx.visit(schema); ctx.sql('.'); diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 611a653e60..3c24b436f9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -13096,7 +13096,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { + " private ").append(className).append("(String literal) { this.literal = literal; }\n" + " @Override\n" + " public String getName() {\n" - + " return getClass().getName();\n" + + " return null;\n" + " }\n" + " @Override\n" + " public String getLiteral() {\n" diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index fa0214c23f..5a2b503c34 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -6047,7 +6047,7 @@ final class Tools { } static final boolean storedEnumType(DataType enumType) { - return enumConstants(enumType)[0].getSchema() != null; + return enumConstants(enumType)[0].getName() != null; } private static final EnumType[] enumConstants(DataType type) {