Exemplo n.º 1
0
 public EPStatementStartMethodSelectDesc(
     StatementAgentInstanceFactorySelect statementAgentInstanceFactorySelect,
     SubSelectStrategyCollection subSelectStrategyCollection,
     ViewResourceDelegateUnverified viewResourceDelegateUnverified,
     ResultSetProcessorFactoryDesc resultSetProcessorPrototypeDesc,
     EPStatementStopMethod stopMethod,
     EPStatementDestroyCallbackList destroyCallbacks)
 {
     StatementAgentInstanceFactorySelect = statementAgentInstanceFactorySelect;
     SubSelectStrategyCollection         = subSelectStrategyCollection;
     ViewResourceDelegateUnverified      = viewResourceDelegateUnverified;
     ResultSetProcessorPrototypeDesc     = resultSetProcessorPrototypeDesc;
     StopMethod       = stopMethod;
     DestroyCallbacks = destroyCallbacks;
 }
Exemplo n.º 2
0
        public override OnExprViewResult DetermineOnExprView(
            AgentInstanceContext agentInstanceContext,
            IList <StopCallback> stopCallbacks,
            bool isRecoveringReslient)
        {
            var processors = new ResultSetProcessor[_items.Length];

            for (int i = 0; i < processors.Length; i++)
            {
                ResultSetProcessorFactoryDesc factory   = _items[i].FactoryDesc;
                ResultSetProcessor            processor = factory.ResultSetProcessorFactory.Instantiate(
                    null, null, agentInstanceContext);
                processors[i] = processor;
            }

            var tableStateInstances = new TableStateInstance[processors.Length];

            for (int i = 0; i < _items.Length; i++)
            {
                string tableName = _items[i].InsertIntoTableNames;
                if (tableName != null)
                {
                    tableStateInstances[i] = agentInstanceContext.StatementContext.TableService.GetState(
                        tableName, agentInstanceContext.AgentInstanceId);
                }
            }

            var whereClauseEvals = new ExprEvaluator[_items.Length];

            for (int i = 0; i < _items.Length; i++)
            {
                whereClauseEvals[i] = _items[i].WhereClause == null ? null : _items[i].WhereClause.ExprEvaluator;
            }

            var desc = (OnTriggerSplitStreamDesc)base.StatementSpec.OnTriggerDesc;
            var view = new RouteResultView(
                desc.IsFirst, _activatorResultEventType, base.StatementContext.EpStatementHandle, base.Services.InternalEventRouter,
                tableStateInstances, _items, processors, whereClauseEvals, agentInstanceContext);

            return(new OnExprViewResult(view, null));
        }
        public static ResultSetProcessor GetAssignResultSetProcessor(
            AgentInstanceContext agentInstanceContext,
            ResultSetProcessorFactoryDesc resultSetProcessorPrototype,
            bool isSubquery,
            int? subqueryNumber,
            bool isFireAndForget)
        {
            AggregationService aggregationService = null;
            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                aggregationService =
                    resultSetProcessorPrototype.AggregationServiceFactoryDesc.AggregationServiceFactory.MakeService(
                        agentInstanceContext, agentInstanceContext.StatementContext.EngineImportService, isSubquery,
                        subqueryNumber);
            }

            OrderByProcessor orderByProcessor = null;
            if (resultSetProcessorPrototype.OrderByProcessorFactory != null)
            {
                orderByProcessor = resultSetProcessorPrototype.OrderByProcessorFactory.Instantiate(
                    aggregationService, agentInstanceContext);
            }

            var processor = resultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(
                    orderByProcessor, aggregationService, agentInstanceContext);

            // initialize aggregation expression nodes
            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                foreach (var aggregation in resultSetProcessorPrototype.AggregationServiceFactoryDesc.Expressions)
                {
                    aggregation.AssignFuture(aggregationService);
                }
            }

            return processor;
        }
        public StatementAgentInstanceFactoryOnTriggerNamedWindow(StatementContext statementContext, StatementSpecCompiled statementSpec, EPServicesContext services, ViewableActivator activator, SubSelectStrategyCollection subSelectStrategyCollection, ResultSetProcessorFactoryDesc resultSetProcessorPrototype, ExprNode validatedJoin, ResultSetProcessorFactoryDesc outputResultSetProcessorPrototype, NamedWindowOnExprFactory onExprFactory, OutputProcessViewFactory outputProcessViewFactory, EventType activatorResultEventType, NamedWindowProcessor processor, IList <StopCallback> stopCallbacks)
            : base(statementContext, statementSpec, services, activator, subSelectStrategyCollection)
        {
            _resultSetProcessorPrototype       = resultSetProcessorPrototype;
            _outputResultSetProcessorPrototype = outputResultSetProcessorPrototype;
            _onExprFactory            = onExprFactory;
            _outputProcessViewFactory = outputProcessViewFactory;
            _processor = processor;

            IndexHintPair   pair            = GetIndexHintPair(statementContext, statementSpec);
            IndexHint       indexHint       = pair.IndexHint;
            ExcludePlanHint excludePlanHint = pair.ExcludePlanHint;

            _queryPlan = SubordinateQueryPlanner.PlanOnExpression(
                validatedJoin, activatorResultEventType, indexHint, processor.IsEnableSubqueryIndexShare, -1, excludePlanHint,
                processor.IsVirtualDataWindow, processor.EventTableIndexMetadataRepo, processor.NamedWindowType,
                processor.OptionalUniqueKeyProps, false, statementContext.StatementName, statementContext.StatementId, statementContext.Annotations);
            if (_queryPlan.IndexDescs != null)
            {
                SubordinateQueryPlannerUtil.AddIndexMetaAndRef(_queryPlan.IndexDescs, processor.EventTableIndexMetadataRepo, statementContext.StatementName);
                stopCallbacks.Add(new ProxyStopCallback(() =>
                {
                    for (int i = 0; i < _queryPlan.IndexDescs.Length; i++)
                    {
                        bool last = processor.EventTableIndexMetadataRepo.RemoveIndexReference(_queryPlan.IndexDescs[i].IndexMultiKey, statementContext.StatementName);
                        if (last)
                        {
                            processor.EventTableIndexMetadataRepo.RemoveIndex(_queryPlan.IndexDescs[i].IndexMultiKey);
                            processor.RemoveAllInstanceIndexes(_queryPlan.IndexDescs[i].IndexMultiKey);
                        }
                    }
                }));
            }
            SubordinateQueryPlannerUtil.QueryPlanLogOnExpr(processor.RootView.IsQueryPlanLogging, NamedWindowRootView.QueryPlanLog,
                                                           _queryPlan, statementContext.Annotations, statementContext.EngineImportService);
        }
