public class TestASTComplexOptionalOptimizer extends AbstractASTEvaluationTestCase
ASTComplexOptionalOptimizer.TestCase2.MyProperties, TestCase2.RandomTypebaseURI, store, valueFactory_randomType| Constructor and Description |
|---|
TestASTComplexOptionalOptimizer() |
TestASTComplexOptionalOptimizer(String name) |
| Modifier and Type | Method and Description |
|---|---|
void |
test_rewriteComplexOptional()
This unit test is a based on
bigdata-perf/CI/govtrack/queries/query10.rq |
assertSameAST, asSet, asSet, asSet, asSet, asSet, enableDeleteMarkersInIndes, getBOpContext, getProperties, getStore, makeIV, setUp, tearDownassertSameSolutions, assertSameSolutions, assertSameSolutions, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, compareGraphs, compareTupleQueryResults, diffassertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEqualsWithinUlps, assertSameArray, assertSameArray, assertSameBigDecimal, assertSameBigDecimal, assertSameBigInteger, assertSameBigInteger, assertSameIterator, assertSameIterator, assertSameIteratorAnyOrder, assertSameIteratorAnyOrder, assertSameValue, assertSameValue, assertZeroUlps, assertZeroUlps, fail, getInnerCause, getNormalInt, getProjectBuildPath, getRandomObject, getRandomObject, getRandomOrder, getRandomString, getTestInputStream, getTestResource, getTestResource, getUlps, getUlps, isDEBUG, isDEBUG, isINFO, isINFO, isInnerCause, logPropertiesassertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, countTestCases, createResult, fail, fail, failNotEquals, failNotSame, failSame, format, getName, run, run, runBare, runTest, setName, toStringpublic TestASTComplexOptionalOptimizer()
public TestASTComplexOptionalOptimizer(String name)
name - public void test_rewriteComplexOptional()
bigdata-perf/CI/govtrack/queries/query10.rq
Rewrite:
SELECT ?_var1 ?_var6 ?_var4 ?_var10
WHERE {
?_var1 a
OPTIONAL {
?_var1 ?_var6
}.
OPTIONAL {
?_var12 ?_var1.
?_var12 ?_var4
}.
OPTIONAL {
?_var1 ?_var13.
?_var13 ?_var10
}
}
as:
SELECT ?_var1 ?_var6 ?_var4 ?_var10
WITH {
SELECT ?_var1 ?_var6
WHERE {
?_var1 a
OPTIONAL {
?_var1 ?_var6
}.
}
} as %_set1
WITH {
SELECT ?_var1 ?_var6 ?_var4
WHERE {
INCLUDE %_set1
OPTIONAL {
?_var12 ?_var1.
?_var12 ?_var4
}.
}
} as %_set2
WITH {
SELECT ?_var1 ?_var6 ?_var4 ?_var10
WHERE {
INCLUDE %_set2
OPTIONAL {
?_var1 ?_var13.
?_var13 ?_var10
}
}
} as %_set3
WHERE {
INCLUDE %_set3 .
}
TODO We need a unit test where there are some filters which should
move and some which should not.
FIXME We should not be lifting the simple optional into the first
named subquery. In is independent of the other optionals (they do
not use the variable which is bound by the simple optional).
Therefore it should be left in place in step (1) and then lifted out
in step (2) into its own named subquery in support of a more
efficient MERGE JOIN pattern.
FIXME The test is currently predicting var6 as projected from the
lifted complex optional groups. This is because the only way that
var6 makes it into the top-level projection is through inclusion
of %set1 in the two lifted complex optional groups. I need to come
back to the test and modify it represent the simple optional as an
optional group instead and modify the code to translate both simple
and complex optional groups into named subqueries. At that point
the test should conform to the best known query plan.
FIXME Unit test with exogenousVars to make sure that they are being
respected.Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.