/** Returns whether the vertex is valid. */ private boolean belongsToDag(HepRelVertex vertex) { String digest = vertex.getCurrentRel().getDigest(); return mapDigestToVertex.get(digest) != null; }
/** Returns whether the vertex is valid. */ private boolean belongsToDag(HepRelVertex vertex) { String digest = vertex.getCurrentRel().getDigest(); return mapDigestToVertex.get(digest) != null; }
/** Computes the key for {@link #mapDigestToRel}. */ private static Pair<String, RelDataType> key(RelNode rel) { return Pair.of(rel.getDigest(), rel.getRowType()); }
/** Computes the key for {@link #mapDigestToRel}. */ private static Pair<String, RelDataType> key(RelNode rel) { return Pair.of(rel.getDigest(), rel.getRowType()); }
private StringBuilder printAllRelNode(RelNode relNode, StringBuilder result) { if (relNode.getDigest().contains(".")) { //for subQuery result.append(relNode.getDigest().split("\\.")[0]).append("-"); } else { result.append(relNode.getDigest().split("#")[0]).append("-"); } List<RelNode> childs = relNode.getInputs(); for (RelNode child : childs) { printAllRelNode(child, result); } return result; }
private void updateVertex(HepRelVertex vertex, RelNode rel) { if (rel != vertex.getCurrentRel()) { // REVIEW jvs 5-Apr-2006: We'll do this again later // during garbage collection. Or we could get rid // of mark/sweep garbage collection and do it precisely // at this point by walking down to all rels which are only // reachable from here. notifyDiscard(vertex.getCurrentRel()); } String oldDigest = vertex.getCurrentRel().toString(); if (mapDigestToVertex.get(oldDigest) == vertex) { mapDigestToVertex.remove(oldDigest); } String newDigest = rel.getDigest(); // When a transformation happened in one rule apply, support // vertex2 replace vertex1, but the current relNode of // vertex1 and vertex2 is same, // then the digest is also same. but we can't remove vertex2, // otherwise the digest will be removed wrongly in the mapDigestToVertex // when collectGC // so it must update the digest that map to vertex mapDigestToVertex.put(newDigest, vertex); if (rel != vertex.getCurrentRel()) { vertex.replaceRel(rel); } notifyEquivalence( rel, vertex, false); }
private void updateVertex(HepRelVertex vertex, RelNode rel) { if (rel != vertex.getCurrentRel()) { // REVIEW jvs 5-Apr-2006: We'll do this again later // during garbage collection. Or we could get rid // of mark/sweep garbage collection and do it precisely // at this point by walking down to all rels which are only // reachable from here. notifyDiscard(vertex.getCurrentRel()); } String oldDigest = vertex.getCurrentRel().toString(); if (mapDigestToVertex.get(oldDigest) == vertex) { mapDigestToVertex.remove(oldDigest); } String newDigest = rel.getDigest(); // When a transformation happened in one rule apply, support // vertex2 replace vertex1, but the current relNode of // vertex1 and vertex2 is same, // then the digest is also same. but we can't remove vertex2, // otherwise the digest will be removed wrongly in the mapDigestToVertex // when collectGC // so it must update the digest that map to vertex mapDigestToVertex.put(newDigest, vertex); if (rel != vertex.getCurrentRel()) { vertex.replaceRel(rel); } notifyEquivalence( rel, vertex, false); }
final String oldDigest = rel.getDigest(); if (fixUpInputs(rel)) { final Pair<String, RelDataType> oldKey =
final String oldDigest = rel.getDigest(); if (fixUpInputs(rel)) { final Pair<String, RelDataType> oldKey =
String digest = rel.getDigest(); HepRelVertex equivVertex = mapDigestToVertex.get(digest); if (equivVertex != null) {
String digest = rel.getDigest(); HepRelVertex equivVertex = mapDigestToVertex.get(digest); if (equivVertex != null) {
finalRel.toString(), indexContext.getScan().toString(), indexContext.getLowerProject()!=null?indexContext.getLowerProject().getDigest(): indexContext.getScan().getDigest(), finalRel.getDigest()); return finalRel;