protected List<DistributionField> getDistributionField(List<Integer> keys) { List<DistributionField> distFields = Lists.newArrayList(); for (int key : keys) { distFields.add(new DistributionField(key)); } return distFields; }
private List<DistributionTrait.DistributionField> getDistributionFields(Window.Group window) { List<DistributionTrait.DistributionField> groupByFields = Lists.newArrayList(); for (int group : BitSets.toIter(window.keys)) { DistributionTrait.DistributionField field = new DistributionTrait.DistributionField(group); groupByFields.add(field); } return groupByFields; }
protected List<DistributionField> getDistributionField(AggregateRel rel, boolean allFields) { List<DistributionField> groupByFields = Lists.newArrayList(); for (int i = 0; i < rel.getGroupSet().cardinality(); i++) { DistributionField field = new DistributionField(i); groupByFields.add(field); if (!allFields && groupByFields.size() == 1) { // if we are only interested in 1 grouping field, pick the first one for now.. // but once we have num distinct values (NDV) statistics, we should pick the one // with highest NDV. break; } } return groupByFields; }
childDistFields.add(new DistributionField(f.getIndex()));
private DistributionTrait convertDist(DistributionTrait srcDist, Map<Integer, Integer> inToOut) { List<DistributionField> newFields = Lists.newArrayList(); for (DistributionField field : srcDist.getFields()) { if (inToOut.containsKey(field.getFieldId())) { newFields.add(new DistributionField(inToOut.get(field.getFieldId()))); } } // After the projection, if the new distribution fields is empty, or new distribution fields is a subset of // original distribution field, we should replace with either SINGLETON or RANDOM_DISTRIBUTED. if (newFields.isEmpty() || newFields.size() < srcDist.getFields().size()) { if (srcDist.getType() != DistributionType.SINGLETON) { return DistributionTrait.ANY; } else { return DistributionTrait.SINGLETON; } } else { return new DistributionTrait(srcDist.getType(), ImmutableList.copyOf(newFields)); } }
@Override public DistributionField apply(Integer input) { return new DistributionField(input); } }).toList());
private List<DistributionField> getDistributionField(SortRel rel) { List<DistributionField> distFields = Lists.newArrayList(); for (RelFieldCollation relField : rel.getCollation().getFieldCollations()) { DistributionField field = new DistributionField(relField.getFieldIndex()); distFields.add(field); } return distFields; } }