[This topic is pre-release documentation and is subject to change in future releases. Blank topics are included as placeholders.]

2 Stream query strategy/execution tree (stream 0) Lookup in stream 1 (stream 1) Lookup in stream 0 ------ Example 1 a 3 table join " where streamA.id = streamB.id " + " and streamB.id = streamC.id"; => Index propery names for each stream for stream 0 to 4 = "id" => join order, ie. for stream 0 = {1, 2} for stream 1 = {factor [0,2]} for stream 2 = {1, 0} => IndexKeyGen optionalIndexKeyGen, created by nested query plan nodes 3 Stream query strategy (stream 0) Nested iteration Lookup in stream 1 Lookup in stream 2 (stream 1) Factor Lookup in stream 0 Lookup in stream 2 (stream 2) Nested iteration Lookup in stream 1 Lookup in stream 0 ------ Example 2 a 4 table join " where streamA.id = streamB.id " + " and streamB.id = streamC.id"; " and streamC.id = streamD.id"; => join order, ie. for stream 0 = {1, 2, 3} for stream 1 = {factor [0,2], use 2 for 3} for stream 2 = {factor [1,3], use 1 for 0} for stream 3 = {2, 1, 0} concepts... nested iteration, inner loop select * from s1, s2, s3, s4 where s1.id=s2.id and s2.id=s3.id and s3.id=s4.id (stream 0) Nested iteration Lookup in stream 1 Lookup in stream 2 Lookup in stream 3 (stream 1) Factor lookup in stream 0 Nested iteration Lookup in stream 2 Lookup in stream 3 (stream 2) Factor lookup in stream 3 Nested iteration Lookup in stream 1 Lookup in stream 0 (stream 3) Nested iteration Lookup in stream 2 Lookup in stream 1 Lookup in stream 0 ------ Example 4 a 4 table join, orphan table " where streamA.id = streamB.id " + " and streamB.id = streamC.id"; (no table D join criteria) ------ Example 5 a 3 table join with 2 indexes for stream B " where streamA.A1 = streamB.B1 " + " and streamB.B2 = streamC.C1"; (no table D join criteria)

Builds a query plan for 3 or more streams in a join.

The following tables list the members exposed by the NStreamQueryPlanBuilder type.

Public Methods

  NameDescription
static memberBuild
Build a query plan based on the stream property relationships indicated in queryGraph.

static memberBuildDefaultNestingOrder
Returns default nesting order for a given number of streams for a certain stream. Example: numStreams = 5, forStream = 2, result = {0, 1, 3, 4} The resulting array has all streams except the forStream, in ascdending order.

static memberBuildNStreamDefaultQuerySpec
Returns query plan based on all unindexed full table lookups and lookups based on a simple nesting order.

static memberComputeBestPath
Compute a best chain or path for lookups to take for the lookup stream passed in and the query property relationships. The method runs through all possible permutations of lookup path net.esper.collection.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.

static memberComputeNavigableDepth
Given a chain of streams to look up and indexing information, compute the index within the chain of the first non-index lookup.

static memberCreateLookupPlan
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.

static memberCreateStreamPlan
Walks the chain of lookups and constructs lookup strategy and plan specification based on the index specifications.

Equals (Inherited from Object.)
GetHashCode (Inherited from Object.)
GetType (Inherited from Object.)
ToString (Inherited from Object.)

Protected Methods

  NameDescription
Finalize (Inherited from Object.)
MemberwiseClone (Inherited from Object.)