protected void addLocalCandidates( Channel template, List<Set<? extends NamedChannel>> broadcastPlanChannels, RequestedGlobalProperties rgps, List<PlanNode> target, CostEstimator estimator) { for (RequestedLocalProperties ilp : this.inConn.getInterestingProperties().getLocalProperties()) { final Channel in = template.clone(); ilp.parameterizeChannel(in); // instantiate a candidate, if the instantiated local properties meet one possible local // property set outer: for (OperatorDescriptorSingle dps : getPossibleProperties()) { for (RequestedLocalProperties ilps : dps.getPossibleLocalProperties()) { if (ilps.isMetBy(in.getLocalProperties())) { in.setRequiredLocalProps(ilps); instantiateCandidate(dps, in, broadcastPlanChannels, target, estimator, rgps, ilp); break outer; } } } } }
@Override protected List<RequestedLocalProperties> createPossibleLocalProperties() { RequestedLocalProperties props = new RequestedLocalProperties(); if (this.ordering == null) { props.setGroupedFields(this.keys); } else { props.setOrdering(this.ordering); } return Collections.singletonList(props); }