Step addEdge(LatticeTable source, LatticeTable target, List<IntPair> keys) { keys = sortUnique(keys); final Step step = g.addEdge(source, target, keys); if (step != null) { return step; } for (Step step2 : g.getEdges(source, target)) { if (step2.keys.equals(keys)) { return step2; } } throw new AssertionError("addEdge failed, yet no edge present"); }
LatticeTable register(RelOptTable t) { final LatticeTable table = tableMap.get(t.getQualifiedName()); if (table != null) { return table; } final LatticeTable table2 = new LatticeTable(t); tableMap.put(t.getQualifiedName(), table2); g.addVertex(table2); return table2; }
public static <V, E extends DefaultEdge> AttributedDirectedGraph<V, E> create( AttributedEdgeFactory<V, E> edgeFactory) { return new AttributedDirectedGraph<>(edgeFactory); }
@Test public void testAttributed() { AttributedDirectedGraph<String, DefaultEdge> g = AttributedDirectedGraph.create(new DefaultAttributedEdgeFactory()); g.addVertex("A"); g.addVertex("B"); g.addVertex("C"); g.addVertex("D"); g.addVertex("E"); g.addVertex("F"); g.addEdge("A", "B", 1); g.addEdge("B", "C", 1); g.addEdge("D", "C", 1); g.addEdge("C", "D", 1); g.addEdge("E", "F", 1); g.addEdge("C", "C", 1); assertEquals("[A, B, C, D]", shortestPath(g, "A", "D").toString()); g.addEdge("B", "D", 1); assertEquals("[A, B, D]", shortestPath(g, "A", "D").toString()); assertNull("There is no path from A to E", shortestPath(g, "A", "E")); assertEquals("[]", shortestPath(g, "D", "D").toString()); assertNull("Node X is not in the graph", shortestPath(g, "X", "A")); assertEquals("[[A, B, C, D], [A, B, D]]", paths(g, "A", "D").toString()); assertThat(g.addVertex("B"), is(false)); assertThat(Iterables.size(g.getEdges("A", "B")), is(1)); assertThat(g.addEdge("A", "B", 1), nullValue()); assertThat(Iterables.size(g.getEdges("A", "B")), is(1)); assertThat(g.addEdge("A", "B", 2), notNullValue()); assertThat(Iterables.size(g.getEdges("A", "B")), is(2)); }
AttributedDirectedGraph.create(new StepRef.Factory()); final Multimap<Pair<TableRef, TableRef>, IntPair> map = LinkedListMultimap.create(); for (TableRef tableRef : frame.tableRefs) { g.addVertex(tableRef); final StepRef stepRef = q.stepRef(source, target, ImmutableList.copyOf(e.getValue())); g.addVertex(stepRef.source()); g.addVertex(stepRef.target()); g.addEdge(stepRef.source(), stepRef.target(), stepRef.step, stepRef.ordinalInQuery); final List<MutableNode> rootNodes = new ArrayList<>(); for (TableRef tableRef : TopologicalOrderIterator.of(g)) { final List<StepRef> edges = g.getInwardEdges(tableRef); final MutableNode node; switch (edges.size()) {
+ "Step([foodmart, warehouse], [foodmart, warehouse_class]," + " warehouse_class_id:warehouse_class_id)])"; assertThat(t.s.space.g.toString(), is(expected)); if (evolve) {
+ "Step([foodmart, sales_fact_1997], [foodmart, time_by_day]," + " time_id:time_id)])"; assertThat(t.s.space.g.toString(), is(expected));
+ "edges: [Step([scott, EMP], [scott, DEPT], DEPTNO:DEPTNO)," + " Step([scott, EMP], [scott, EMP], MGR:EMPNO)])"; assertThat(t.s.space.g.toString(), is(expected));