Exemplo n.º 5
0
 public StatementAgentInstanceFactoryCreateWindow(StatementContext statementContext, StatementSpecCompiled statementSpec, EPServicesContext services, ViewableActivator activator, ViewFactoryChain unmaterializedViewChain, ResultSetProcessorFactoryDesc resultSetProcessorPrototype, OutputProcessViewFactory outputProcessViewFactory, bool recoveringStatement)
     : base(statementContext.Annotations)
 {
     _statementContext            = statementContext;
     _statementSpec               = statementSpec;
     _services                    = services;
     _activator                   = activator;
     _unmaterializedViewChain     = unmaterializedViewChain;
     _resultSetProcessorPrototype = resultSetProcessorPrototype;
     _outputProcessViewFactory    = outputProcessViewFactory;
     _isRecoveringStatement       = recoveringStatement;
 }
 public StatementAgentInstanceFactoryOnTriggerSetVariable(StatementContext statementContext, StatementSpecCompiled statementSpec, EPServicesContext services, ViewableActivator activator, SubSelectStrategyCollection subSelectStrategyCollection, OnSetVariableViewFactory onSetVariableViewFactory, ResultSetProcessorFactoryDesc outputResultSetProcessorPrototype, OutputProcessViewFactory outputProcessViewFactory)
     : base(statementContext, statementSpec, services, activator, subSelectStrategyCollection)
 {
     _onSetVariableViewFactory          = onSetVariableViewFactory;
     _outputResultSetProcessorPrototype = outputResultSetProcessorPrototype;
     _outputProcessViewFactory          = outputProcessViewFactory;
 }
Exemplo n.º 7
0
        public static Pair <ResultSetProcessor, AggregationService> StartResultSetAndAggregation(ResultSetProcessorFactoryDesc resultSetProcessorPrototype, AgentInstanceContext agentInstanceContext, bool isSubquery, int?subqueryNumber)
        {
            AggregationService aggregationService = null;

            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                aggregationService =
                    resultSetProcessorPrototype.AggregationServiceFactoryDesc.AggregationServiceFactory.MakeService(
                        agentInstanceContext, agentInstanceContext.StatementContext.EngineImportService, isSubquery, subqueryNumber);
            }

            OrderByProcessor orderByProcessor = null;

            if (resultSetProcessorPrototype.OrderByProcessorFactory != null)
            {
                orderByProcessor = resultSetProcessorPrototype.OrderByProcessorFactory.Instantiate(aggregationService, agentInstanceContext);
            }

            ResultSetProcessor resultSetProcessor = resultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(orderByProcessor, aggregationService, agentInstanceContext);

            return(new Pair <ResultSetProcessor, AggregationService>(resultSetProcessor, aggregationService));
        }
