public JoinExecTableLookupStrategyVirtualDW(String namedWindowName, VirtualDataWindowLookup externalIndex, TableLookupKeyDesc keyDescriptor, int lookupStream) { _namedWindowName = namedWindowName; _externalIndex = externalIndex; _evaluators = new ExternalEvaluator[keyDescriptor.Hashes.Count + keyDescriptor.Ranges.Count]; _eventsPerStream = new EventBean[lookupStream + 1]; _lookupStream = lookupStream; var count = 0; foreach (var hashKey in keyDescriptor.Hashes) { var evaluator = hashKey.KeyExpr.ExprEvaluator; _evaluators[count] = new ExternalEvaluatorHashRelOp(evaluator); count++; } foreach (var rangeKey in keyDescriptor.Ranges) { if (rangeKey.RangeType.IsRange()) { var range = (QueryGraphValueEntryRangeIn)rangeKey; var evaluatorStart = range.ExprStart.ExprEvaluator; var evaluatorEnd = range.ExprEnd.ExprEvaluator; _evaluators[count] = new ExternalEvaluatorBtreeRange(evaluatorStart, evaluatorEnd); } else { var relOp = (QueryGraphValueEntryRangeRelOp)rangeKey; var evaluator = relOp.Expression.ExprEvaluator; _evaluators[count] = new ExternalEvaluatorHashRelOp(evaluator); } count++; } }
private void CheckIndex(VirtualDataWindowLookup index) { if (index == null) { throw new EPException( "Exception obtaining index lookup from virtual data window, the implementation has returned a null index"); } }
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++; } }
public SubordTableLookupStrategyVDW( VirtualDWViewFactory factory, SubordTableLookupStrategyFactoryVDW subordTableFactory, VirtualDataWindowLookup externalIndex) { this.factory = factory; this.externalIndex = externalIndex; nwOnTrigger = subordTableFactory.IsNwOnTrigger; var hashKeys = subordTableFactory.HashEvals; var hashCoercionTypes = subordTableFactory.HashCoercionTypes; var rangeKeys = subordTableFactory.RangeEvals; var rangeCoercionTypes = subordTableFactory.RangeCoercionTypes; evaluators = new ExternalEvaluator[hashKeys.Length + rangeKeys.Length]; eventsLocal = new EventBean[subordTableFactory.NumOuterStreams + 1]; var count = 0; foreach (var hashKey in hashKeys) { evaluators[count] = new ExternalEvaluatorHashRelOp(hashKeys[count], hashCoercionTypes[count]); count++; } for (var i = 0; i < rangeKeys.Length; i++) { var rangeKey = rangeKeys[i]; if (rangeKey.Type.IsRange()) { var range = (QueryGraphValueEntryRangeIn) rangeKey; var evaluatorStart = range.ExprStart; var evaluatorEnd = range.ExprEnd; evaluators[count] = new ExternalEvaluatorBtreeRange( evaluatorStart, evaluatorEnd, rangeCoercionTypes[i]); } else { var relOp = (QueryGraphValueEntryRangeRelOp) rangeKey; var evaluator = relOp.Expression; evaluators[count] = new ExternalEvaluatorHashRelOp(evaluator, rangeCoercionTypes[i]); } count++; } }
public SubordTableLookupStrategyVirtualDW( String namedWindowName, VirtualDataWindowLookup externalIndex, IList <SubordPropHashKey> hashKeys, CoercionDesc hashKeyCoercionTypes, IList <SubordPropRangeKey> rangeKeys, CoercionDesc rangeKeyCoercionTypes, bool nwOnTrigger, int numOuterStreams) { _namedWindowName = namedWindowName; _externalIndex = externalIndex; _evaluators = new ExternalEvaluator[hashKeys.Count + rangeKeys.Count]; _nwOnTrigger = nwOnTrigger; _eventsLocal = new EventBean[numOuterStreams + 1]; var count = 0; foreach (var hashKey in hashKeys) { var evaluator = hashKey.HashKey.KeyExpr.ExprEvaluator; _evaluators[count] = new ExternalEvaluatorHashRelOp(evaluator, hashKeyCoercionTypes.CoercionTypes[count]); count++; } for (var i = 0; i < rangeKeys.Count; i++) { SubordPropRangeKey rangeKey = rangeKeys[i]; if (rangeKey.RangeInfo.RangeType.IsRange()) { var range = (QueryGraphValueEntryRangeIn)rangeKey.RangeInfo; var evaluatorStart = range.ExprStart.ExprEvaluator; var evaluatorEnd = range.ExprEnd.ExprEvaluator; _evaluators[count] = new ExternalEvaluatorBtreeRange(evaluatorStart, evaluatorEnd, rangeKeyCoercionTypes.CoercionTypes[i]); } else { var relOp = (QueryGraphValueEntryRangeRelOp)rangeKey.RangeInfo; var evaluator = relOp.Expression.ExprEvaluator; _evaluators[count] = new ExternalEvaluatorHashRelOp(evaluator, rangeKeyCoercionTypes.CoercionTypes[i]); } count++; } }