Пример #1
0
 public CodegenExpression MakeProvider(
     CodegenMethodScope parent,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     CodegenMethod method = parent.MakeChild(typeof(AggregationServiceFactoryTable), this.GetType(), classScope);
     method.Block
         .DeclareVar<AggregationServiceFactoryTable>(
             "factory",
             NewInstance(typeof(AggregationServiceFactoryTable)))
         .SetProperty(
             Ref("factory"),
             "Table",
             TableDeployTimeResolver.MakeResolveTable(metadata, symbols.GetAddInitSvc(method)))
         .SetProperty(
             Ref("factory"),
             "MethodPairs",
             TableColumnMethodPairForge.MakeArray(methodPairs, method, symbols, classScope))
         .SetProperty(Ref("factory"), "AccessColumnsZeroOffset", Constant(accessColumnsZeroOffset))
         .SetProperty(
             Ref("factory"),
             "AccessAgents",
             AggregationAgentUtil.MakeArray(accessAgents, method, symbols, classScope))
         .SetProperty(
             Ref("factory"),
             "GroupByRollupDesc",
             groupByRollupDesc == null ? ConstantNull() : groupByRollupDesc.Codegen(method, classScope))
         .MethodReturn(Ref("factory"));
     return LocalMethod(method);
 }
Пример #2
0
 protected override void MakeInlineSpecificSetter(
     CodegenExpressionRef queryMethod,
     CodegenMethod method,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     method.Block.SetProperty(
         queryMethod,
         "OptionalWhereClause",
         whereClause == null
             ? ConstantNull()
             : ExprNodeUtilityCodegen.CodegenEvaluator(whereClause.Forge, method, this.GetType(), classScope));
     if (processor is FireAndForgetProcessorNamedWindowForge) {
         method.Block.SetProperty(
             queryMethod,
             "UpdateHelperNamedWindow",
             updateHelper.MakeWCopy(method, classScope));
     }
     else {
         FireAndForgetProcessorTableForge table = (FireAndForgetProcessorTableForge) processor;
         method.Block
             .SetProperty(queryMethod, "UpdateHelperTable", updateHelper.MakeNoCopy(method, classScope))
             .SetProperty(
                 queryMethod,
                 "Table",
                 TableDeployTimeResolver.MakeResolveTable(table.Table, symbols.GetAddInitSvc(method)));
     }
 }
Пример #3
0
        public override CodegenExpression Make(
            CodegenMethodScope parent,
            SAIFFInitializeSymbol symbols,
            CodegenClassScope classScope)
        {
            var method = parent.MakeChild(typeof(InfraOnMergeActionUpd), this.GetType(), classScope);
            if (_table == null) {
                method.Block.MethodReturn(
                    NewInstance<InfraOnMergeActionUpd>(
                        MakeFilter(method, classScope),
                        _updateHelper.MakeWCopy(method, classScope)));
            }
            else {
                method.Block
                    .DeclareVar<InfraOnMergeActionUpd>(
                        "upd",
                        NewInstance<InfraOnMergeActionUpd>(
                            MakeFilter(method, classScope),
                            _updateHelper.MakeNoCopy(method, classScope),
                            TableDeployTimeResolver.MakeResolveTable(_table, symbols.GetAddInitSvc(method))))
                    .ExprDotMethod(symbols.GetAddInitSvc(method), "AddReadyCallback", Ref("upd"))
                    .MethodReturn(Ref("upd"));
            }

            return LocalMethod(method);
        }
