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..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.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.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/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..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 @@ -24,8 +24,9 @@ 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.LookupJoinPageBuilder; import io.trino.spi.Page; import io.trino.spi.type.Type; import io.trino.spiller.PartitioningSpiller; @@ -55,9 +56,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.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/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..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.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..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.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/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 92% 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..e6b3db4a8ab7 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.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.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..a13cc36ad2ec 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,12 @@ 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.JoinType; 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,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.LookupJoinOperatorFactory.JoinType.INNER; -import static io.trino.operator.join.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/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..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,7 +20,7 @@ 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.JoinType; import io.trino.operator.join.LookupSource; import io.trino.operator.join.unspilled.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; @@ -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..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,7 +22,7 @@ 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.JoinType; import io.trino.operator.join.LookupOuterOperator.LookupOuterOperatorFactory; import io.trino.operator.join.unspilled.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; @@ -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.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 a2a334977d47..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,7 +19,7 @@ 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.JoinType; import io.trino.operator.join.LookupSource; import io.trino.operator.join.unspilled.JoinProbe.JoinProbeFactory; import io.trino.spi.Page; @@ -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.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/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..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.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 14c0f4bc2c5d..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.LookupJoinOperatorFactory.JoinType.INNER; +import static io.trino.operator.join.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;