From ad6e0975dcc890758f2a7e8dae0a2d8fbc43aad6 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Fri, 21 Apr 2017 12:09:14 +0200 Subject: [PATCH] [#6094] Support Oracle's PARTITION BY prefixed OUTER JOIN --- jOOQ/src/main/java/org/jooq/TableOuterJoinStep.java | 9 +++++++++ .../main/java/org/jooq/impl/PartitionJoinTable.java | 12 +++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/TableOuterJoinStep.java b/jOOQ/src/main/java/org/jooq/TableOuterJoinStep.java index e46f4e2d35..cf2e6f1998 100644 --- a/jOOQ/src/main/java/org/jooq/TableOuterJoinStep.java +++ b/jOOQ/src/main/java/org/jooq/TableOuterJoinStep.java @@ -69,6 +69,15 @@ import org.jooq.impl.DSL; */ public interface TableOuterJoinStep { + /** + * Join a table to this table using a {@link JoinType}. + *

+ * Only {@link JoinType#LEFT_OUTER_JOIN}, {@link JoinType#RIGHT_OUTER_JOIN}, + * and {@link JoinType#FULL_OUTER_JOIN} are allowed. + */ + @Support + TableOnStep join(TableLike table, JoinType type); + /** * LEFT OUTER JOIN a table to this table. *

diff --git a/jOOQ/src/main/java/org/jooq/impl/PartitionJoinTable.java b/jOOQ/src/main/java/org/jooq/impl/PartitionJoinTable.java index 8079153ee8..a5f8d7f618 100644 --- a/jOOQ/src/main/java/org/jooq/impl/PartitionJoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/PartitionJoinTable.java @@ -42,6 +42,7 @@ import static org.jooq.impl.DSL.table; import java.util.Collection; import org.jooq.Field; +import org.jooq.JoinType; import org.jooq.Name; import org.jooq.QueryPart; import org.jooq.Record; @@ -64,6 +65,11 @@ final class PartitionJoinTable implements TableOuterJoinStep { this.lhsPartitionBy = lhsPartitionBy; } + @Override + public final TableOnStep join(TableLike table, JoinType type) { + return new JoinTable(lhs, table, type, lhsPartitionBy); + } + @Override public final TableOnStep leftJoin(TableLike table) { return leftOuterJoin(table); @@ -96,7 +102,7 @@ final class PartitionJoinTable implements TableOuterJoinStep { @Override public final TableOnStep leftOuterJoin(TableLike table) { - return new JoinTable(lhs, table, LEFT_OUTER_JOIN, lhsPartitionBy); + return join(table, LEFT_OUTER_JOIN); } @Override @@ -156,7 +162,7 @@ final class PartitionJoinTable implements TableOuterJoinStep { @Override public final TableOnStep rightOuterJoin(TableLike table) { - return new JoinTable(lhs, table, RIGHT_OUTER_JOIN, lhsPartitionBy); + return join(table, RIGHT_OUTER_JOIN); } @Override @@ -216,7 +222,7 @@ final class PartitionJoinTable implements TableOuterJoinStep { @Override public final TableOnStep fullOuterJoin(TableLike table) { - return new JoinTable(lhs, table, FULL_OUTER_JOIN, lhsPartitionBy); + return join(table, FULL_OUTER_JOIN); } @Override