[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
Determines whether the specified Object is equal to the current Object.
(Inherited from Object.)
GetHashCode
Serves as a hash function for a particular type. GetHashCode() is suitable for use in hashing algorithms and data structures like a hash table.
(Inherited from Object.)
GetType
Gets the Type of the current instance.
(Inherited from Object.)
ToString
Returns a String that represents the current Object.
(Inherited from Object.)

Protected Methods

  NameDescription
Finalize
Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.
(Inherited from Object.)
MemberwiseClone
Creates a shallow copy of the current Object.
(Inherited from Object.)