コード例 #1
0
        public static Pair<ResultSetProcessor, AggregationService> StartResultSetAndAggregation(
            ResultSetProcessorFactoryProvider resultSetProcessorPrototype,
            AgentInstanceContext agentInstanceContext,
            bool isSubquery,
            int? subqueryNumber)
        {
            AggregationService aggregationService = null;
            if (resultSetProcessorPrototype.AggregationServiceFactory != null) {
                aggregationService = resultSetProcessorPrototype.AggregationServiceFactory.MakeService(
                    agentInstanceContext,
                    null,
                    isSubquery,
                    subqueryNumber,
                    null);
            }

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

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

            return new Pair<ResultSetProcessor, AggregationService>(resultSetProcessor, aggregationService);
        }
コード例 #2
0
        protected internal static ResultSetProcessor ProcessorWithAssign(
            ResultSetProcessorFactoryProvider processorProvider,
            AgentInstanceContext agentInstanceContext,
            FAFQueryMethodAssignerSetter assignerSetter,
            IDictionary<int, ExprTableEvalStrategyFactory> tableAccesses,
            IDictionary<int, SubSelectFactory> subselects)
        {
            // start table-access
            var tableAccessEvals = ExprTableEvalHelperStart.StartTableAccess(tableAccesses, agentInstanceContext);

            // get RSP
            var pair = StatementAgentInstanceFactoryUtil.StartResultSetAndAggregation(
                processorProvider,
                agentInstanceContext,
                false,
                null);
            
            // start subselects
            var subselectStopCallbacks = new List<AgentInstanceMgmtCallback>(2);
            IDictionary<int, SubSelectFactoryResult> subselectActivations = SubSelectHelperStart.StartSubselects(
                subselects, agentInstanceContext, subselectStopCallbacks, false);

            // assign
            assignerSetter.Assign(
                new StatementAIFactoryAssignmentsImpl(
                    pair.Second,
                    null,
                    null,
                    subselectActivations,
                    tableAccessEvals,
                    null));

            return pair.First;
        }
コード例 #3
0
        protected internal static ResultSetProcessor ProcessorWithAssign(
            ResultSetProcessorFactoryProvider processorProvider,
            AgentInstanceContext agentInstanceContext,
            FAFQueryMethodAssignerSetter assignerSetter,
            IDictionary<int, ExprTableEvalStrategyFactory> tableAccesses)
        {
            // start table-access
            var tableAccessEvals = ExprTableEvalHelperStart.StartTableAccess(tableAccesses, agentInstanceContext);

            // get RSP
            var pair = StatementAgentInstanceFactoryUtil.StartResultSetAndAggregation(
                processorProvider,
                agentInstanceContext,
                false,
                null);

            // assign
            assignerSetter.Assign(
                new StatementAIFactoryAssignmentsImpl(
                    pair.Second,
                    null,
                    null,
                    Collections.GetEmptyMap<int, SubSelectFactoryResult>(),
                    tableAccessEvals,
                    null));

            return pair.First;
        }
コード例 #4
0
 public InfraOnSelectViewFactory(
     EventType infraEventType,
     bool addToFront,
     bool isDistinct,
     EventPropertyValueGetter distinctKeyGetter,
     bool selectAndDelete,
     StreamSelector? optionalStreamSelector,
     Table optionalInsertIntoTable,
     bool insertInto,
     ResultSetProcessorFactoryProvider resultSetProcessorPrototype)
     : base(infraEventType)
 {
     IsAddToFront = addToFront;
     IsDistinct = isDistinct;
     DistinctKeyGetter = distinctKeyGetter;
     IsSelectAndDelete = selectAndDelete;
     OptionalStreamSelector = optionalStreamSelector;
     this.optionalInsertIntoTable = optionalInsertIntoTable;
     IsInsertInto = insertInto;
     this.resultSetProcessorPrototype = resultSetProcessorPrototype;
 }