Пример #4
0
 public CodegenExpression MakeCodegen(
     CodegenMethodScope parent,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     var method = parent.MakeChild(typeof(ViewableActivatorTable), GetType(), classScope);
     method.Block
         .DeclareVar<ViewableActivatorTable>("va", NewInstance(typeof(ViewableActivatorTable)))
         .SetProperty(
             Ref("va"),
             "Table",
             TableDeployTimeResolver.MakeResolveTable(table, symbols.GetAddInitSvc(method)))
         .SetProperty(
             Ref("va"),
             "FilterEval",
             optionalFilterExpression == null
                 ? ConstantNull()
                 : ExprNodeUtilityCodegen.CodegenEvaluator(
                     optionalFilterExpression.Forge,
                     method,
                     GetType(),
                     classScope))
         .MethodReturn(Ref("va"));
     return LocalMethod(method);
 }
        public override void InlineInitializeOnTriggerBase(
            CodegenExpressionRef saiff,
            CodegenMethod method,
            SAIFFInitializeSymbol symbols,
            CodegenClassScope classScope)
        {
            method.Block
                .SetProperty(
                    saiff,
                    "NamedWindow",
                    namedWindow == null
                        ? ConstantNull()
                        : NamedWindowDeployTimeResolver.MakeResolveNamedWindow(
                            namedWindow,
                            symbols.GetAddInitSvc(method)))
                .SetProperty(
                    saiff,
                    "Table",
                    table == null
                        ? ConstantNull()
                        : TableDeployTimeResolver.MakeResolveTable(table, symbols.GetAddInitSvc(method)))
                .SetProperty(saiff, "QueryPlan", queryPlanForge.Make(method, symbols, classScope))
                .SetProperty(
                    saiff,
                    "NonSelectRSPFactoryProvider",
                    nonSelectRSPProviderClassName == null
                        ? ConstantNull()
                        : NewInstanceInner(nonSelectRSPProviderClassName, symbols.GetAddInitSvc(method), Ref("statementFields")))
                .ExprDotMethod(symbols.GetAddInitSvc(method), "AddReadyCallback", saiff); // add ready-callback

            InlineInitializeOnTriggerSpecific(saiff, method, symbols, classScope);
        }
        private CodegenExpression MakeTables(
            CodegenMethod method,
            SAIFFInitializeSymbol symbols)
        {
            var init = new CodegenExpression[TablesPerStream.Length];
            for (var i = 0; i < init.Length; i++) {
                init[i] = TablesPerStream[i] == null
                    ? ConstantNull()
                    : TableDeployTimeResolver.MakeResolveTable(TablesPerStream[i], symbols.GetAddInitSvc(method));
            }

            return NewArrayWithInit(typeof(Table), init);
        }
Пример #7
0
 public CodegenExpression Make(
     CodegenMethodScope parent,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     var method = parent.MakeChild(typeof(FireAndForgetProcessorTable), GetType(), classScope);
     var nw = Ref("tbl");
     method.Block
         .DeclareVar<FireAndForgetProcessorTable>(
             nw.Ref,
             NewInstance(typeof(FireAndForgetProcessorTable)))
         .SetProperty(
             nw,
             "Table",
             TableDeployTimeResolver.MakeResolveTable(Table, symbols.GetAddInitSvc(method)))
         .MethodReturn(nw);
     return LocalMethod(method);
 }
Пример #8
0
 public CodegenExpression Make(
     CodegenMethod method,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     var resolveTable = table == null
         ? ConstantNull()
         : TableDeployTimeResolver.MakeResolveTable(table, symbols.GetAddInitSvc(method));
     var insertIntoStreamSelectorExpr = insertIntoStreamSelector == null
         ? ConstantNull()
         : EnumValue(typeof(SelectClauseStreamSelectorEnum), insertIntoStreamSelector.Value.GetName());
     
     return NewInstance<OutputStrategyPostProcessFactory>(
         Constant(isRouted),
         insertIntoStreamSelectorExpr,
         EnumValue(typeof(SelectClauseStreamSelectorEnum), selectStreamSelector.GetName()),
         Constant(routeToFront),
         resolveTable);
 }
        public CodegenExpression MakeCodegen(
            CodegenMethodScope parent,
            SAIFFInitializeSymbol symbols,
            CodegenClassScope classScope)
        {
            CodegenMethod method = parent.MakeChild(typeof(SubSelectStrategyFactoryIndexShare), GetType(), classScope);

            CodegenExpression groupKeyEval = MultiKeyCodegen.CodegenExprEvaluatorMayMultikey(_groupKeys, null, _groupByMultiKey, method, classScope);

            var tableExpr = _table == null
                                ? ConstantNull()
                                : TableDeployTimeResolver.MakeResolveTable(_table, symbols.GetAddInitSvc(method));

            var namedWindowExpr = _namedWindow == null
                                ? ConstantNull()
                                : NamedWindowDeployTimeResolver.MakeResolveNamedWindow(_namedWindow, symbols.GetAddInitSvc(method));

            var aggregationServiceFactoryExpr = SubSelectStrategyFactoryLocalViewPreloadedForge.MakeAggregationService(
                _subqueryNumber,
                _aggregationServiceForgeDesc,
                classScope,
                method,
                symbols);
            var filterExprEvalExpr = _filterExprEval == null
                                ? ConstantNull()
                                : ExprNodeUtilityCodegen.CodegenEvaluatorNoCoerce(_filterExprEval, method, GetType(), classScope);

            var queryPlanExpr = _queryPlan == null
                                ? ConstantNull()
                                : _queryPlan.Make(method, symbols, classScope);

            method.Block
            .DeclareVar <SubSelectStrategyFactoryIndexShare>("s", NewInstance(typeof(SubSelectStrategyFactoryIndexShare)))
            .SetProperty(Ref("s"), "Table", tableExpr)
            .SetProperty(Ref("s"), "NamedWindow", namedWindowExpr)
            .SetProperty(Ref("s"), "AggregationServiceFactory", aggregationServiceFactoryExpr)
            .SetProperty(Ref("s"), "FilterExprEval", filterExprEvalExpr)
            .SetProperty(Ref("s"), "GroupKeyEval", groupKeyEval)
            .SetProperty(Ref("s"), "QueryPlan", queryPlanExpr)
            .MethodReturn(Ref("s"));
            return(LocalMethod(method));
        }
