[jOOQ/jOOQ#6116] [jOOQ/jOOQ#11687] Fixed partition by clauses

This commit is contained in:
Lukas Eder 2022-11-28 09:42:49 +01:00
parent 0f758c5ade
commit 649e7aa871
7 changed files with 44 additions and 21 deletions

View File

@ -60,6 +60,10 @@ implements
super(lhs, rhs, JoinType.FULL_OUTER_JOIN);
}
FullJoin(TableLike<?> lhs, TableLike<?> rhs, Collection<? extends Field<?>> lhsPartitionBy) {
super(lhs, rhs, JoinType.FULL_OUTER_JOIN, lhsPartitionBy);
}
// -------------------------------------------------------------------------
// XXX: Query Object Model
// -------------------------------------------------------------------------
@ -73,7 +77,8 @@ implements
Condition o,
Collection<? extends Field<?>> u
) {
// [#6116] [#11687] TODO: Partition by clauses
return o != null ? new FullJoin(table1, table2).on(o) : new FullJoin(table1, table2).using(u);
return o != null
? new FullJoin(table1, table2, partitionBy1).partitionBy(partitionBy2).on(o)
: new FullJoin(table1, table2, partitionBy1).partitionBy(partitionBy2).using(u);
}
}

View File

@ -114,7 +114,6 @@ import static org.jooq.impl.Tools.SimpleDataKey.DATA_COLLECTED_SEMI_ANTI_JOIN;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Set;
@ -655,18 +654,18 @@ implements
public final J partitionBy(Field<?>... fields) {
return partitionBy(Tools.list(fields));
}
@SuppressWarnings("unchecked")
public final J partitionBy(Collection<? extends Field<?>> fields) {
rhsPartitionBy.addAll(fields);
return (J) this;
}
@SuppressWarnings("unchecked")
@Override

View File

@ -60,6 +60,10 @@ implements
super(lhs, rhs, JoinType.LEFT_OUTER_JOIN);
}
LeftJoin(TableLike<?> lhs, TableLike<?> rhs, Collection<? extends Field<?>> lhsPartitionBy) {
super(lhs, rhs, JoinType.LEFT_OUTER_JOIN, lhsPartitionBy);
}
// -------------------------------------------------------------------------
// XXX: Query Object Model
// -------------------------------------------------------------------------
@ -73,7 +77,8 @@ implements
Condition o,
Collection<? extends Field<?>> u
) {
// [#6116] [#11687] TODO: Partition by clauses
return o != null ? new LeftJoin(table1, table2).on(o) : new LeftJoin(table1, table2).using(u);
return o != null
? new LeftJoin(table1, table2, partitionBy1).partitionBy(partitionBy2).on(o)
: new LeftJoin(table1, table2, partitionBy1).partitionBy(partitionBy2).using(u);
}
}

View File

@ -62,6 +62,10 @@ implements
super(lhs, rhs, JoinType.NATURAL_FULL_OUTER_JOIN, emptyList());
}
NaturalFullJoin(TableLike<?> lhs, TableLike<?> rhs, Collection<? extends Field<?>> lhsPartitionBy) {
super(lhs, rhs, JoinType.NATURAL_FULL_OUTER_JOIN, lhsPartitionBy);
}
// -------------------------------------------------------------------------
// XXX: Query Object Model
// -------------------------------------------------------------------------
@ -75,7 +79,6 @@ implements
Condition o,
Collection<? extends Field<?>> u
) {
// [#6116] [#11687] TODO: Partition by clauses
return new NaturalFullJoin(table1, table2);
return new NaturalFullJoin(table1, table2, partitionBy1).partitionBy(partitionBy2);
}
}

View File

@ -62,6 +62,10 @@ implements
super(lhs, rhs, JoinType.NATURAL_LEFT_OUTER_JOIN, emptyList());
}
NaturalLeftJoin(TableLike<?> lhs, TableLike<?> rhs, Collection<? extends Field<?>> lhsPartitionBy) {
super(lhs, rhs, JoinType.NATURAL_LEFT_OUTER_JOIN, lhsPartitionBy);
}
// -------------------------------------------------------------------------
// XXX: Query Object Model
// -------------------------------------------------------------------------
@ -75,7 +79,6 @@ implements
Condition o,
Collection<? extends Field<?>> u
) {
// [#6116] [#11687] TODO: Partition by clauses
return new NaturalLeftJoin(table1, table2);
return new NaturalLeftJoin(table1, table2, partitionBy1).partitionBy(partitionBy2);
}
}

View File

@ -62,6 +62,10 @@ implements
super(lhs, rhs, JoinType.NATURAL_RIGHT_OUTER_JOIN, emptyList());
}
NaturalRightJoin(TableLike<?> lhs, TableLike<?> rhs, Collection<? extends Field<?>> lhsPartitionBy) {
super(lhs, rhs, JoinType.NATURAL_RIGHT_OUTER_JOIN, lhsPartitionBy);
}
// -------------------------------------------------------------------------
// XXX: Query Object Model
// -------------------------------------------------------------------------
@ -75,7 +79,6 @@ implements
Condition o,
Collection<? extends Field<?>> u
) {
// [#6116] [#11687] TODO: Partition by clauses
return new NaturalRightJoin(table1, table2);
return new NaturalRightJoin(table1, table2, partitionBy1).partitionBy(partitionBy2);
}
}

View File

@ -60,6 +60,10 @@ implements
super(lhs, rhs, JoinType.RIGHT_OUTER_JOIN);
}
RightJoin(TableLike<?> lhs, TableLike<?> rhs, Collection<? extends Field<?>> lhsPartitionBy) {
super(lhs, rhs, JoinType.RIGHT_OUTER_JOIN, lhsPartitionBy);
}
// -------------------------------------------------------------------------
// XXX: Query Object Model
// -------------------------------------------------------------------------
@ -73,7 +77,8 @@ implements
Condition o,
Collection<? extends Field<?>> u
) {
// [#6116] [#11687] TODO: Partition by clauses
return o != null ? new RightJoin(table1, table2).on(o) : new RightJoin(table1, table2).using(u);
return o != null
? new RightJoin(table1, table2, partitionBy1).partitionBy(partitionBy2).on(o)
: new RightJoin(table1, table2, partitionBy1).partitionBy(partitionBy2).using(u);
}
}