private Global translate(Function<Symbol, Optional<Symbol>> translator, Function<Symbol, Optional<NullableValue>> constants) { return new Global( nodePartitioning.flatMap(partitioning -> partitioning.translate(translator, constants)), streamPartitioning.flatMap(partitioning -> partitioning.translate(translator, constants)), nullsAndAnyReplicated); }
public PartitioningScheme translateOutputLayout(List<Symbol> newOutputLayout) { requireNonNull(newOutputLayout, "newOutputLayout is null"); checkArgument(newOutputLayout.size() == outputLayout.size()); Partitioning newPartitioning = partitioning.translate(symbol -> newOutputLayout.get(outputLayout.indexOf(symbol))); Optional<Symbol> newHashSymbol = hashColumn .map(outputLayout::indexOf) .map(newOutputLayout::get); return new PartitioningScheme(newPartitioning, newOutputLayout, newHashSymbol, replicateNullsAndAny, bucketToPartition); }
public PartitioningScheme translateOutputLayout(List<Symbol> newOutputLayout) { requireNonNull(newOutputLayout, "newOutputLayout is null"); checkArgument(newOutputLayout.size() == outputLayout.size()); Partitioning newPartitioning = partitioning.translate(symbol -> newOutputLayout.get(outputLayout.indexOf(symbol))); Optional<Symbol> newHashSymbol = hashColumn .map(outputLayout::indexOf) .map(newOutputLayout::get); return new PartitioningScheme(newPartitioning, newOutputLayout, newHashSymbol, replicateNullsAndAny, bucketToPartition); }
public Optional<PartitioningProperties> translate(Function<Symbol, Optional<Symbol>> translator) { Set<Symbol> newPartitioningColumns = partitioningColumns.stream() .map(translator) .filter(Optional::isPresent) .map(Optional::get) .collect(toImmutableSet()); // Translation fails if we have prior partitioning columns and none could be translated if (!partitioningColumns.isEmpty() && newPartitioningColumns.isEmpty()) { return Optional.empty(); } if (!partitioning.isPresent()) { return Optional.of(new PartitioningProperties(newPartitioningColumns, Optional.empty(), nullsAndAnyReplicated)); } Optional<Partitioning> newPartitioning = partitioning.get().translate(translator, symbol -> Optional.empty()); if (!newPartitioning.isPresent()) { return Optional.empty(); } return Optional.of(new PartitioningProperties(newPartitioningColumns, newPartitioning, nullsAndAnyReplicated)); }
public Optional<PartitioningProperties> translate(Function<Symbol, Optional<Symbol>> translator) { Set<Symbol> newPartitioningColumns = partitioningColumns.stream() .map(translator) .filter(Optional::isPresent) .map(Optional::get) .collect(toImmutableSet()); // Translation fails if we have prior partitioning columns and none could be translated if (!partitioningColumns.isEmpty() && newPartitioningColumns.isEmpty()) { return Optional.empty(); } if (!partitioning.isPresent()) { return Optional.of(new PartitioningProperties(newPartitioningColumns, Optional.empty(), nullsAndAnyReplicated)); } Optional<Partitioning> newPartitioning = partitioning.get().translate(new Partitioning.Translator(translator, symbol -> Optional.empty(), coalesceSymbols -> Optional.empty())); if (!newPartitioning.isPresent()) { return Optional.empty(); } return Optional.of(new PartitioningProperties(newPartitioningColumns, newPartitioning, nullsAndAnyReplicated)); }
private PartitioningScheme canonicalize(PartitioningScheme scheme, PlanNode source) { return new PartitioningScheme( scheme.getPartitioning().translate(this::map), mapAndDistinct(source.getOutputSymbols()), scheme.getHashColumn().map(this::map), scheme.isReplicateNullsAndAny(), scheme.getBucketToPartition()); }
node.getPartitioningScheme().getPartitioning().translate(this::canonicalize), outputs.build(), canonicalize(node.getPartitioningScheme().getHashColumn()),
private PartitioningScheme canonicalize(PartitioningScheme scheme, PlanNode source) { return new PartitioningScheme( scheme.getPartitioning().translate(this::map), mapAndDistinct(source.getOutputSymbols()), scheme.getHashColumn().map(this::map), scheme.isReplicateNullsAndAny(), scheme.getBucketToPartition()); }
node.getPartitioningScheme().getPartitioning().translate(this::canonicalize), outputs.build(), canonicalize(node.getPartitioningScheme().getHashColumn()),
Partitioning childPartitioning = desiredParentPartitioning.translate(createDirectTranslator(createMapping(node.getOutputSymbols(), node.sourceOutputLayout(sourceIndex))));
Partitioning childPartitioning = desiredParentPartitioning.translate(createDirectTranslator(createMapping(node.getOutputSymbols(), node.sourceOutputLayout(sourceIndex))));