Esempio n. 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);
 }
Esempio n. 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)));
     }
 }
Esempio n. 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);
        }
 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);
        }
Esempio n. 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);
 }
Esempio n. 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));
        }
Esempio n. 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;
        }
Esempio n. 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)));
 }