From a6d115edd731a317c89765cd84279a5a64e60bdb Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 8 Nov 2023 17:23:41 +0100 Subject: [PATCH] [jOOQ/jOOQ#15807] Fix CRDB implementation --- jOOQ/src/main/java/org/jooq/impl/JoinTable.java | 2 ++ jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java index 5a34c6d080..e7ea473945 100755 --- a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java @@ -158,6 +158,8 @@ abstract class JoinTable> extends AbstractJoinTable { + + static final Set EMULATE_NATURAL_JOIN = SQLDialect.supportedBy(CUBRID, TRINO); static final Set EMULATE_NATURAL_OUTER_JOIN = SQLDialect.supportedBy(CUBRID, H2, IGNITE, TRINO); static final Set EMULATE_JOIN_USING = SQLDialect.supportedBy(CUBRID, IGNITE); diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index 329d6abab6..7a87a8c8da 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -340,6 +340,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp private static final Clause[] CLAUSES = { SELECT }; static final Set EMULATE_SELECT_INTO_AS_CTAS = SQLDialect.supportedBy(CUBRID, DERBY, FIREBIRD, H2, HSQLDB, MARIADB, MYSQL, POSTGRES, SQLITE, YUGABYTEDB); private static final Set SUPPORT_SELECT_INTO_TABLE = SQLDialect.supportedBy(HSQLDB, POSTGRES, YUGABYTEDB); + private static final Set SUPPORT_ORACLE_STYLE_JOIN_HINTS = SQLDialect.supportedBy(MYSQL, YUGABYTEDB); @@ -2364,6 +2365,8 @@ final class SelectQueryImpl extends AbstractResultQuery imp if (!StringUtils.isBlank(hint)) context.sql(' ').sql(hint).separatorRequired(true); + toSQLJoinHints(context, tablelist); + @@ -2739,6 +2742,13 @@ final class SelectQueryImpl extends AbstractResultQuery imp )); } + private static final void toSQLJoinHints(Context ctx, TableList tablelist) { + if (SUPPORT_ORACLE_STYLE_JOIN_HINTS.contains(ctx.dialect())) { + traverseJoins(tablelist, null); + // ctx.sql(' ').sql(hint).separatorRequired(true); + } + } + private static final TableList prependToManyPaths(Context ctx, TableList tablelist) { TableList result = new TableList(tablelist);