Set<String> correlatedVariables = RelOptUtil.getVariablesUsed(subq); for (String correlName : correlatedVariables) { DeferredLookup lookup = mapCorrelToDeferred.get(correlName);
assert joinCond != null; Set<String> correlatedVariables = RelOptUtil.getVariablesUsed(rightRel); if (correlatedVariables.size() > 0) { final List<Correlation> correlations = Lists.newArrayList();
/** * Returns a set of distinct variables set by <code>rel0</code> and used by * <code>rel1</code>. */ public static List<String> getVariablesSetAndUsed( RelNode rel0, RelNode rel1) { Set<String> set = getVariablesSet(rel0); if (set.size() == 0) { return ImmutableList.of(); } Set<String> used = getVariablesUsed(rel1); if (used.size() == 0) { return ImmutableList.of(); } List<String> result = new ArrayList<String>(); for (String s : set) { if (used.contains(s) && !result.contains(s)) { result.add(s); } } return result; }
/** * Returns a set of distinct variables set by <code>rel0</code> and used by * <code>rel1</code>. */ public static String [] getVariablesSetAndUsed( RelNode rel0, RelNode rel1) { Set<String> set = getVariablesSet(rel0); if (set.size() == 0) { return Util.emptyStringArray; } Set<String> used = getVariablesUsed(rel1); if (used.size() == 0) { return Util.emptyStringArray; } List<String> result = new ArrayList<String>(); for (String s : set) { if (used.contains(s) && !result.contains(s)) { result.add(s); } } if (result.size() == 0) { return Util.emptyStringArray; } return result.toArray(new String[result.size()]); }
RelNode inputRel = bb.root; Set<String> correlatedVariablesBefore = RelOptUtil.getVariablesUsed(inputRel); false); Set<String> correlatedVariables = RelOptUtil.getVariablesUsed(bb.root);
Set<String> correlatedVariables = RelOptUtil.getVariablesUsed(subq); for (String correlName : correlatedVariables) { DeferredLookup lookup = mapCorrelToDeferred.get(correlName);
Set<String> correlatedVariables = RelOptUtil.getVariablesUsed(subq); for (String correlName : correlatedVariables) { DeferredLookup lookup = mapCorrelToDeferred.get(correlName);
RelOptUtil.getVariablesUsed(inputRel); Set<String> correlatedVariables = RelOptUtil.getVariablesUsed(bb.root); correlatedVariables.removeAll(correlatedVariablesBefore);
RelOptUtil.getVariablesUsed(projRel);
JoinRelType joinType) Set<String> correlatedVariables = RelOptUtil.getVariablesUsed(rightRel);
if (RelOptUtil.getVariablesUsed(rightInputRel).size() > 0) { return; } else if (mapRefRelToCorVar.containsKey(projRel)) { if (RelOptUtil.getVariablesUsed(rightInputRel).size() > 0) { return;
if (RelOptUtil.getVariablesUsed(rightInputRel).size() > 0) { return; } else if (cm.mapRefRelToCorVar.containsKey(projRel)) { if (RelOptUtil.getVariablesUsed(rightInputRel).size() > 0) { return;
RexNode joinCond, JoinRelType joinType) { Set<String> correlatedVariables = RelOptUtil.getVariablesUsed(rightRel);
if (RelOptUtil.getVariablesUsed(rightInputRel).size() > 0) { return; } else if (cm.mapRefRelToCorVar.containsKey(aggInputProjRel)) { if (RelOptUtil.getVariablesUsed(rightInputRel).size() > 0) { return;
RelOptUtil.getVariablesUsed(inputRel); RelOptUtil.getVariablesUsed(bb.root); correlatedVariables.removeAll(correlatedVariablesBefore);
if (RelOptUtil.getVariablesUsed(rightInputRel).size() > 0) { return; } else if (mapRefRelToCorVar.containsKey(aggInputProjRel)) { if (RelOptUtil.getVariablesUsed(rightInputRel).size() > 0) { return;
RelOptUtil.getVariablesSet(rel), rel.getVariablesStopped()), RelOptUtil.getVariablesUsed(rel)); this.allSets.add(set);
RelOptUtil.getVariablesSet(rel), rel.getVariablesStopped()), RelOptUtil.getVariablesUsed(rel)); this.allSets.add(set);