@Override public RelWriter explainTerms(RelWriter pw) { List<String> joinsString = new ArrayList<String>(); for (int i = 0; i < joinInputs.size(); i++) { final StringBuilder sb = new StringBuilder(); sb.append(joinInputs.get(i).left).append(" - ").append(joinInputs.get(i).right) .append(" : ").append(joinTypes.get(i).name()); joinsString.add(sb.toString()); } super.explainTerms(pw); for (Ord<RelNode> ord : Ord.zip(inputs)) { pw.input("input#" + ord.i, ord.e); } return pw.item("condition", condition) .item("joinsDescription", joinsString); }
public RelNode onRegister(RelOptPlanner planner) { List<RelNode> oldInputs = getInputs(); List<RelNode> inputs = new ArrayList<>(oldInputs.size()); for (final RelNode input : oldInputs) { RelNode e = planner.ensureRegistered(input, null); if (e != input) { // TODO: change 'equal' to 'eq', which is stronger. assert RelOptUtil.equal( "rowtype of rel before registration", input.getRowType(), "rowtype of rel after registration", e.getRowType(), Litmus.THROW); } inputs.add(e); } RelNode r = this; if (!Util.equalShallow(oldInputs, inputs)) { r = copy(getTraitSet(), inputs); } r.recomputeDigest(); assert r.isValid(Litmus.THROW, null); return r; }
@SuppressWarnings("deprecation") public boolean isValid(boolean fail) { return isValid(Litmus.THROW, null); }
public final RelDataType getRowType() { if (rowType == null) { rowType = deriveRowType(); assert rowType != null : this; } return rowType; }
@SuppressWarnings("deprecation") public final RelOptCost computeSelfCost(RelOptPlanner planner) { return computeSelfCost(planner, RelMetadataQuery.instance()); }
public String recomputeDigest() { String tempDigest = computeDigest(); assert tempDigest != null : "post: return != null"; String prefix = "rel#" + id + ":"; // Substring uses the same underlying array of chars, so saves a bit // of memory. this.desc = prefix + tempDigest; this.digest = this.desc.substring(prefix.length()); return this.digest; }
public RelNode onRegister(RelOptPlanner planner) { List<RelNode> oldInputs = getInputs(); List<RelNode> inputs = new ArrayList<>(oldInputs.size()); for (final RelNode input : oldInputs) { RelNode e = planner.ensureRegistered(input, null); if (e != input) { // TODO: change 'equal' to 'eq', which is stronger. assert RelOptUtil.equal( "rowtype of rel before registration", input.getRowType(), "rowtype of rel after registration", e.getRowType(), Litmus.THROW); } inputs.add(e); } RelNode r = this; if (!Util.equalShallow(oldInputs, inputs)) { r = copy(getTraitSet(), inputs); } r.recomputeDigest(); assert r.isValid(Litmus.THROW, null); return r; }
@SuppressWarnings("deprecation") public boolean isValid(boolean fail) { return isValid(Litmus.THROW, null); }
public final RelDataType getRowType() { if (rowType == null) { rowType = deriveRowType(); assert rowType != null : this; } return rowType; }
@SuppressWarnings("deprecation") public final RelOptCost computeSelfCost(RelOptPlanner planner) { return computeSelfCost(planner, RelMetadataQuery.instance()); }
public String recomputeDigest() { String tempDigest = computeDigest(); assert tempDigest != null : "post: return != null"; String prefix = "rel#" + id + ":"; // Substring uses the same underlying array of chars, so saves a bit // of memory. this.desc = prefix + tempDigest; this.digest = this.desc.substring(prefix.length()); return this.digest; }
@Override public RelWriter explainTerms(RelWriter pw) { return super.explainTerms(pw).item("sql", stripToOneLineSql(sql)); }
@Override public boolean isValid(Litmus litmus, Context context) { if (!super.isValid(litmus, context)) { return false;
@Override public RelWriter explainTerms(RelWriter pw) { List<String> joinsString = new ArrayList<String>(); for (int i = 0; i < joinInputs.size(); i++) { final StringBuilder sb = new StringBuilder(); sb.append(joinInputs.get(i).left).append(" - ").append(joinInputs.get(i).right) .append(" : ").append(joinTypes.get(i).name()); joinsString.add(sb.toString()); } super.explainTerms(pw); for (Ord<RelNode> ord : Ord.zip(inputs)) { pw.input("input#" + ord.i, ord.e); } return pw.item("condition", condition) .item("joinsDescription", joinsString); }
@Override public boolean isValid(Litmus litmus, Context context) { if (!super.isValid(litmus, context)) { return false;
@Override public RelWriter explainTerms(RelWriter pw) { return super.explainTerms(pw).input("jdbc pushdown:", jdbcSubTree); }
@Override public RelWriter explainTerms(RelWriter pw) { return super.explainTerms(pw).item("path", path); }
public void explain(RelWriter pw) { explainTerms(pw).done(this); }
public void explain(RelWriter pw) { explainTerms(pw).done(this); }
@Override public RelWriter explainTerms(RelWriter pw) { if (content.isOpaque()) { return super.explainTerms(pw).item("Key", content.hashCode()); } else { return super.explainTerms(pw).item("Values", content.asNode()); } }