private Graphs.FrozenGraph<Convention, DefaultEdge> getPathMap() { if (pathMap == null) { pathMap = Graphs.makeImmutable(conversionGraph); } return pathMap; }
/** * Retrieves the parent vertices of a vertex. If a vertex appears multiple * times as an input into a parent, then that counts as multiple parents, * one per input reference. * * @param vertex the vertex * @return the list of parents for the vertex */ private List<HepRelVertex> getVertexParents(HepRelVertex vertex) { final List<HepRelVertex> parents = new ArrayList<>(); final List<HepRelVertex> parentVertices = Graphs.predecessorListOf(graph, vertex); for (HepRelVertex pVertex : parentVertices) { RelNode parent = pVertex.getCurrentRel(); for (int i = 0; i < parent.getInputs().size(); i++) { HepRelVertex child = (HepRelVertex) parent.getInputs().get(i); if (child == vertex) { parents.add(pVertex); } } } return parents; }
private Graphs.FrozenGraph<Convention, DefaultEdge> getPathMap() { if (pathMap == null) { pathMap = Graphs.makeImmutable(conversionGraph); } return pathMap; }
/** * Retrieves the parent vertices of a vertex. If a vertex appears multiple * times as an input into a parent, then that counts as multiple parents, * one per input reference. * * @param vertex the vertex * @return the list of parents for the vertex */ private List<HepRelVertex> getVertexParents(HepRelVertex vertex) { final List<HepRelVertex> parents = new ArrayList<>(); final List<HepRelVertex> parentVertices = Graphs.predecessorListOf(graph, vertex); for (HepRelVertex pVertex : parentVertices) { RelNode parent = pVertex.getCurrentRel(); for (int i = 0; i < parent.getInputs().size(); i++) { HepRelVertex child = (HepRelVertex) parent.getInputs().get(i); if (child == vertex) { parents.add(pVertex); } } } return parents; }
private <V> List<V> shortestPath(DirectedGraph<V, DefaultEdge> g, V source, V target) { return Graphs.makeImmutable(g).getShortestPath(source, target); }
/** Unit test for {@link DepthFirstIterator}. */ @Test public void testPredecessorList() { final DefaultDirectedGraph<String, DefaultEdge> graph = createDag(); final List<String> list = Graphs.predecessorListOf(graph, "C"); assertEquals("[B, E]", list.toString()); }
private <V> List<List<V>> paths(DirectedGraph<V, DefaultEdge> g, V source, V target) { return Graphs.makeImmutable(g).getPaths(source, target); }
/** Unit test for {@link DepthFirstIterator}. */ @Test public void testPredecessorList() { final DefaultDirectedGraph<String, DefaultEdge> graph = createDag(); final List<String> list = Graphs.predecessorListOf(graph, "C"); assertEquals("[B, E]", list.toString()); }
private <V> List<List<V>> paths(DirectedGraph<V, DefaultEdge> g, V source, V target) { return Graphs.makeImmutable(g).getPaths(source, target); }
private boolean doesConverterApply( ConverterRule converterRule, HepRelVertex vertex) { RelTrait outTrait = converterRule.getOutTrait(); List<HepRelVertex> parents = Graphs.predecessorListOf(graph, vertex); for (HepRelVertex parent : parents) { RelNode parentRel = parent.getCurrentRel(); if (parentRel instanceof Converter) { // We don't support converter chains. continue; } if (parentRel.getTraitSet().contains(outTrait)) { // This parent wants the traits produced by the converter. return true; } } return (vertex == root) && (requestedRootTraits != null) && requestedRootTraits.contains(outTrait); }
private <V> List<V> shortestPath(DirectedGraph<V, DefaultEdge> g, V source, V target) { return Graphs.makeImmutable(g).getShortestPath(source, target); }
private boolean doesConverterApply( ConverterRule converterRule, HepRelVertex vertex) { RelTrait outTrait = converterRule.getOutTrait(); List<HepRelVertex> parents = Graphs.predecessorListOf(graph, vertex); for (HepRelVertex parent : parents) { RelNode parentRel = parent.getCurrentRel(); if (parentRel instanceof Converter) { // We don't support converter chains. continue; } if (parentRel.getTraitSet().contains(outTrait)) { // This parent wants the traits produced by the converter. return true; } } return (vertex == root) && (requestedRootTraits != null) && requestedRootTraits.contains(outTrait); }
Graphs.makeImmutable(usesGraph); final Set<RelOptTable> queryTablesUsed = RelOptUtil.findTables(rel); final List<RelOptMaterialization> applicableMaterializations =
Graphs.predecessorListOf(graph, vertex); final List<HepRelVertex> parents = new ArrayList<>(); for (HepRelVertex parent : allParents) {
Graphs.makeImmutable(usesGraph); final Set<RelOptTable> queryTablesUsed = RelOptUtil.findTables(rel); final List<RelOptMaterialization> applicableMaterializations =
Graphs.predecessorListOf(graph, vertex); final List<HepRelVertex> parents = new ArrayList<>(); for (HepRelVertex parent : allParents) {
graph.addEdge("C", "E"); final Graphs.FrozenGraph<String, DefaultEdge> frozenGraph = Graphs.makeImmutable(graph); assertEquals("[A, B]", frozenGraph.getShortestPath("A", "B").toString()); assertEquals("[[A, B]]", frozenGraph.getPaths("A", "B").toString());
graph.addEdge("C", "E"); final Graphs.FrozenGraph<String, DefaultEdge> frozenGraph = Graphs.makeImmutable(graph); assertEquals("[A, B]", frozenGraph.getShortestPath("A", "B").toString()); assertEquals("[[A, B]]", frozenGraph.getPaths("A", "B").toString());