From fcd394b50d1e983538896c0b1747f799b1846ae8 Mon Sep 17 00:00:00 2001 From: Piotr Findeisen Date: Thu, 19 Feb 2026 12:08:59 +0100 Subject: [PATCH 1/2] Move spilling join operator classes to subpackage A bunch of join operator classes are duplicated since 98991ac7a10316a0669453e7f259cd4afabd9684 commit. However, the naming and packaging is ambiguous. Remove ambiguity by moving classes specific to spilling join to a subpackage, just like we have subpackage for classes specific to non-spilling join. --- .../java/io/trino/operator/JoinOperatorType.java | 10 +++++----- .../java/io/trino/operator/OperatorFactories.java | 4 ++-- .../trino/operator/WorkProcessorOperatorAdapter.java | 2 +- .../io/trino/operator/join/DefaultPageJoiner.java | 12 +++++++----- .../io/trino/operator/join/JoinBridgeManager.java | 1 + .../io/trino/operator/join/JoinOperatorInfo.java | 2 +- .../trino/operator/join/JoinStatisticsCounter.java | 2 +- .../io/trino/operator/join/LookupSourceFactory.java | 1 + .../join/{ => spilling}/HashBuilderOperator.java | 4 +++- .../operator/join/{ => spilling}/JoinProbe.java | 3 ++- .../join/{ => spilling}/LookupJoinOperator.java | 10 +++++++--- .../{ => spilling}/LookupJoinOperatorFactory.java | 11 +++++++---- .../join/{ => spilling}/LookupJoinPageBuilder.java | 3 ++- .../join/{ => spilling}/PartitionedConsumption.java | 6 +++--- .../join/{ => spilling}/PartitionedLookupSource.java | 5 ++++- .../PartitionedLookupSourceFactory.java | 9 +++++++-- .../{ => spilling}/SpilledLookupSourceHandle.java | 3 ++- .../join/{ => spilling}/SpillingJoinProcessor.java | 7 ++++++- .../operator/join/unspilled/HashBuilderOperator.java | 2 +- .../operator/join/unspilled/LookupJoinOperator.java | 4 ++-- .../join/unspilled/LookupJoinOperatorFactory.java | 6 +++--- .../io/trino/operator/join/unspilled/PageJoiner.java | 6 +++--- .../join/unspilled/PartitionedLookupSource.java | 2 +- .../io/trino/sql/planner/LocalExecutionPlanner.java | 4 ++-- .../rule/UseNonPartitionedJoinLookupSource.java | 2 +- .../join/BenchmarkHashBuildAndJoinOperators.java | 3 ++- .../java/io/trino/operator/join/JoinTestUtils.java | 4 +++- .../io/trino/operator/join/TestHashJoinOperator.java | 3 +++ .../io/trino/operator/join/TestJoinOperatorInfo.java | 2 +- .../operator/join/TestJoinStatisticsCounter.java | 2 +- .../operator/join/TestLookupJoinPageBuilder.java | 4 +++- 31 files changed, 88 insertions(+), 51 deletions(-) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/HashBuilderOperator.java (99%) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/JoinProbe.java (97%) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/LookupJoinOperator.java (91%) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/LookupJoinOperatorFactory.java (94%) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/LookupJoinPageBuilder.java (99%) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/PartitionedConsumption.java (97%) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/PartitionedLookupSource.java (98%) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/PartitionedLookupSourceFactory.java (98%) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/SpilledLookupSourceHandle.java (97%) rename core/trino-main/src/main/java/io/trino/operator/join/{ => spilling}/SpillingJoinProcessor.java (96%) diff --git a/core/trino-main/src/main/java/io/trino/operator/JoinOperatorType.java b/core/trino-main/src/main/java/io/trino/operator/JoinOperatorType.java index 3c2797bcf670..6c3a9b18c050 100644 --- a/core/trino-main/src/main/java/io/trino/operator/JoinOperatorType.java +++ b/core/trino-main/src/main/java/io/trino/operator/JoinOperatorType.java @@ -13,13 +13,13 @@ */ package io.trino.operator; -import io.trino.operator.join.LookupJoinOperatorFactory; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory; import io.trino.sql.planner.plan.JoinType; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.FULL_OUTER; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.INNER; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.LOOKUP_OUTER; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.FULL_OUTER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.LOOKUP_OUTER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; import static java.util.Objects.requireNonNull; public class JoinOperatorType diff --git a/core/trino-main/src/main/java/io/trino/operator/OperatorFactories.java b/core/trino-main/src/main/java/io/trino/operator/OperatorFactories.java index 371281fd5bc0..287a5c655b16 100644 --- a/core/trino-main/src/main/java/io/trino/operator/OperatorFactories.java +++ b/core/trino-main/src/main/java/io/trino/operator/OperatorFactories.java @@ -14,9 +14,9 @@ package io.trino.operator; import io.trino.operator.join.JoinBridgeManager; -import io.trino.operator.join.JoinProbe.JoinProbeFactory; -import io.trino.operator.join.LookupJoinOperatorFactory; import io.trino.operator.join.LookupSourceFactory; +import io.trino.operator.join.spilling.JoinProbe.JoinProbeFactory; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory; import io.trino.operator.join.unspilled.JoinProbe; import io.trino.operator.join.unspilled.PartitionedLookupSourceFactory; import io.trino.spi.type.Type; diff --git a/core/trino-main/src/main/java/io/trino/operator/WorkProcessorOperatorAdapter.java b/core/trino-main/src/main/java/io/trino/operator/WorkProcessorOperatorAdapter.java index 82beb61e881a..32401a57c827 100644 --- a/core/trino-main/src/main/java/io/trino/operator/WorkProcessorOperatorAdapter.java +++ b/core/trino-main/src/main/java/io/trino/operator/WorkProcessorOperatorAdapter.java @@ -17,7 +17,7 @@ import com.google.common.util.concurrent.ListenableFuture; import io.trino.memory.context.MemoryTrackingContext; import io.trino.operator.join.JoinOperatorFactory; -import io.trino.operator.join.LookupJoinOperatorFactory; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory; import io.trino.spi.Page; import java.util.Optional; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/DefaultPageJoiner.java b/core/trino-main/src/main/java/io/trino/operator/join/DefaultPageJoiner.java index b8410bfed33b..d321e32483a5 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/DefaultPageJoiner.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/DefaultPageJoiner.java @@ -24,8 +24,10 @@ import io.trino.operator.SpillMetrics; import io.trino.operator.WorkProcessor; import io.trino.operator.exchange.LocalPartitionGenerator; -import io.trino.operator.join.JoinProbe.JoinProbeFactory; -import io.trino.operator.join.LookupJoinOperatorFactory.JoinType; +import io.trino.operator.join.spilling.JoinProbe; +import io.trino.operator.join.spilling.JoinProbe.JoinProbeFactory; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; +import io.trino.operator.join.spilling.LookupJoinPageBuilder; import io.trino.spi.Page; import io.trino.spi.type.Type; import io.trino.spiller.PartitioningSpiller; @@ -55,9 +57,9 @@ import static io.trino.operator.WorkProcessor.TransformationState.needsMoreData; import static io.trino.operator.WorkProcessor.TransformationState.ofResult; import static io.trino.operator.WorkProcessor.TransformationState.yielded; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.FULL_OUTER; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; -import static io.trino.operator.join.PartitionedLookupSourceFactory.NO_SPILL_EPOCH; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.FULL_OUTER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.spilling.PartitionedLookupSourceFactory.NO_SPILL_EPOCH; import static java.lang.String.format; import static java.util.Objects.requireNonNull; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/JoinBridgeManager.java b/core/trino-main/src/main/java/io/trino/operator/join/JoinBridgeManager.java index ada26f41a79c..48eb2d702d58 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/JoinBridgeManager.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/JoinBridgeManager.java @@ -18,6 +18,7 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import io.trino.operator.ReferenceCount; +import io.trino.operator.join.spilling.PartitionedLookupSourceFactory; import io.trino.spi.type.Type; import java.util.List; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/JoinOperatorInfo.java b/core/trino-main/src/main/java/io/trino/operator/join/JoinOperatorInfo.java index 56d1a1c853df..4c294db4b2f8 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/JoinOperatorInfo.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/JoinOperatorInfo.java @@ -16,7 +16,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import io.trino.operator.OperatorInfo; -import io.trino.operator.join.LookupJoinOperatorFactory.JoinType; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.spi.Mergeable; import java.util.OptionalLong; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/JoinStatisticsCounter.java b/core/trino-main/src/main/java/io/trino/operator/join/JoinStatisticsCounter.java index 102e5e0c33b6..0043550d1b98 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/JoinStatisticsCounter.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/JoinStatisticsCounter.java @@ -14,7 +14,7 @@ package io.trino.operator.join; import io.trino.operator.OperatorInfo; -import io.trino.operator.join.LookupJoinOperatorFactory.JoinType; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import java.util.OptionalLong; import java.util.function.Supplier; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/LookupSourceFactory.java b/core/trino-main/src/main/java/io/trino/operator/join/LookupSourceFactory.java index 8d260d0c3ed7..3217a8588581 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/LookupSourceFactory.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/LookupSourceFactory.java @@ -15,6 +15,7 @@ import com.google.common.util.concurrent.ListenableFuture; import io.trino.operator.TaskContext; +import io.trino.operator.join.spilling.PartitionedConsumption; import io.trino.spi.type.Type; import java.util.List; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/HashBuilderOperator.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/HashBuilderOperator.java similarity index 99% rename from core/trino-main/src/main/java/io/trino/operator/join/HashBuilderOperator.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/HashBuilderOperator.java index 4a5b8a136085..618de5981b31 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/HashBuilderOperator.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/HashBuilderOperator.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; @@ -31,6 +31,8 @@ import io.trino.operator.OperatorFactory; import io.trino.operator.PagesIndex; import io.trino.operator.SpillMetrics; +import io.trino.operator.join.JoinBridgeManager; +import io.trino.operator.join.LookupSourceSupplier; import io.trino.spi.Page; import io.trino.spi.metrics.Metric; import io.trino.spi.metrics.Metrics; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/JoinProbe.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/JoinProbe.java similarity index 97% rename from core/trino-main/src/main/java/io/trino/operator/join/JoinProbe.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/JoinProbe.java index ae226a6b6c58..70843cf2182a 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/JoinProbe.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/JoinProbe.java @@ -11,9 +11,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; import com.google.common.primitives.Ints; +import io.trino.operator.join.LookupSource; import io.trino.spi.Page; import java.util.List; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/LookupJoinOperator.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperator.java similarity index 91% rename from core/trino-main/src/main/java/io/trino/operator/join/LookupJoinOperator.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperator.java index 678f6ef98182..f997a1b6218d 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/LookupJoinOperator.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperator.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; import com.google.common.util.concurrent.ListenableFuture; import io.trino.operator.HashGenerator; @@ -20,9 +20,13 @@ import io.trino.operator.SpillMetrics; import io.trino.operator.WorkProcessor; import io.trino.operator.WorkProcessorOperator; -import io.trino.operator.join.JoinProbe.JoinProbeFactory; -import io.trino.operator.join.LookupJoinOperatorFactory.JoinType; +import io.trino.operator.join.DefaultPageJoiner; +import io.trino.operator.join.JoinStatisticsCounter; +import io.trino.operator.join.LookupSourceFactory; +import io.trino.operator.join.LookupSourceProvider; import io.trino.operator.join.PageJoiner.PageJoinerFactory; +import io.trino.operator.join.spilling.JoinProbe.JoinProbeFactory; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.spi.Page; import io.trino.spi.metrics.Metrics; import io.trino.spi.type.Type; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/LookupJoinOperatorFactory.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperatorFactory.java similarity index 94% rename from core/trino-main/src/main/java/io/trino/operator/join/LookupJoinOperatorFactory.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperatorFactory.java index b03d23219e14..4aff68017d10 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/LookupJoinOperatorFactory.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperatorFactory.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; import com.google.common.collect.ImmutableList; import com.google.common.primitives.Ints; @@ -23,8 +23,11 @@ import io.trino.operator.WorkProcessor; import io.trino.operator.WorkProcessorOperator; import io.trino.operator.WorkProcessorOperatorFactory; -import io.trino.operator.join.JoinProbe.JoinProbeFactory; +import io.trino.operator.join.JoinBridgeManager; +import io.trino.operator.join.JoinOperatorFactory; import io.trino.operator.join.LookupOuterOperator.LookupOuterOperatorFactory; +import io.trino.operator.join.LookupSourceFactory; +import io.trino.operator.join.spilling.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; import io.trino.spi.type.Type; import io.trino.spiller.PartitioningSpillerFactory; @@ -38,8 +41,8 @@ import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.ImmutableList.toImmutableList; import static io.trino.operator.InterpretedHashGenerator.createChannelsHashGenerator; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.INNER; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; import static java.util.Objects.requireNonNull; public class LookupJoinOperatorFactory diff --git a/core/trino-main/src/main/java/io/trino/operator/join/LookupJoinPageBuilder.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinPageBuilder.java similarity index 99% rename from core/trino-main/src/main/java/io/trino/operator/join/LookupJoinPageBuilder.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinPageBuilder.java index a54f732b532a..f2a41b4c9a27 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/LookupJoinPageBuilder.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinPageBuilder.java @@ -11,8 +11,9 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; +import io.trino.operator.join.LookupSource; import io.trino.spi.Page; import io.trino.spi.PageBuilder; import io.trino.spi.block.Block; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/PartitionedConsumption.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/PartitionedConsumption.java similarity index 97% rename from core/trino-main/src/main/java/io/trino/operator/join/PartitionedConsumption.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/PartitionedConsumption.java index c13fbbb5ecfc..6c323efe907b 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/PartitionedConsumption.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/PartitionedConsumption.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; import com.google.common.collect.AbstractIterator; import com.google.common.collect.ImmutableList; @@ -45,7 +45,7 @@ public final class PartitionedConsumption @Nullable private List> partitions; - PartitionedConsumption( + public PartitionedConsumption( int consumersCount, Iterable partitionNumbers, IntFunction> loader, @@ -89,7 +89,7 @@ private List> createPartitions( return partitions.build(); } - Iterator> beginConsumption() + public Iterator> beginConsumption() { Queue> partitions = new ArrayDeque<>(requireNonNull(this.partitions, "partitions is already null")); if (consumed.incrementAndGet() >= consumersCount) { diff --git a/core/trino-main/src/main/java/io/trino/operator/join/PartitionedLookupSource.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/PartitionedLookupSource.java similarity index 98% rename from core/trino-main/src/main/java/io/trino/operator/join/PartitionedLookupSource.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/PartitionedLookupSource.java index ec0a9357171a..c4f92e02d76b 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/PartitionedLookupSource.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/PartitionedLookupSource.java @@ -11,13 +11,16 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; import com.google.common.io.Closer; import com.google.errorprone.annotations.concurrent.GuardedBy; import io.trino.annotation.NotThreadSafe; import io.trino.operator.NullSafeHashCompiler; import io.trino.operator.exchange.LocalPartitionGenerator; +import io.trino.operator.join.LookupSource; +import io.trino.operator.join.OuterPositionIterator; +import io.trino.operator.join.TrackingLookupSourceSupplier; import io.trino.spi.Page; import io.trino.spi.PageBuilder; import io.trino.spi.type.Type; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/PartitionedLookupSourceFactory.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/PartitionedLookupSourceFactory.java similarity index 98% rename from core/trino-main/src/main/java/io/trino/operator/join/PartitionedLookupSourceFactory.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/PartitionedLookupSourceFactory.java index 68ac07f34a49..081b5dc22f40 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/PartitionedLookupSourceFactory.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/PartitionedLookupSourceFactory.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; @@ -21,7 +21,12 @@ import com.google.errorprone.annotations.concurrent.GuardedBy; import io.trino.annotation.NotThreadSafe; import io.trino.operator.NullSafeHashCompiler; +import io.trino.operator.join.LookupSource; +import io.trino.operator.join.LookupSourceFactory; +import io.trino.operator.join.LookupSourceProvider; import io.trino.operator.join.LookupSourceProvider.LookupSourceLease; +import io.trino.operator.join.OuterPositionIterator; +import io.trino.operator.join.TrackingLookupSourceSupplier; import io.trino.spi.Page; import io.trino.spi.PageBuilder; import io.trino.spi.type.Type; @@ -48,7 +53,7 @@ import static com.google.common.util.concurrent.Futures.transform; import static com.google.common.util.concurrent.MoreExecutors.directExecutor; import static io.trino.operator.join.OuterLookupSource.createOuterLookupSourceSupplier; -import static io.trino.operator.join.PartitionedLookupSource.createPartitionedLookupSourceSupplier; +import static io.trino.operator.join.spilling.PartitionedLookupSource.createPartitionedLookupSourceSupplier; import static java.util.Collections.emptyList; import static java.util.Objects.requireNonNull; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/SpilledLookupSourceHandle.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/SpilledLookupSourceHandle.java similarity index 97% rename from core/trino-main/src/main/java/io/trino/operator/join/SpilledLookupSourceHandle.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/SpilledLookupSourceHandle.java index cdf37fa57240..c9e8b6b64b3f 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/SpilledLookupSourceHandle.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/SpilledLookupSourceHandle.java @@ -11,13 +11,14 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; import com.google.common.collect.ImmutableList; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import com.google.errorprone.annotations.ThreadSafe; import com.google.errorprone.annotations.concurrent.GuardedBy; +import io.trino.operator.join.LookupSource; import jakarta.annotation.Nullable; import java.util.function.Supplier; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/SpillingJoinProcessor.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/SpillingJoinProcessor.java similarity index 96% rename from core/trino-main/src/main/java/io/trino/operator/join/SpillingJoinProcessor.java rename to core/trino-main/src/main/java/io/trino/operator/join/spilling/SpillingJoinProcessor.java index 664d320ef9d7..a0bb115e7b50 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/SpillingJoinProcessor.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/SpillingJoinProcessor.java @@ -11,7 +11,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package io.trino.operator.join; +package io.trino.operator.join.spilling; import com.google.common.io.Closer; import com.google.common.util.concurrent.Futures; @@ -19,7 +19,12 @@ import io.trino.operator.SpillMetrics; import io.trino.operator.WorkProcessor; import io.trino.operator.join.DefaultPageJoiner.SavedRow; +import io.trino.operator.join.LookupSource; +import io.trino.operator.join.LookupSourceFactory; +import io.trino.operator.join.LookupSourceProvider; +import io.trino.operator.join.PageJoiner; import io.trino.operator.join.PageJoiner.PageJoinerFactory; +import io.trino.operator.join.StaticLookupSourceProvider; import io.trino.spi.Page; import io.trino.spiller.PartitioningSpillerFactory; import jakarta.annotation.Nullable; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/HashBuilderOperator.java b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/HashBuilderOperator.java index f7043ec8292a..d3f5a1bb83a3 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/HashBuilderOperator.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/HashBuilderOperator.java @@ -42,7 +42,7 @@ import static java.util.Objects.requireNonNull; /** - * Like {@link io.trino.operator.join.HashBuilderOperator} but simplified, + * Like {@link io.trino.operator.join.spilling.HashBuilderOperator} but simplified, * without spill support. */ @ThreadSafe diff --git a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperator.java b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperator.java index b9b3a3202535..9f63970d5529 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperator.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperator.java @@ -20,8 +20,8 @@ import io.trino.operator.WorkProcessor; import io.trino.operator.WorkProcessorOperator; import io.trino.operator.join.JoinStatisticsCounter; -import io.trino.operator.join.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.LookupSource; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.unspilled.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; import io.trino.spi.type.Type; @@ -35,7 +35,7 @@ import static java.util.Objects.requireNonNull; /** - * Like {@link io.trino.operator.join.LookupJoinOperator} but simplified, + * Like {@link io.trino.operator.join.spilling.LookupJoinOperator} but simplified, * without spill support. */ public class LookupJoinOperator diff --git a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperatorFactory.java b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperatorFactory.java index 3a1d3d32b1cd..4c8216844022 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperatorFactory.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperatorFactory.java @@ -22,8 +22,8 @@ import io.trino.operator.WorkProcessorOperatorFactory; import io.trino.operator.join.JoinBridgeManager; import io.trino.operator.join.JoinOperatorFactory; -import io.trino.operator.join.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.LookupOuterOperator.LookupOuterOperatorFactory; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.unspilled.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; import io.trino.spi.type.Type; @@ -34,8 +34,8 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.INNER; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; import static java.util.Objects.requireNonNull; public class LookupJoinOperatorFactory diff --git a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PageJoiner.java b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PageJoiner.java index a2a334977d47..4f4ec204ba28 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PageJoiner.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PageJoiner.java @@ -19,8 +19,8 @@ import io.trino.operator.ProcessorContext; import io.trino.operator.WorkProcessor; import io.trino.operator.join.JoinStatisticsCounter; -import io.trino.operator.join.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.LookupSource; +import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.unspilled.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; import io.trino.spi.type.Type; @@ -38,8 +38,8 @@ import static io.trino.operator.WorkProcessor.TransformationState.needsMoreData; import static io.trino.operator.WorkProcessor.TransformationState.ofResult; import static io.trino.operator.WorkProcessor.TransformationState.yielded; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.FULL_OUTER; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.FULL_OUTER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; import static java.util.Objects.requireNonNull; public class PageJoiner diff --git a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PartitionedLookupSource.java b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PartitionedLookupSource.java index ec21b3503886..00f94a60a4eb 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PartitionedLookupSource.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PartitionedLookupSource.java @@ -42,7 +42,7 @@ import static java.lang.Math.toIntExact; /** - * Like {@link io.trino.operator.join.PartitionedLookupSource} but simplified, + * Like {@link io.trino.operator.join.spilling.PartitionedLookupSource} but simplified, * without spill support. */ @NotThreadSafe diff --git a/core/trino-main/src/main/java/io/trino/sql/planner/LocalExecutionPlanner.java b/core/trino-main/src/main/java/io/trino/sql/planner/LocalExecutionPlanner.java index 8ffacbdf25e6..7665f432be0f 100644 --- a/core/trino-main/src/main/java/io/trino/sql/planner/LocalExecutionPlanner.java +++ b/core/trino-main/src/main/java/io/trino/sql/planner/LocalExecutionPlanner.java @@ -119,13 +119,13 @@ import io.trino.operator.index.IndexLookupSourceFactory; import io.trino.operator.index.IndexManager; import io.trino.operator.index.IndexSourceOperator; -import io.trino.operator.join.HashBuilderOperator.HashBuilderOperatorFactory; import io.trino.operator.join.JoinBridgeManager; import io.trino.operator.join.JoinOperatorFactory; import io.trino.operator.join.LookupSourceFactory; import io.trino.operator.join.NestedLoopJoinBridge; import io.trino.operator.join.NestedLoopJoinPagesSupplier; -import io.trino.operator.join.PartitionedLookupSourceFactory; +import io.trino.operator.join.spilling.HashBuilderOperator.HashBuilderOperatorFactory; +import io.trino.operator.join.spilling.PartitionedLookupSourceFactory; import io.trino.operator.join.unspilled.HashBuilderOperator; import io.trino.operator.output.PartitionedOutputOperator.PartitionedOutputFactory; import io.trino.operator.output.PositionsAppenderFactory; diff --git a/core/trino-main/src/main/java/io/trino/sql/planner/iterative/rule/UseNonPartitionedJoinLookupSource.java b/core/trino-main/src/main/java/io/trino/sql/planner/iterative/rule/UseNonPartitionedJoinLookupSource.java index 196eea495194..9ba399db7d24 100644 --- a/core/trino-main/src/main/java/io/trino/sql/planner/iterative/rule/UseNonPartitionedJoinLookupSource.java +++ b/core/trino-main/src/main/java/io/trino/sql/planner/iterative/rule/UseNonPartitionedJoinLookupSource.java @@ -20,7 +20,7 @@ import io.trino.matching.Capture; import io.trino.matching.Captures; import io.trino.matching.Pattern; -import io.trino.operator.join.LookupJoinOperator; +import io.trino.operator.join.spilling.LookupJoinOperator; import io.trino.sql.planner.Partitioning; import io.trino.sql.planner.PartitioningScheme; import io.trino.sql.planner.iterative.Lookup; diff --git a/core/trino-main/src/test/java/io/trino/operator/join/BenchmarkHashBuildAndJoinOperators.java b/core/trino-main/src/test/java/io/trino/operator/join/BenchmarkHashBuildAndJoinOperators.java index 1407aa49bf05..f80c0a781373 100644 --- a/core/trino-main/src/test/java/io/trino/operator/join/BenchmarkHashBuildAndJoinOperators.java +++ b/core/trino-main/src/test/java/io/trino/operator/join/BenchmarkHashBuildAndJoinOperators.java @@ -27,7 +27,8 @@ import io.trino.operator.PartitionFunction; import io.trino.operator.TaskContext; import io.trino.operator.exchange.LocalPartitionGenerator; -import io.trino.operator.join.HashBuilderOperator.HashBuilderOperatorFactory; +import io.trino.operator.join.spilling.HashBuilderOperator.HashBuilderOperatorFactory; +import io.trino.operator.join.spilling.PartitionedLookupSourceFactory; import io.trino.spi.Page; import io.trino.spi.PageBuilder; import io.trino.spi.block.Block; diff --git a/core/trino-main/src/test/java/io/trino/operator/join/JoinTestUtils.java b/core/trino-main/src/test/java/io/trino/operator/join/JoinTestUtils.java index f5ae126357cb..1cb6aa8185aa 100644 --- a/core/trino-main/src/test/java/io/trino/operator/join/JoinTestUtils.java +++ b/core/trino-main/src/test/java/io/trino/operator/join/JoinTestUtils.java @@ -31,7 +31,9 @@ import io.trino.operator.exchange.LocalExchange; import io.trino.operator.exchange.LocalExchangeSinkOperator; import io.trino.operator.exchange.LocalExchangeSourceOperator.LocalExchangeSourceOperatorFactory; -import io.trino.operator.join.HashBuilderOperator.HashBuilderOperatorFactory; +import io.trino.operator.join.spilling.HashBuilderOperator; +import io.trino.operator.join.spilling.HashBuilderOperator.HashBuilderOperatorFactory; +import io.trino.operator.join.spilling.PartitionedLookupSourceFactory; import io.trino.spi.Page; import io.trino.spi.TrinoException; import io.trino.spi.type.Type; diff --git a/core/trino-main/src/test/java/io/trino/operator/join/TestHashJoinOperator.java b/core/trino-main/src/test/java/io/trino/operator/join/TestHashJoinOperator.java index f3f8b1ca8b62..5ea9053c9101 100644 --- a/core/trino-main/src/test/java/io/trino/operator/join/TestHashJoinOperator.java +++ b/core/trino-main/src/test/java/io/trino/operator/join/TestHashJoinOperator.java @@ -43,6 +43,9 @@ import io.trino.operator.join.JoinTestUtils.BuildSideSetup; import io.trino.operator.join.JoinTestUtils.DummySpillerFactory; import io.trino.operator.join.JoinTestUtils.TestInternalJoinFilterFunction; +import io.trino.operator.join.spilling.HashBuilderOperator; +import io.trino.operator.join.spilling.PartitionedConsumption; +import io.trino.operator.join.spilling.PartitionedLookupSourceFactory; import io.trino.plugin.base.metrics.TDigestHistogram; import io.trino.spi.Page; import io.trino.spi.block.RunLengthEncodedBlock; diff --git a/core/trino-main/src/test/java/io/trino/operator/join/TestJoinOperatorInfo.java b/core/trino-main/src/test/java/io/trino/operator/join/TestJoinOperatorInfo.java index 07a15badd314..db776ce42b11 100644 --- a/core/trino-main/src/test/java/io/trino/operator/join/TestJoinOperatorInfo.java +++ b/core/trino-main/src/test/java/io/trino/operator/join/TestJoinOperatorInfo.java @@ -18,7 +18,7 @@ import java.util.OptionalLong; import static com.google.common.base.Preconditions.checkArgument; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.INNER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; import static org.assertj.core.api.Assertions.assertThat; public class TestJoinOperatorInfo diff --git a/core/trino-main/src/test/java/io/trino/operator/join/TestJoinStatisticsCounter.java b/core/trino-main/src/test/java/io/trino/operator/join/TestJoinStatisticsCounter.java index 14c0f4bc2c5d..e43acb96d374 100644 --- a/core/trino-main/src/test/java/io/trino/operator/join/TestJoinStatisticsCounter.java +++ b/core/trino-main/src/test/java/io/trino/operator/join/TestJoinStatisticsCounter.java @@ -16,7 +16,7 @@ import org.junit.jupiter.api.Test; import static com.google.common.base.Preconditions.checkArgument; -import static io.trino.operator.join.LookupJoinOperatorFactory.JoinType.INNER; +import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; import static org.assertj.core.api.Assertions.assertThat; public class TestJoinStatisticsCounter diff --git a/core/trino-main/src/test/java/io/trino/operator/join/TestLookupJoinPageBuilder.java b/core/trino-main/src/test/java/io/trino/operator/join/TestLookupJoinPageBuilder.java index 340c6ac6e1aa..9dbad4cc1f05 100644 --- a/core/trino-main/src/test/java/io/trino/operator/join/TestLookupJoinPageBuilder.java +++ b/core/trino-main/src/test/java/io/trino/operator/join/TestLookupJoinPageBuilder.java @@ -14,7 +14,9 @@ package io.trino.operator.join; import com.google.common.collect.ImmutableList; -import io.trino.operator.join.JoinProbe.JoinProbeFactory; +import io.trino.operator.join.spilling.JoinProbe; +import io.trino.operator.join.spilling.JoinProbe.JoinProbeFactory; +import io.trino.operator.join.spilling.LookupJoinPageBuilder; import io.trino.spi.Page; import io.trino.spi.PageBuilder; import io.trino.spi.block.Block; From f0a11887f148fa4d79242f6eb699f63b44224597 Mon Sep 17 00:00:00 2001 From: Piotr Findeisen Date: Thu, 19 Feb 2026 12:02:39 +0100 Subject: [PATCH 2/2] Move JoinType enum from spilling LookupJoinOperatorFactory It's shared between spilling and non-spilling Join operators. Moved to shared place. --- .../io/trino/operator/JoinOperatorType.java | 15 ++++++------- .../operator/join/DefaultPageJoiner.java | 5 ++--- .../trino/operator/join/JoinOperatorInfo.java | 1 - .../operator/join/JoinStatisticsCounter.java | 1 - .../java/io/trino/operator/join/JoinType.java | 22 +++++++++++++++++++ .../join/spilling/LookupJoinOperator.java | 2 +- .../spilling/LookupJoinOperatorFactory.java | 13 +++-------- .../join/unspilled/LookupJoinOperator.java | 2 +- .../unspilled/LookupJoinOperatorFactory.java | 6 ++--- .../operator/join/unspilled/PageJoiner.java | 6 ++--- .../operator/join/TestJoinOperatorInfo.java | 2 +- .../join/TestJoinStatisticsCounter.java | 2 +- 12 files changed, 44 insertions(+), 33 deletions(-) create mode 100644 core/trino-main/src/main/java/io/trino/operator/join/JoinType.java diff --git a/core/trino-main/src/main/java/io/trino/operator/JoinOperatorType.java b/core/trino-main/src/main/java/io/trino/operator/JoinOperatorType.java index 6c3a9b18c050..359b2a1ec469 100644 --- a/core/trino-main/src/main/java/io/trino/operator/JoinOperatorType.java +++ b/core/trino-main/src/main/java/io/trino/operator/JoinOperatorType.java @@ -13,18 +13,17 @@ */ package io.trino.operator; -import io.trino.operator.join.spilling.LookupJoinOperatorFactory; import io.trino.sql.planner.plan.JoinType; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.FULL_OUTER; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.LOOKUP_OUTER; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.JoinType.FULL_OUTER; +import static io.trino.operator.join.JoinType.INNER; +import static io.trino.operator.join.JoinType.LOOKUP_OUTER; +import static io.trino.operator.join.JoinType.PROBE_OUTER; import static java.util.Objects.requireNonNull; public class JoinOperatorType { - private final LookupJoinOperatorFactory.JoinType type; + private final io.trino.operator.join.JoinType type; private final boolean outputSingleMatch; private final boolean waitForBuild; @@ -58,7 +57,7 @@ public static JoinOperatorType fullOuterJoin() return new JoinOperatorType(FULL_OUTER, false, false); } - private JoinOperatorType(LookupJoinOperatorFactory.JoinType type, boolean outputSingleMatch, boolean waitForBuild) + private JoinOperatorType(io.trino.operator.join.JoinType type, boolean outputSingleMatch, boolean waitForBuild) { this.type = requireNonNull(type, "type is null"); this.outputSingleMatch = outputSingleMatch; @@ -75,7 +74,7 @@ public boolean isWaitForBuild() return waitForBuild; } - public LookupJoinOperatorFactory.JoinType getType() + public io.trino.operator.join.JoinType getType() { return type; } diff --git a/core/trino-main/src/main/java/io/trino/operator/join/DefaultPageJoiner.java b/core/trino-main/src/main/java/io/trino/operator/join/DefaultPageJoiner.java index d321e32483a5..90b450d74e46 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/DefaultPageJoiner.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/DefaultPageJoiner.java @@ -26,7 +26,6 @@ import io.trino.operator.exchange.LocalPartitionGenerator; import io.trino.operator.join.spilling.JoinProbe; import io.trino.operator.join.spilling.JoinProbe.JoinProbeFactory; -import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.spilling.LookupJoinPageBuilder; import io.trino.spi.Page; import io.trino.spi.type.Type; @@ -57,8 +56,8 @@ import static io.trino.operator.WorkProcessor.TransformationState.needsMoreData; import static io.trino.operator.WorkProcessor.TransformationState.ofResult; import static io.trino.operator.WorkProcessor.TransformationState.yielded; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.FULL_OUTER; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.JoinType.FULL_OUTER; +import static io.trino.operator.join.JoinType.PROBE_OUTER; import static io.trino.operator.join.spilling.PartitionedLookupSourceFactory.NO_SPILL_EPOCH; import static java.lang.String.format; import static java.util.Objects.requireNonNull; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/JoinOperatorInfo.java b/core/trino-main/src/main/java/io/trino/operator/join/JoinOperatorInfo.java index 4c294db4b2f8..750d61432231 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/JoinOperatorInfo.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/JoinOperatorInfo.java @@ -16,7 +16,6 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import io.trino.operator.OperatorInfo; -import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.spi.Mergeable; import java.util.OptionalLong; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/JoinStatisticsCounter.java b/core/trino-main/src/main/java/io/trino/operator/join/JoinStatisticsCounter.java index 0043550d1b98..b1d45868149b 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/JoinStatisticsCounter.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/JoinStatisticsCounter.java @@ -14,7 +14,6 @@ package io.trino.operator.join; import io.trino.operator.OperatorInfo; -import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import java.util.OptionalLong; import java.util.function.Supplier; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/JoinType.java b/core/trino-main/src/main/java/io/trino/operator/join/JoinType.java new file mode 100644 index 000000000000..048c767dd643 --- /dev/null +++ b/core/trino-main/src/main/java/io/trino/operator/join/JoinType.java @@ -0,0 +1,22 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.trino.operator.join; + +public enum JoinType +{ + INNER, + PROBE_OUTER, // the Probe is the outer side of the join + LOOKUP_OUTER, // The LookupSource is the outer side of the join + FULL_OUTER, +} diff --git a/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperator.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperator.java index f997a1b6218d..e6b3db4a8ab7 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperator.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperator.java @@ -22,11 +22,11 @@ import io.trino.operator.WorkProcessorOperator; import io.trino.operator.join.DefaultPageJoiner; import io.trino.operator.join.JoinStatisticsCounter; +import io.trino.operator.join.JoinType; import io.trino.operator.join.LookupSourceFactory; import io.trino.operator.join.LookupSourceProvider; import io.trino.operator.join.PageJoiner.PageJoinerFactory; import io.trino.operator.join.spilling.JoinProbe.JoinProbeFactory; -import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.spi.Page; import io.trino.spi.metrics.Metrics; import io.trino.spi.type.Type; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperatorFactory.java b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperatorFactory.java index 4aff68017d10..a13cc36ad2ec 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperatorFactory.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/spilling/LookupJoinOperatorFactory.java @@ -25,6 +25,7 @@ import io.trino.operator.WorkProcessorOperatorFactory; import io.trino.operator.join.JoinBridgeManager; import io.trino.operator.join.JoinOperatorFactory; +import io.trino.operator.join.JoinType; import io.trino.operator.join.LookupOuterOperator.LookupOuterOperatorFactory; import io.trino.operator.join.LookupSourceFactory; import io.trino.operator.join.spilling.JoinProbe.JoinProbeFactory; @@ -41,21 +42,13 @@ import static com.google.common.base.Preconditions.checkState; import static com.google.common.collect.ImmutableList.toImmutableList; import static io.trino.operator.InterpretedHashGenerator.createChannelsHashGenerator; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.JoinType.INNER; +import static io.trino.operator.join.JoinType.PROBE_OUTER; import static java.util.Objects.requireNonNull; public class LookupJoinOperatorFactory implements JoinOperatorFactory, WorkProcessorOperatorFactory { - public enum JoinType - { - INNER, - PROBE_OUTER, // the Probe is the outer side of the join - LOOKUP_OUTER, // The LookupSource is the outer side of the join - FULL_OUTER, - } - private final int operatorId; private final PlanNodeId planNodeId; private final List probeTypes; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperator.java b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperator.java index 9f63970d5529..fb050509e435 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperator.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperator.java @@ -20,8 +20,8 @@ import io.trino.operator.WorkProcessor; import io.trino.operator.WorkProcessorOperator; import io.trino.operator.join.JoinStatisticsCounter; +import io.trino.operator.join.JoinType; import io.trino.operator.join.LookupSource; -import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.unspilled.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; import io.trino.spi.type.Type; diff --git a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperatorFactory.java b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperatorFactory.java index 4c8216844022..2e68c477129c 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperatorFactory.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/LookupJoinOperatorFactory.java @@ -22,8 +22,8 @@ import io.trino.operator.WorkProcessorOperatorFactory; import io.trino.operator.join.JoinBridgeManager; import io.trino.operator.join.JoinOperatorFactory; +import io.trino.operator.join.JoinType; import io.trino.operator.join.LookupOuterOperator.LookupOuterOperatorFactory; -import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.unspilled.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; import io.trino.spi.type.Type; @@ -34,8 +34,8 @@ import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.JoinType.INNER; +import static io.trino.operator.join.JoinType.PROBE_OUTER; import static java.util.Objects.requireNonNull; public class LookupJoinOperatorFactory diff --git a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PageJoiner.java b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PageJoiner.java index 4f4ec204ba28..7671825ab53a 100644 --- a/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PageJoiner.java +++ b/core/trino-main/src/main/java/io/trino/operator/join/unspilled/PageJoiner.java @@ -19,8 +19,8 @@ import io.trino.operator.ProcessorContext; import io.trino.operator.WorkProcessor; import io.trino.operator.join.JoinStatisticsCounter; +import io.trino.operator.join.JoinType; import io.trino.operator.join.LookupSource; -import io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType; import io.trino.operator.join.unspilled.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; import io.trino.spi.type.Type; @@ -38,8 +38,8 @@ import static io.trino.operator.WorkProcessor.TransformationState.needsMoreData; import static io.trino.operator.WorkProcessor.TransformationState.ofResult; import static io.trino.operator.WorkProcessor.TransformationState.yielded; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.FULL_OUTER; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.PROBE_OUTER; +import static io.trino.operator.join.JoinType.FULL_OUTER; +import static io.trino.operator.join.JoinType.PROBE_OUTER; import static java.util.Objects.requireNonNull; public class PageJoiner diff --git a/core/trino-main/src/test/java/io/trino/operator/join/TestJoinOperatorInfo.java b/core/trino-main/src/test/java/io/trino/operator/join/TestJoinOperatorInfo.java index db776ce42b11..8ca88e4dac6b 100644 --- a/core/trino-main/src/test/java/io/trino/operator/join/TestJoinOperatorInfo.java +++ b/core/trino-main/src/test/java/io/trino/operator/join/TestJoinOperatorInfo.java @@ -18,7 +18,7 @@ import java.util.OptionalLong; import static com.google.common.base.Preconditions.checkArgument; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; +import static io.trino.operator.join.JoinType.INNER; import static org.assertj.core.api.Assertions.assertThat; public class TestJoinOperatorInfo diff --git a/core/trino-main/src/test/java/io/trino/operator/join/TestJoinStatisticsCounter.java b/core/trino-main/src/test/java/io/trino/operator/join/TestJoinStatisticsCounter.java index e43acb96d374..38edb5791f0a 100644 --- a/core/trino-main/src/test/java/io/trino/operator/join/TestJoinStatisticsCounter.java +++ b/core/trino-main/src/test/java/io/trino/operator/join/TestJoinStatisticsCounter.java @@ -16,7 +16,7 @@ import org.junit.jupiter.api.Test; import static com.google.common.base.Preconditions.checkArgument; -import static io.trino.operator.join.spilling.LookupJoinOperatorFactory.JoinType.INNER; +import static io.trino.operator.join.JoinType.INNER; import static org.assertj.core.api.Assertions.assertThat; public class TestJoinStatisticsCounter