From f9b7eb038f7caed50f16f0707f2a32528d55acb3 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 5 Mar 2024 10:14:04 +0100 Subject: [PATCH] [jOOQ/jOOQ#15934] Code generator and MetaImpl return CREATE DEFAULT statement instead of just the default expression --- .../java/org/jooq/meta/AbstractDatabase.java | 4 ++++ .../src/main/java/org/jooq/impl/MetaImpl.java | 19 +++++++++++++------ .../main/java/org/jooq/impl/ParserImpl.java | 13 +++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java index 5cff44c32a..978b91ac03 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/AbstractDatabase.java @@ -449,6 +449,10 @@ public abstract class AbstractDatabase implements Database { // separator is illegal configuration.settings().setNamePathSeparator("__"); + // [#15934] The parser might expose dialect specific behaviour, e.g. + // when parsing defaults. + configuration.settings().setParseDialect(configuration.dialect()); + if (muteExceptions) { return DSL.using(configuration); } diff --git a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java index 0390e4ac3e..dac01f1982 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java @@ -1397,13 +1397,20 @@ final class MetaImpl extends AbstractMeta { } else { try { - type = type.defaultValue(dsl() + DSLContext ctx = dsl() .configuration() - .deriveSettings(s -> s.withParseUnknownFunctions(ParseUnknownFunctions.IGNORE)) - .dsl() - .parser() - .parseField(defaultValue) - ); + .deriveSettings(s -> s + .withParseDialect(dialect()) + .withParseUnknownFunctions(ParseUnknownFunctions.IGNORE)) + .dsl(); + + + + + + + + type = type.defaultValue(ctx.parser().parseField(defaultValue)); } catch (ParserException e) { log.info("Cannot parse default expression (to skip parsing, use Settings.parseMetaViewDefaultExpressions): " + defaultValue, e); diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 9d3770ceab..2a2ce797e0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -8625,6 +8625,19 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { + + + + + + + + + + + + + switch (characterUpper()) { // [#8821] Known prefixes so far: