public LookupJoinOperator(
OperatorContext operatorContext,
List<Type> probeTypes,
List<Type> buildOutputTypes,
JoinType joinType,
LookupSourceFactory lookupSourceFactory,
JoinProbeFactory joinProbeFactory,
Runnable afterClose,
OptionalInt lookupJoinsCount,
HashGenerator hashGenerator,
PartitioningSpillerFactory partitioningSpillerFactory)
{
this.operatorContext = requireNonNull(operatorContext, "operatorContext is null");
this.probeTypes = ImmutableList.copyOf(requireNonNull(probeTypes, "probeTypes is null"));
requireNonNull(joinType, "joinType is null");
probeOnOuterSide = joinType == PROBE_OUTER || joinType == FULL_OUTER;
this.joinProbeFactory = requireNonNull(joinProbeFactory, "joinProbeFactory is null");
this.afterClose = requireNonNull(afterClose, "afterClose is null");
this.lookupJoinsCount = requireNonNull(lookupJoinsCount, "lookupJoinsCount is null");
this.hashGenerator = requireNonNull(hashGenerator, "hashGenerator is null");
this.lookupSourceFactory = requireNonNull(lookupSourceFactory, "lookupSourceFactory is null");
this.partitioningSpillerFactory = requireNonNull(partitioningSpillerFactory, "partitioningSpillerFactory is null");
this.lookupSourceProviderFuture = lookupSourceFactory.createLookupSourceProvider();
this.statisticsCounter = new JoinStatisticsCounter(joinType);
operatorContext.setInfoSupplier(this.statisticsCounter);
this.pageBuilder = new LookupJoinPageBuilder(buildOutputTypes);
}