public class AbstractRTOTestCase extends AbstractDataDrivenSPARQLTestCase
Note: We reduce the stochastic behavior of the algorithm by using non-random sampling techniques. However, the main correctness issues for the RTO are the handling of different kinds of join groups, not the specific join orderings that it produces. The join orderings depend on how the cutoff joins are sampled.
JGraph
,
JoinGraph
,
Runtime
Query Optimization,
Integrate
RTO into SAIL
TODO See the stubbed out test suite for the RTO for some examples of
join groups that it should be handling.
TODO The RTO should be extended (together with test coverage) to handle
more interesting kinds of join groups (optionals, sub-selects, property
paths, SERVICE calls, etc).
Note: When handling sub-groups, etc., the RTO needs to flow solutions into the sub-query. TODO Test case to verify that we can reorder inside of a MINUS (we already have a test for inside of UNION and OPTIONAL). TODO Test case to verify that we do not reorder inside of a SERVICE call. Currently it won't since it is invoked from within AST2BOpUtility#convertJoinGroup(), but this would be an issue if the RTO was turned into an {@link IASTOptimizer}. TODO Test case to verify that exogenous bindings are visible to the RTO. Specifically, make sure that the exogenous bindings are applied when the RTO does bottom-up evaluation to order the join group. It is Ok if we just handle the case with a single exogenous solution for now since we do not systematically optimize the case for multiple exogenous solutions yet. TODO When adding an {@link IASTOptimizer} for the RTO, modify this class to test for the inclusion of the JoinGraphNode for the RTO. TODO Automate the larger data scale tests on these data sets as part of CI and provide automated reporting over time on those performance runs. Once this is done, there will be no more reason to keep the older TestJoinGraphOnLubm and related tests (these are in dropbox ). TODO Add some govtrack queries. Those queries use quads mode and have a lot of interesting query constructions. TODO TESTS: Provide test coverage for running queries with complex FILTERs (triples mode is Ok). TODO TESTS: Test with FILTERs that can not run until after all joins. Such filters are only attached when the [pathIsComplete] flag is set. This might only occur when we have FILTERs that depend on variables that are only "maybe" bound by an OPTIONAL join. TODO TESTS: Quads mode tests. We need to look in depth at how the quads mode access paths are evaluated. There are several different conditions. We need to look at each condition and at whether and how it can be made compatible with cutoff evaluation. (This is somewhat similar to the old scan+filter versus nested query debate on quads mode joins.) TODO TESTS: Scale-out tests. For scale-out, we need to either mark the join's evaluation context based on whether or not the access path is local or remote (and whether the index is key-range distributed or hash partitioned).
Modifier and Type | Class and Description |
---|---|
protected static class |
AbstractRTOTestCase.MyQueryListener
Helper class supports inspection of the terminated
IRunningQuery . |
AbstractDataDrivenSPARQLTestCase.TestHelper, AbstractDataDrivenSPARQLTestCase.UpdateTestHelper
AbstractDataAndSPARQLTestCase.AbsHelper
TestCase2.MyProperties, TestCase2.RandomType
Modifier and Type | Field and Description |
---|---|
protected static org.apache.log4j.Logger |
log |
baseURI, store, valueFactory
_randomType
Constructor and Description |
---|
AbstractRTOTestCase() |
AbstractRTOTestCase(String name) |
Modifier and Type | Method and Description |
---|---|
protected void |
assertSameJoinOrder(int[] expected,
AbstractDataDrivenSPARQLTestCase.TestHelper helper)
Helper to run the test and examine the RTO determined solution.
|
protected void |
assertSameJoinOrder(List<int[]> expectedOrders,
AbstractDataDrivenSPARQLTestCase.TestHelper helper)
Helper to run the test and examine the RTO determined solution.
|
assertSameAST, asSet, asSet, asSet, asSet, asSet, enableDeleteMarkersInIndes, getBOpContext, getProperties, getStore, makeIV, setUp, tearDown
assertSameSolutions, assertSameSolutions, assertSameSolutions, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, assertSameSolutionsAnyOrder, compareGraphs, compareTupleQueryResults, diff
assertEquals, 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, logProperties
assertEquals, 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, toString
public AbstractRTOTestCase()
public AbstractRTOTestCase(String name)
name
- protected void assertSameJoinOrder(int[] expected, AbstractDataDrivenSPARQLTestCase.TestHelper helper) throws Exception
expected
- The expected join ordering.helper
- Exception
protected void assertSameJoinOrder(List<int[]> expectedOrders, AbstractDataDrivenSPARQLTestCase.TestHelper helper) throws Exception
expectedOrders
- The expected join ordering(s)helper
- Exception
Copyright © 2006–2019 SYSTAP, LLC DBA Blazegraph. All rights reserved.