public PartitioningProperties mergeWithParent(PartitioningProperties parent) { // Non-negotiable if we require a specific partitioning if (partitioning.isPresent()) { return this; } // Partitioning with different replication cannot be compared if (nullsAndAnyReplicated != parent.nullsAndAnyReplicated) { return this; } if (parent.partitioning.isPresent()) { // If the parent has a partitioning preference, propagate parent only if the parent's partitioning columns satisfies our preference. // Otherwise, ignore the parent since the parent will have to repartition anyways. return partitioningColumns.containsAll(parent.partitioningColumns) ? parent : this; } // Otherwise partition on any common columns if available Set<Symbol> common = Sets.intersection(partitioningColumns, parent.partitioningColumns); return common.isEmpty() ? this : partitioned(common).withNullsAndAnyReplicated(nullsAndAnyReplicated); }
public static PartitioningProperties singlePartition() { return partitioned(ImmutableSet.of()); }
.global(PreferredProperties.Global.distributed(PreferredProperties.PartitioningProperties.partitioned(childPartitioning) .withNullsAndAnyReplicated(nullsAndAnyReplicated))) .build();
public static PreferredProperties partitionedWithNullsAndAnyReplicated(Partitioning partitioning) { return builder() .global(Global.distributed(PartitioningProperties.partitioned(partitioning).withNullsAndAnyReplicated(true))) .build(); }
public static PreferredProperties partitioned(Partitioning partitioning) { return builder() .global(Global.distributed(PartitioningProperties.partitioned(partitioning))) .build(); }
public static PreferredProperties partitioned(Set<Symbol> columns) { return builder() .global(Global.distributed(PartitioningProperties.partitioned(columns))) .build(); }
public static PreferredProperties partitionedWithLocal(Set<Symbol> columns, List<? extends LocalProperty<Symbol>> localProperties) { return builder() .global(Global.distributed(PartitioningProperties.partitioned(columns))) .local(localProperties) .build(); }
public static PreferredProperties partitionedWithNullsAndAnyReplicated(Set<Symbol> columns) { return builder() .global(Global.distributed(PartitioningProperties.partitioned(columns).withNullsAndAnyReplicated(true))) .build(); }