Пример #10
0
        public CodegenMethod InitializeCodegen(
            CodegenMethodScope parent,
            SAIFFInitializeSymbol symbols,
            CodegenClassScope classScope)
        {
            CodegenMethod method = parent.MakeChild(
                typeof(StatementAgentInstanceFactoryCreateIndex),
                this.GetType(),
                classScope);
            CodegenExpressionRef saiff = Ref("saiff");
            method.Block
                .DeclareVar<StatementAgentInstanceFactoryCreateIndex>(
                    saiff.Ref,
                    NewInstance(typeof(StatementAgentInstanceFactoryCreateIndex)))
                .SetProperty(
                    saiff,
                    "EventType",
                    EventTypeUtility.ResolveTypeCodegen(eventType, symbols.GetAddInitSvc(method)))
                .SetProperty(saiff, "IndexName", Constant(indexName))
                .SetProperty(saiff, "IndexModuleName", Constant(indexModuleName))
                .SetProperty(saiff, "IndexMultiKey", imk.Make(method, classScope))
                .SetProperty(saiff, "ExplicitIndexDesc", explicitIndexDesc.Make(method, classScope));
            if (namedWindow != null) {
                method.Block.SetProperty(
                    saiff,
                    "NamedWindow",
                    NamedWindowDeployTimeResolver.MakeResolveNamedWindow(namedWindow, symbols.GetAddInitSvc(method)));
            }
            else {
                method.Block.SetProperty(
                    saiff,
                    "Table",
                    TableDeployTimeResolver.MakeResolveTable(table, symbols.GetAddInitSvc(method)));
            }

            method.Block.MethodReturn(saiff);
            return method;
        }
Пример #11
0
 protected override void InlineInitializeOnTriggerSpecific(
     CodegenExpressionRef saiff,
     CodegenMethod method,
     SAIFFInitializeSymbol symbols,
     CodegenClassScope classScope)
 {
     method.Block
         .SetProperty(
             saiff,
             "ResultSetProcessorFactoryProvider",
             NewInstanceInner(
                 resultSetProcessorProviderClassName,
                 symbols.GetAddInitSvc(method),
                 Ref("statementFields")))
         .SetProperty(saiff, "IsInsertInto", Constant(insertInto))
         .SetProperty(saiff, "IsAddToFront", Constant(addToFront))
         .SetProperty(saiff, "IsSelectAndDelete", Constant(selectAndDelete))
         .SetProperty(saiff, "IsDistinct", Constant(distinct))
         .SetProperty(
             saiff,
             "DistinctKeyGetter",
             MultiKeyCodegen.CodegenGetterEventDistinct(
                 distinct,
                 ResultEventType,
                 distinctMultiKey,
                 method,
                 classScope))
         .SetProperty(
             saiff,
             "OptionalInsertIntoTable",
             optionalInsertIntoTable == null
                 ? ConstantNull()
                 : TableDeployTimeResolver.MakeResolveTable(
                     optionalInsertIntoTable,
                     symbols.GetAddInitSvc(method)));
 }