public SubordSortedTableLookupStrategyFactory( bool isNWOnTrigger, int numStreams, string expression, QueryGraphValueEntryRange range) { this._expression = expression; strategy = SortedAccessStrategyFactory.Make(isNWOnTrigger, -1, numStreams, range); }
public SortedTableLookupStrategy( int lookupStream, int numStreams, QueryGraphValueEntryRange rangeKeyPair, PropertySortedEventTable index) { this._index = index; this._strategy = SortedAccessStrategyFactory.Make(false, lookupStream, numStreams, rangeKeyPair); }
public SortedTableLookupPlanFactory( int lookupStream, int indexedStream, TableLookupIndexReqKey[] indexNum, QueryGraphValueEntryRange rangeKeyPair) : base(lookupStream, indexedStream, indexNum) { this.rangeKeyPair = rangeKeyPair; }
public CompositeIndexQueryRange( bool isNWOnTrigger, int lookupStream, int numStreams, QueryGraphValueEntryRange rangeProp) { if (rangeProp.Type.IsRange()) { var rangeIn = (QueryGraphValueEntryRangeIn) rangeProp; var start = rangeIn.ExprStart; var includeStart = rangeProp.Type.IsIncludeStart(); var end = rangeIn.ExprEnd; var includeEnd = rangeProp.Type.IsIncludeEnd(); if (!rangeProp.Type.IsRangeInverted()) { _strategy = new CompositeAccessStrategyRangeNormal( isNWOnTrigger, lookupStream, numStreams, start, includeStart, end, includeEnd, rangeIn.IsAllowRangeReversal); } else { _strategy = new CompositeAccessStrategyRangeInverted( isNWOnTrigger, lookupStream, numStreams, start, includeStart, end, includeEnd); } } else { var relOp = (QueryGraphValueEntryRangeRelOp) rangeProp; var key = relOp.Expression; if (rangeProp.Type == QueryGraphRangeEnum.GREATER_OR_EQUAL) { _strategy = new CompositeAccessStrategyGE(isNWOnTrigger, lookupStream, numStreams, key); } else if (rangeProp.Type == QueryGraphRangeEnum.GREATER) { _strategy = new CompositeAccessStrategyGT(isNWOnTrigger, lookupStream, numStreams, key); } else if (rangeProp.Type == QueryGraphRangeEnum.LESS_OR_EQUAL) { _strategy = new CompositeAccessStrategyLE(isNWOnTrigger, lookupStream, numStreams, key); } else if (rangeProp.Type == QueryGraphRangeEnum.LESS) { _strategy = new CompositeAccessStrategyLT(isNWOnTrigger, lookupStream, numStreams, key); } else { throw new ArgumentException("Comparison operator " + rangeProp.Type + " not supported"); } } }
public static SortedAccessStrategy Make( bool isNWOnTrigger, int lookupStream, int numStreams, QueryGraphValueEntryRange rangeKeyPair) { if (rangeKeyPair.Type.IsRange()) { QueryGraphValueEntryRangeIn rangeIn = (QueryGraphValueEntryRangeIn) rangeKeyPair; ExprEvaluator startExpr = rangeIn.ExprStart; ExprEvaluator endExpr = rangeIn.ExprEnd; bool includeStart = rangeKeyPair.Type.IsIncludeStart(); bool includeEnd = rangeKeyPair.Type.IsIncludeEnd(); if (!rangeKeyPair.Type.IsRangeInverted()) { return new SortedAccessStrategyRange( isNWOnTrigger, lookupStream, numStreams, startExpr, includeStart, endExpr, includeEnd, rangeIn.IsAllowRangeReversal); } else { return new SortedAccessStrategyRangeInverted( isNWOnTrigger, lookupStream, numStreams, startExpr, includeStart, endExpr, includeEnd); } } else { QueryGraphValueEntryRangeRelOp relOp = (QueryGraphValueEntryRangeRelOp) rangeKeyPair; ExprEvaluator keyExpr = relOp.Expression; if (rangeKeyPair.Type == QueryGraphRangeEnum.GREATER_OR_EQUAL) { return new SortedAccessStrategyGE(isNWOnTrigger, lookupStream, numStreams, keyExpr); } else if (rangeKeyPair.Type == QueryGraphRangeEnum.GREATER) { return new SortedAccessStrategyGT(isNWOnTrigger, lookupStream, numStreams, keyExpr); } else if (rangeKeyPair.Type == QueryGraphRangeEnum.LESS_OR_EQUAL) { return new SortedAccessStrategyLE(isNWOnTrigger, lookupStream, numStreams, keyExpr); } else if (rangeKeyPair.Type == QueryGraphRangeEnum.LESS) { return new SortedAccessStrategyLT(isNWOnTrigger, lookupStream, numStreams, keyExpr); } else { throw new ArgumentException("Comparison operator " + rangeKeyPair.Type + " not supported"); } } }
public CompositeIndexQueryRange(bool isNWOnTrigger, int lookupStream, int numStreams, SubordPropRangeKey subqRangeKey, Type coercionType, IList <String> expressionTexts) { QueryGraphValueEntryRange rangeProp = subqRangeKey.RangeInfo; if (rangeProp.RangeType.IsRange()) { var rangeIn = (QueryGraphValueEntryRangeIn)rangeProp; var start = rangeIn.ExprStart.ExprEvaluator; expressionTexts.Add(ExprNodeUtility.ToExpressionStringMinPrecedenceSafe(rangeIn.ExprStart)); var includeStart = rangeProp.RangeType.IsIncludeStart(); var end = rangeIn.ExprEnd.ExprEvaluator; expressionTexts.Add(ExprNodeUtility.ToExpressionStringMinPrecedenceSafe(rangeIn.ExprEnd)); var includeEnd = rangeProp.RangeType.IsIncludeEnd(); if (!rangeProp.RangeType.IsRangeInverted()) { _strategy = new CompositeAccessStrategyRangeNormal( isNWOnTrigger, lookupStream, numStreams, start, includeStart, end, includeEnd, coercionType, ((QueryGraphValueEntryRangeIn)rangeProp).IsAllowRangeReversal); } else { _strategy = new CompositeAccessStrategyRangeInverted( isNWOnTrigger, lookupStream, numStreams, start, includeStart, end, includeEnd, coercionType); } } else { var relOp = (QueryGraphValueEntryRangeRelOp)rangeProp; var key = relOp.Expression.ExprEvaluator; expressionTexts.Add(ExprNodeUtility.ToExpressionStringMinPrecedenceSafe(relOp.Expression)); if (rangeProp.RangeType == QueryGraphRangeEnum.GREATER_OR_EQUAL) { _strategy = new CompositeAccessStrategyGE(isNWOnTrigger, lookupStream, numStreams, key, coercionType); } else if (rangeProp.RangeType == QueryGraphRangeEnum.GREATER) { _strategy = new CompositeAccessStrategyGT(isNWOnTrigger, lookupStream, numStreams, key, coercionType); } else if (rangeProp.RangeType == QueryGraphRangeEnum.LESS_OR_EQUAL) { _strategy = new CompositeAccessStrategyLE(isNWOnTrigger, lookupStream, numStreams, key, coercionType); } else if (rangeProp.RangeType == QueryGraphRangeEnum.LESS) { _strategy = new CompositeAccessStrategyLT(isNWOnTrigger, lookupStream, numStreams, key, coercionType); } else { throw new ArgumentException("Comparison operator " + rangeProp.RangeType + " not supported"); } } }
public JoinExecTableLookupStrategyVirtualDW( string namedWindowName, VirtualDataWindowLookup externalIndex, TableLookupPlan tableLookupPlan) { this.namedWindowName = namedWindowName; this.externalIndex = externalIndex; lookupStream = tableLookupPlan.LookupStream; var hashKeys = tableLookupPlan.VirtualDWHashEvals; if (hashKeys == null) { hashKeys = new ExprEvaluator[0]; } var rangeKeys = tableLookupPlan.VirtualDWRangeEvals; if (rangeKeys == null) { rangeKeys = new QueryGraphValueEntryRange[0]; } evaluators = new ExternalEvaluator[hashKeys.Length + rangeKeys.Length]; eventsPerStream = new EventBean[lookupStream + 1]; var count = 0; foreach (var hashKey in hashKeys) { evaluators[count] = new ExternalEvaluatorHashRelOp(hashKey); count++; } foreach (var rangeKey in rangeKeys) { if (rangeKey.Type.IsRange()) { var range = (QueryGraphValueEntryRangeIn) rangeKey; var evaluatorStart = range.ExprStart; var evaluatorEnd = range.ExprEnd; evaluators[count] = new ExternalEvaluatorBtreeRange(evaluatorStart, evaluatorEnd); } else { var relOp = (QueryGraphValueEntryRangeRelOp) rangeKey; var evaluator = relOp.Expression; evaluators[count] = new ExternalEvaluatorHashRelOp(evaluator); } count++; } }
/// <summary> /// Ctor. /// </summary> /// <param name="lookupStream">The lookup stream.</param> /// <param name="property">The property.</param> public HistoricalIndexLookupStrategySorted(int lookupStream, QueryGraphValueEntryRange property) { _strategy = SortedAccessStrategyFactory.Make(false, lookupStream, -1, property, null); }
public static SortedAccessStrategy Make(bool isNWOnTrigger, int lookupStream, int numStreams, QueryGraphValueEntryRange rangeKeyPair, Type coercionType) { return(Make(isNWOnTrigger, lookupStream, numStreams, new SubordPropRangeKey(rangeKeyPair, coercionType))); }
public SubordPropRangeKey(QueryGraphValueEntryRange rangeInfo, Type coercionType) { RangeInfo = rangeInfo; CoercionType = coercionType; }
private static void CompareIndexDescRange(QueryGraphValueEntryRange expected, QueryGraphValueEntryRange actual) { Assert.AreEqual(expected.ToQueryPlan(), actual.ToQueryPlan()); }
/// <summary> /// Ctor. /// </summary> /// <param name="lookupStream">The lookup stream.</param> /// <param name="numStreams">The num streams.</param> /// <param name="rangeKeyPair">The range key pair.</param> /// <param name="coercionType">Type of the coercion.</param> /// <param name="index">index to look up in</param> public SortedTableLookupStrategy(int lookupStream, int numStreams, QueryGraphValueEntryRange rangeKeyPair, Type coercionType, PropertySortedEventTable index) { _rangeKeyPair = rangeKeyPair; _index = index; _strategy = SortedAccessStrategyFactory.Make(false, lookupStream, numStreams, rangeKeyPair, coercionType); }