public Void visitLocalRef(RexLocalRef localRef) { for (Integer target : targets) { graph.addEdge(localRef.getIndex(), target); } return null; } });
private DirectedGraph<Integer, DefaultEdge> createGraphFromExpression( final List<RexNode> exprs) { final DirectedGraph<Integer, DefaultEdge> graph = DefaultDirectedGraph.create(); for (int i = 0; i < exprs.size(); i++) { graph.addVertex(i); } for (final Ord<RexNode> expr : Ord.zip(exprs)) { expr.e.accept( new RexVisitorImpl<Void>(true) { public Void visitLocalRef(RexLocalRef localRef) { graph.addEdge(localRef.getIndex(), expr.i); return null; } }); } assert graph.vertexSet().size() == exprs.size(); return graph; } }
public static <V, E extends DefaultEdge> List<V> predecessorListOf( DirectedGraph<V, E> graph, V vertex) { final List<E> edges = graph.getInwardEdges(vertex); return new AbstractList<V>() { public V get(int index) { //noinspection unchecked return (V) edges.get(index).source; } public int size() { return edges.size(); } }; }
if (graph.vertexSet().contains(root)) { BreadthFirstIterator.reachable(rootSet, graph, root); if (rootSet.size() == graph.vertexSet().size()) { for (HepRelVertex vertex : graph.vertexSet()) { if (!rootSet.contains(vertex)) { sweepSet.add(vertex); graph.removeAllVertices(sweepSet); graphSizeLastGC = graph.vertexSet().size();
for (RelTableRef tRef : sourceTableRefs) { graph.addVertex(tRef); tableVNameToTableRefs.put(tRef.getQualifiedName(), tRef); if (!targetTableRefs.contains(tRef)) { for (RelTableRef tRef : graph.vertexSet()) { Edge edge = graph.getEdge(tRef, parentTRef); if (edge == null) { edge = graph.addEdge(tRef, parentTRef); do { List<RelTableRef> nodesToRemove = new ArrayList<>(); for (RelTableRef tRef : graph.vertexSet()) { if (graph.getInwardEdges(tRef).size() == 1 && graph.getOutwardEdges(tRef).isEmpty()) { compensationEquiColumns.putAll(graph.getInwardEdges(tRef).get(0).equiColumns); graph.removeAllVertices(nodesToRemove); } else { done = true; if (!Collections.disjoint(graph.vertexSet(), extraTableRefs)) { return false;
final boolean b = g.addVertex("A"); assertTrue(b); final boolean b2 = g.addVertex("A"); assertFalse(b2); DefaultEdge x = g.addEdge("A", "B"); fail("expected exception, got " + x); } catch (IllegalArgumentException e) { g.addVertex("B"); DefaultEdge x = g.addEdge("A", "B"); assertNotNull(x); DefaultEdge x2 = g.addEdge("A", "B"); assertNull(x2); try { DefaultEdge x3 = g.addEdge("Z", "A"); fail("expected exception, got " + x3); } catch (IllegalArgumentException e) { g.addVertex("Z"); DefaultEdge x3 = g.addEdge("Z", "A"); assertNotNull(x3); DefaultEdge x4 = g.addEdge("Z", "A"); assertNull(x4); final List<DefaultEdge> in1 = g.getInwardEdges("A"); final List<DefaultEdge> out1 = g.getOutwardEdges("A"); final boolean b3 = g.addVertex("A");
DefaultDirectedGraph.create(Edge.FACTORY); for (RelNode node : relNodes) { graph.addVertex(node); Edge edge = graph.getEdge(source, target); if (edge == null) { edge = graph.addEdge(source, target); int previousColumn = 0; for (RelNode relNode : TopologicalOrderIterator.of(graph)) { final List<Edge> edges = graph.getInwardEdges(relNode); Node node; final int column = previousColumn
public void registerConverterRule( RelOptPlanner planner, ConverterRule converterRule) { if (converterRule.isGuaranteed()) { ConversionData conversionData = getConversionData(planner); final Convention inConvention = (Convention) converterRule.getInTrait(); final Convention outConvention = (Convention) converterRule.getOutTrait(); conversionData.conversionGraph.addVertex(inConvention); conversionData.conversionGraph.addVertex(outConvention); conversionData.conversionGraph.addEdge(inConvention, outConvention); conversionData.mapArcToConverterRule.put( Pair.of(inConvention, outConvention), converterRule); } }
public V next() { V v = deque.removeFirst(); for (E e : graph.getOutwardEdges(v)) { @SuppressWarnings("unchecked") V target = (V) e.target; if (set.add(target)) { deque.addLast(target); } } return v; }
graph.removeEdge(parent, discardedVertex); graph.addEdge(parent, preservedVertex); updateVertex(parent, parentRel);
DefaultDirectedGraph.create(); for (int i = 0; i < exprs.length; i++) { graph.addVertex(i);
private List<Integer> getRank(DirectedGraph<Integer, DefaultEdge> graph) { final int[] rankArr = new int[graph.vertexSet().size()]; int rank = 0; for (int i : TopologicalOrderIterator.of(graph)) { rankArr[i] = rank++; } return ImmutableIntList.of(rankArr); }
public void deregisterConverterRule( RelOptPlanner planner, ConverterRule converterRule) { if (converterRule.isGuaranteed()) { ConversionData conversionData = getConversionData(planner); final Convention inConvention = (Convention) converterRule.getInTrait(); final Convention outConvention = (Convention) converterRule.getOutTrait(); final boolean removed = conversionData.conversionGraph.removeEdge( inConvention, outConvention); assert removed; conversionData.mapArcToConverterRule.remove( Pair.of(inConvention, outConvention), converterRule); } }
ImmutableList.copyOf(shortestPaths.keySet()); int changeCount = 0; for (E edge : graph.edgeSet()) { for (Pair<V, V> edge2 : previous) { if (edge.target.equals(edge2.left)) {
for (RelTableRef tRef : sourceTableRefs) { graph.addVertex(tRef); tableVNameToTableRefs.put(tRef.getQualifiedName(), tRef); if (!targetTableRefs.contains(tRef)) { for (RelTableRef tRef : graph.vertexSet()) { Edge edge = graph.getEdge(tRef, parentTRef); if (edge == null) { edge = graph.addEdge(tRef, parentTRef); do { List<RelTableRef> nodesToRemove = new ArrayList<>(); for (RelTableRef tRef : graph.vertexSet()) { if (graph.getInwardEdges(tRef).size() == 1 && graph.getOutwardEdges(tRef).isEmpty()) { compensationEquiColumns.putAll(graph.getInwardEdges(tRef).get(0).equiColumns); graph.removeAllVertices(nodesToRemove); } else { done = true; if (!Collections.disjoint(graph.vertexSet(), extraTableRefs)) { return false;
final boolean b = g.addVertex("A"); assertTrue(b); final boolean b2 = g.addVertex("A"); assertFalse(b2); DefaultEdge x = g.addEdge("A", "B"); fail("expected exception, got " + x); } catch (IllegalArgumentException e) { g.addVertex("B"); DefaultEdge x = g.addEdge("A", "B"); assertNotNull(x); DefaultEdge x2 = g.addEdge("A", "B"); assertNull(x2); try { DefaultEdge x3 = g.addEdge("Z", "A"); fail("expected exception, got " + x3); } catch (IllegalArgumentException e) { g.addVertex("Z"); DefaultEdge x3 = g.addEdge("Z", "A"); assertNotNull(x3); DefaultEdge x4 = g.addEdge("Z", "A"); assertNull(x4); final List<DefaultEdge> in1 = g.getInwardEdges("A"); final List<DefaultEdge> out1 = g.getOutwardEdges("A"); final boolean b3 = g.addVertex("A");
final LatticeTable table = space.register(p.left.getTable()); final Vertex vertex = new Vertex(table, p.right); graph.addVertex(vertex); vertices.add(vertex); final Vertex source = vertices.get(tempLink[0][0]); final Vertex target = vertices.get(tempLink[1][0]); Edge edge = graph.getEdge(source, target); if (edge == null) { edge = graph.addEdge(source, target); final Map<LatticeTable, MutableNode> map = new IdentityHashMap<>(); for (Vertex vertex : TopologicalOrderIterator.of(graph)) { final List<Edge> edges = graph.getInwardEdges(vertex); MutableNode node; if (root == null) {
public void registerConverterRule( RelOptPlanner planner, ConverterRule converterRule) { if (converterRule.isGuaranteed()) { ConversionData conversionData = getConversionData(planner); final Convention inConvention = (Convention) converterRule.getInTrait(); final Convention outConvention = (Convention) converterRule.getOutTrait(); conversionData.conversionGraph.addVertex(inConvention); conversionData.conversionGraph.addVertex(outConvention); conversionData.conversionGraph.addEdge(inConvention, outConvention); conversionData.mapArcToConverterRule.put( Pair.of(inConvention, outConvention), converterRule); } }