Exemplo n.º 8
0
        public StatementAgentInstanceFactoryOnTriggerTable(StatementContext statementContext, StatementSpecCompiled statementSpec, EPServicesContext services, ViewableActivator activator, SubSelectStrategyCollection subSelectStrategyCollection, ResultSetProcessorFactoryDesc resultSetProcessorPrototype, ExprNode validatedJoin, TableOnViewFactory onExprFactory, EventType activatorResultEventType, TableMetadata tableMetadata, ResultSetProcessorFactoryDesc outputResultSetProcessorPrototype, OutputProcessViewFactory outputProcessViewFactory)
            : base(statementContext, statementSpec, services, activator, subSelectStrategyCollection)
        {
            _resultSetProcessorPrototype = resultSetProcessorPrototype;
            _onExprFactory = onExprFactory;
            _outputResultSetProcessorPrototype = outputResultSetProcessorPrototype;
            _outputProcessViewFactory          = outputProcessViewFactory;

            var pair            = StatementAgentInstanceFactoryOnTriggerNamedWindow.GetIndexHintPair(statementContext, statementSpec);
            var indexHint       = pair.IndexHint;
            var excludePlanHint = pair.ExcludePlanHint;

            _queryPlanResult = SubordinateQueryPlanner.PlanOnExpression(
                validatedJoin, activatorResultEventType, indexHint, true, -1, excludePlanHint,
                false, tableMetadata.EventTableIndexMetadataRepo, tableMetadata.InternalEventType,
                tableMetadata.UniqueKeyProps, true, statementContext.StatementName, statementContext.StatementId, statementContext.Annotations);
            if (_queryPlanResult.IndexDescs != null)
            {
                for (var i = 0; i < _queryPlanResult.IndexDescs.Length; i++)
                {
                    tableMetadata.AddIndexReference(_queryPlanResult.IndexDescs[i].IndexName, statementContext.StatementName);
                }
            }
            SubordinateQueryPlannerUtil.QueryPlanLogOnExpr(tableMetadata.IsQueryPlanLogging, TableServiceImpl.QueryPlanLog,
                                                           _queryPlanResult, statementContext.Annotations);
        }
        public static Pair <ResultSetProcessor, AggregationService> StartResultSetAndAggregation(ResultSetProcessorFactoryDesc resultSetProcessorPrototype, AgentInstanceContext agentInstanceContext)
        {
            AggregationService aggregationService = null;

            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                aggregationService = resultSetProcessorPrototype.AggregationServiceFactoryDesc.AggregationServiceFactory.MakeService(agentInstanceContext, agentInstanceContext.StatementContext.MethodResolutionService);
            }

            OrderByProcessor orderByProcessor = null;

            if (resultSetProcessorPrototype.OrderByProcessorFactory != null)
            {
                orderByProcessor = resultSetProcessorPrototype.OrderByProcessorFactory.Instantiate(aggregationService, agentInstanceContext);
            }

            ResultSetProcessor resultSetProcessor = resultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(orderByProcessor, aggregationService, agentInstanceContext);

            return(new Pair <ResultSetProcessor, AggregationService>(resultSetProcessor, aggregationService));
        }
        public static ResultSetProcessor GetAssignResultSetProcessor(AgentInstanceContext agentInstanceContext, ResultSetProcessorFactoryDesc resultSetProcessorPrototype)
        {
            AggregationService aggregationService = null;

            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                aggregationService = resultSetProcessorPrototype.AggregationServiceFactoryDesc.AggregationServiceFactory.MakeService(agentInstanceContext, agentInstanceContext.StatementContext.MethodResolutionService);
            }

            OrderByProcessor orderByProcessor = null;

            if (resultSetProcessorPrototype.OrderByProcessorFactory != null)
            {
                orderByProcessor = resultSetProcessorPrototype.OrderByProcessorFactory.Instantiate(
                    aggregationService, agentInstanceContext);
            }

            var processor = resultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(orderByProcessor, aggregationService, agentInstanceContext);

            // initialize aggregation expression nodes
            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                foreach (var aggregation in resultSetProcessorPrototype.AggregationServiceFactoryDesc.Expressions)
                {
                    aggregation.AssignFuture(aggregationService);
                }
            }

            return(processor);
        }