public class NStreamQueryPlanBuilder extends Object
Modifier and Type | Class and Description |
---|---|
static class |
NStreamQueryPlanBuilder.BestChainResult
Encapsulates the chain information.
|
Constructor and Description |
---|
NStreamQueryPlanBuilder() |
Modifier and Type | Method and Description |
---|---|
protected static QueryPlanForge |
build(QueryGraphForge queryGraph,
EventType[] typesPerStream,
HistoricalViewableDesc historicalViewableDesc,
DependencyGraph dependencyGraph,
HistoricalStreamIndexListForge[] historicalStreamIndexLists,
boolean hasForceNestedIter,
String[][][] indexedStreamsUniqueProps,
TableMetaData[] tablesPerStream,
StreamJoinAnalysisResultCompileTime streamJoinAnalysisResult) |
protected static int[] |
buildDefaultNestingOrder(int numStreams,
int forStream)
Returns default nesting order for a given number of streams for a certain stream.
|
protected static NStreamQueryPlanBuilder.BestChainResult |
computeBestPath(int lookupStream,
QueryGraphForge queryGraph,
DependencyGraph dependencyGraph)
Compute a best chain or path for lookups to take for the lookup stream passed in and the query
property relationships.
|
protected static int |
computeNavigableDepth(int lookupStream,
int[] nextStreams,
QueryGraphForge queryGraph)
Given a chain of streams to look up and indexing information, compute the index within the
chain of the first non-index lookup.
|
static TableLookupPlanForge |
createLookupPlan(QueryGraphForge queryGraph,
int currentLookupStream,
int indexedStream,
boolean indexedStreamIsVDW,
QueryPlanIndexForge indexSpecs,
EventType[] typesPerStream,
TableMetaData indexedStreamTableMeta)
Create the table lookup plan for a from-stream to look up in an indexed stream
using the columns supplied in the query graph and looking at the actual indexes available
and their index number.
|
protected static QueryPlanNodeForge |
createStreamPlan(int lookupStream,
int[] bestChain,
QueryGraphForge queryGraph,
QueryPlanIndexForge[] indexSpecsPerStream,
EventType[] typesPerStream,
boolean[] isHistorical,
HistoricalStreamIndexListForge[] historicalStreamIndexLists,
TableMetaData[] tablesPerStream,
StreamJoinAnalysisResultCompileTime streamJoinAnalysisResult)
Walks the chain of lookups and constructs lookup strategy and plan specification based
on the index specifications.
|
protected static boolean |
isDependencySatisfied(int lookupStream,
int[] permutation,
DependencyGraph dependencyGraph)
Determine if the proposed permutation of lookups passes dependencies
|
protected static QueryPlanForge build(QueryGraphForge queryGraph, EventType[] typesPerStream, HistoricalViewableDesc historicalViewableDesc, DependencyGraph dependencyGraph, HistoricalStreamIndexListForge[] historicalStreamIndexLists, boolean hasForceNestedIter, String[][][] indexedStreamsUniqueProps, TableMetaData[] tablesPerStream, StreamJoinAnalysisResultCompileTime streamJoinAnalysisResult)
protected static QueryPlanNodeForge createStreamPlan(int lookupStream, int[] bestChain, QueryGraphForge queryGraph, QueryPlanIndexForge[] indexSpecsPerStream, EventType[] typesPerStream, boolean[] isHistorical, HistoricalStreamIndexListForge[] historicalStreamIndexLists, TableMetaData[] tablesPerStream, StreamJoinAnalysisResultCompileTime streamJoinAnalysisResult)
lookupStream
- - the stream to construct the query plan forbestChain
- - the chain that the lookup follows to make best use of indexesqueryGraph
- - the repository for key properties to indexesindexSpecsPerStream
- - specifications of indexestypesPerStream
- - event types for each streamisHistorical
- - indicator for each stream if it is a historical streams or nothistoricalStreamIndexLists
- - index management, populated for the query plantablesPerStream
- tablesstreamJoinAnalysisResult
- stream join analysispublic static TableLookupPlanForge createLookupPlan(QueryGraphForge queryGraph, int currentLookupStream, int indexedStream, boolean indexedStreamIsVDW, QueryPlanIndexForge indexSpecs, EventType[] typesPerStream, TableMetaData indexedStreamTableMeta)
queryGraph
- - contains properties joining the 2 streamscurrentLookupStream
- - stream to use key values fromindexedStream
- - stream to look up inindexSpecs
- - index specification defining indexes to be created for streamtypesPerStream
- - event types for each streamindexedStreamTableMeta
- table infoindexedStreamIsVDW
- vdw indicatorsprotected static NStreamQueryPlanBuilder.BestChainResult computeBestPath(int lookupStream, QueryGraphForge queryGraph, DependencyGraph dependencyGraph)
NumberSetPermutationEnumeration
until a path is found in which all streams can be accessed via an index.
If not such path is found, the method returns the path with the greatest depth, ie. where
the first one or more streams are index accesses.
If no depth other then zero is found, returns the default nesting order.lookupStream
- - stream to start look upqueryGraph
- - navigability between streamsdependencyGraph
- - dependencies between historical streamsprotected static boolean isDependencySatisfied(int lookupStream, int[] permutation, DependencyGraph dependencyGraph)
lookupStream
- stream to initiatepermutation
- permutation of lookupsdependencyGraph
- dependenciesprotected static int computeNavigableDepth(int lookupStream, int[] nextStreams, QueryGraphForge queryGraph)
lookupStream
- - stream to start lookup fornextStreams
- - list of stream numbers next in lookupqueryGraph
- - indexing informationprotected static int[] buildDefaultNestingOrder(int numStreams, int forStream)
numStreams
- - number of streamsforStream
- - stream to generate a nesting order forCopyright © 2005–2018. All rights reserved.