@@ -312,109 +312,6 @@ public void testValues() throws RDF4JException {
312312 testOptimizer (expectedQuery , query );
313313 }
314314
315- // @Test
316- // public void testOptionalWithSubSelect() throws RDF4JException {
317- // String query = String.join("\n", "",
318- // "prefix ex: <ex:> ",
319- // "select * where {",
320- // "optional { ?b ex:z ?q . }",
321- // "{",
322- // " select ?b ?a ?x where {",
323- // " ex:b ?a ?x. ",
324- // " ex:b ex:a ?x. ",
325- // "}",
326- // "}",
327- // "}"
328- // );
329- //
330- // // we expect the subselect to be optimized too.
331- // // ex:b ex:a ?x.
332- // // ex:b ?a ?x.
333- //
334- // SPARQLParser parser = new SPARQLParser();
335- // ParsedQuery q = parser.parseQuery(query, null);
336- // QueryJoinOptimizer opt = new QueryJoinOptimizer(new EvaluationStatistics(), new EmptyTripleSource());
337- // QueryRoot optRoot = new QueryRoot(q.getTupleExpr());
338- // opt.optimize(optRoot, null, null);
339- //
340- // StatementFinder stmtFinder = new StatementFinder();
341- // optRoot.visit(stmtFinder);
342- // List<StatementPattern> stmts = stmtFinder.getStatements();
343- //
344- // assertEquals(stmts.size(), 3);
345- // assertEquals(stmts.get(0).getSubjectVar().getValue().stringValue(), "ex:b");
346- // assertEquals(stmts.get(0).getPredicateVar().getValue().stringValue(), "ex:a");
347- // assertEquals(stmts.get(0).getObjectVar().getValue(), null);
348- // assertEquals(stmts.get(1).getSubjectVar().getValue().stringValue(), "ex:b");
349- // assertEquals(stmts.get(1).getPredicateVar().getValue(), null);
350- // assertEquals(stmts.get(1).getObjectVar().getValue(), null);
351- //
352- // }
353-
354- // @Test
355- // public void reorderJoinArgsUsesEstimatorForFirstPattern() throws Exception {
356- // ValueFactory vf = SimpleValueFactory.getInstance();
357- //
358- // StatementPattern expensive = new StatementPattern(new Var("s1"),
359- // new Var("p1", vf.createIRI("ex:pExpensive")), new Var("o1"));
360- // StatementPattern medium = new StatementPattern(new Var("s2"),
361- // new Var("p2", vf.createIRI("ex:pMedium")), new Var("o2"));
362- // StatementPattern cheap = new StatementPattern(new Var("s3"),
363- // new Var("p3", vf.createIRI("ex:pCheap")), new Var("o3"));
364- //
365- // Deque<TupleExpr> ordered = new ArrayDeque<>();
366- // ordered.add(expensive);
367- // ordered.add(medium);
368- // ordered.add(cheap);
369- //
370- // QueryJoinOptimizer optimizer = new QueryJoinOptimizer(new JoinEstimatingStatistics(), new EmptyTripleSource());
371- // Object joinVisitor = buildJoinVisitor(optimizer);
372- // Method reorderJoinArgs = joinVisitor.getClass().getDeclaredMethod("reorderJoinArgs", Deque.class);
373- // reorderJoinArgs.setAccessible(true);
374- //
375- // @SuppressWarnings("unchecked")
376- // Deque<TupleExpr> reordered = (Deque<TupleExpr>) reorderJoinArgs.invoke(joinVisitor, ordered);
377- //
378- // List<String> predicateOrder = reordered.stream()
379- // .map(QueryJoinOptimizerTest::getPredicateValue)
380- // .collect(Collectors.toList());
381- // assertThat(predicateOrder).containsExactlyInAnyOrder("ex:pCheap", "ex:pMedium", "ex:pExpensive");
382- // assertThat(predicateOrder.subList(0, 2)).containsExactlyInAnyOrder("ex:pCheap", "ex:pMedium");
383- // assertThat(predicateOrder.get(2)).isEqualTo("ex:pExpensive");
384- // }
385-
386- // @Test
387- // public void reorderJoinArgsChoosesCheapestInitialJoinCombination() throws Exception {
388- // ValueFactory vf = SimpleValueFactory.getInstance();
389- //
390- // StatementPattern a = new StatementPattern(new Var("sa"), new Var("pa", vf.createIRI("ex:pA")),
391- // new Var("oa"));
392- // StatementPattern b = new StatementPattern(new Var("sb"), new Var("pb", vf.createIRI("ex:pB")),
393- // new Var("ob"));
394- // StatementPattern c = new StatementPattern(new Var("sc"), new Var("pc", vf.createIRI("ex:pC")),
395- // new Var("oc"));
396- //
397- // Deque<TupleExpr> ordered = new ArrayDeque<>();
398- // ordered.add(a);
399- // ordered.add(b);
400- // ordered.add(c);
401- //
402- // QueryJoinOptimizer optimizer = new QueryJoinOptimizer(new PairwiseJoinStatistics(), new EmptyTripleSource());
403- // Object joinVisitor = buildJoinVisitor(optimizer);
404- // Method reorderJoinArgs = joinVisitor.getClass().getDeclaredMethod("reorderJoinArgs", Deque.class);
405- // reorderJoinArgs.setAccessible(true);
406- //
407- // @SuppressWarnings("unchecked")
408- // Deque<TupleExpr> reordered = (Deque<TupleExpr>) reorderJoinArgs.invoke(joinVisitor, ordered);
409- //
410- // List<String> predicateOrder = reordered.stream()
411- // .map(QueryJoinOptimizerTest::getPredicateValue)
412- // .collect(Collectors.toList());
413- // assertThat(predicateOrder).containsExactlyInAnyOrder("ex:pA", "ex:pB", "ex:pC");
414- // assertThat(predicateOrder.subList(0, 2)).containsExactlyInAnyOrder("ex:pB", "ex:pC");
415- // assertThat(predicateOrder.get(2)).isEqualTo("ex:pA");
416- // }
417-
418315 @ Test
419316 public void optimizeSetsResultSizeEstimateOnGeneratedJoinNodes () throws Exception {
420317 String query = "SELECT * WHERE { ?s <ex:pA> ?o1 . ?s <ex:pB> ?o2 . ?s <ex:pC> ?o3 . }" ;
0 commit comments