Ejemplo n.º 1
0
 public AggregatorLastEver(
     AggregationForgeFactory factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter,
     Type childType,
     DataInputOutputSerdeForge serde)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     _childType = childType.GetBoxedType();
     // NOTE: we had originally set the value of the member to childType which seems correct an
     //   appropriate.  However, the code is not doing proper type checking and cast conversion
     //   elsewhere which makes assignment problematic.  Revisit this problem when we have more
     //   time.
     _lastValue = membersColumnized.AddMember(col, typeof(object), "lastValue");
     this._serde = classScope.AddOrGetDefaultFieldSharable(
         new CodegenSharableSerdeClassTyped(
             CodegenSharableSerdeClassTyped.CodegenSharableSerdeName.VALUE_NULLABLE,
             childType,
             serde,
             classScope));
 }
Ejemplo n.º 2
0
 public static Consumer<CodegenBlock> ReadLong(
     CodegenExpressionRef row,
     CodegenExpressionMember member,
     CodegenExpression input)
 {
     return block => block.AssignRef(RowDotMember(row, member), ExprDotMethod(input, "ReadLong"));
 }
Ejemplo n.º 3
0
 public static Consumer<CodegenBlock> WriteDecimal(
     CodegenExpressionRef output,
     CodegenExpressionRef row,
     CodegenExpressionMember member)
 {
     return block => block.ExprDotMethod(output, "WriteDecimal", RowDotMember(row, member));
 }
        public AggregatorAccessSortedMinMaxByEver(
            AggregationStateMinMaxByEverForge forge,
            int col,
            CodegenCtor ctor,
            CodegenMemberCol membersColumnized,
            CodegenClassScope classScope,
            ExprNode optionalFilter)
            : base(optionalFilter)
        {
            this._forge             = forge;
            _currentMinMaxBean      = membersColumnized.AddMember(col, typeof(EventBean), "currentMinMaxBean");
            _currentMinMaxBeanSerde = classScope.AddOrGetDefaultFieldSharable(
                new CodegenSharableSerdeEventTyped(
                    CodegenSharableSerdeEventTyped.CodegenSharableSerdeName.NULLABLEEVENTMAYCOLLATE,
                    forge.Spec.StreamEventType));
            _currentMinMax = membersColumnized.AddMember(col, typeof(object), "currentMinMax");
            if (forge.Spec.Criteria.Length == 1)
            {
                _currentMinMaxSerde = classScope.AddOrGetDefaultFieldSharable(
                    new CodegenSharableSerdeClassTyped(VALUE_NULLABLE, forge.Spec.CriteriaTypes[0], forge.Spec.CriteriaSerdes[0], classScope));
            }
            else
            {
                _currentMinMaxSerde = classScope.AddOrGetDefaultFieldSharable(
                    new CodegenSharableSerdeClassArrayTyped(OBJECTARRAYMAYNULLNULL, forge.Spec.CriteriaTypes, forge.Spec.CriteriaSerdes, classScope));
            }

            _comparator = classScope.AddOrGetDefaultFieldSharable(
                new CodegenFieldSharableComparator(
                    COMPARATOROBJECTARRAYNONHASHABLE,
                    forge.Spec.CriteriaTypes,
                    forge.Spec.IsSortUsingCollator,
                    forge.Spec.SortDescending));
        }
        public AggregatorMethodWDistinctWFilterBase(
            AggregationForgeFactory factory,
            int col,
            CodegenCtor rowCtor,
            CodegenMemberCol membersColumnized,
            CodegenClassScope classScope,
            Type optionalDistinctValueType,
            DataInputOutputSerdeForge optionalDistinctSerde,
            bool hasFilter,
            ExprNode optionalFilter)
        {
            this.optionalDistinctValueType = optionalDistinctValueType;
            this.optionalFilter = optionalFilter;
            this.hasFilter = hasFilter;

            if (optionalDistinctValueType != null) {
                distinct = membersColumnized.AddMember(col, typeof(RefCountedSet<object>), "distinctSet");
                rowCtor.Block.AssignRef(distinct, NewInstance(typeof(RefCountedSet<object>)));
                distinctSerde = classScope.AddOrGetDefaultFieldSharable(
                    new CodegenSharableSerdeClassTyped(
                        CodegenSharableSerdeClassTyped.CodegenSharableSerdeName.REFCOUNTEDSET,
                        optionalDistinctValueType,
                        optionalDistinctSerde,
                        classScope));
            }
            else {
                distinct = null;
                distinctSerde = null;
            }
        }
Ejemplo n.º 6
0
 public AggregatorAvedev(
     AggregationForgeFactory factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter)
     : base(
         factory,
         col,
         rowCtor,
         membersColumnized,
         classScope,
         optionalDistinctValueType,
         optionalDistinctSerde,
         hasFilter,
         optionalFilter)
 {
     valueSet = membersColumnized.AddMember(col, typeof(RefCountedSet<double>), "valueSet");
     sum = membersColumnized.AddMember(col, typeof(double), "sum");
     rowCtor.Block.AssignRef(valueSet, NewInstance(typeof(RefCountedSet<double>)));
 }
Ejemplo n.º 7
0
 public AggregatorLeaving(
     AggregationForgeFactoryLeaving factory,
     int col,
     CodegenMemberCol membersColumnized)
 {
     _factory = factory;
     _leaving = membersColumnized.AddMember(col, typeof(bool), "leaving");
 }
Ejemplo n.º 8
0
        public AggregatorAccessSortedImpl(
            bool join,
            AggregationStateSortedForge forge,
            int col,
            CodegenCtor ctor,
            CodegenMemberCol membersColumnized,
            CodegenClassScope classScope,
            ExprNode optionalFilter)
            : base(optionalFilter)
        {
            this.forge = forge;
            sorted     = membersColumnized.AddMember(col, typeof(IOrderedDictionary <object, object>), "sorted");
            size       = membersColumnized.AddMember(col, typeof(int), "size");
            var types = ExprNodeUtilityQuery.GetExprResultTypes(forge.Spec.Criteria);

            comparator = classScope.AddOrGetDefaultFieldSharable(
                new CodegenFieldSharableComparator(
                    COMPARATORHASHABLEMULTIKEYS,
                    types,
                    forge.Spec.IsSortUsingCollator,
                    forge.Spec.SortDescending));
            ctor.Block.AssignRef(sorted, NewInstance <OrderedListDictionary <object, object> >(comparator));

            sortedSerde = classScope.AddOrGetDefaultFieldSharable(
                new ProxyCodegenFieldSharable()
            {
                ProcType = () => { return(typeof(DIOSerdeTreeMapEventsMayDeque)); },

                ProcInitCtorScoped = () => {
                    var type = EventTypeUtility
                               .ResolveTypeCodegen(forge.Spec.StreamEventType, EPStatementInitServicesConstants.REF);
                    var criteriaSerdes = DataInputOutputSerdeForgeExtensions
                                         .CodegenArray(forge.Spec.CriteriaSerdes, classScope.NamespaceScope.InitMethod, classScope, null);
                    return(ExprDotMethodChain(EPStatementInitServicesConstants.REF)
                           .Get(EPStatementInitServicesConstants.EVENTTYPERESOLVER)
                           .Add(EventTypeResolverConstants.GETEVENTSERDEFACTORY)
                           .Add("TreeMapEventsMayDeque", criteriaSerdes, type));
                },
            });

            if (join)
            {
                joinRefs = membersColumnized.AddMember(col, typeof(RefCountedSetAtomicInteger <object>), "refs");
                ctor.Block.AssignRef(joinRefs, NewInstance(typeof(RefCountedSetAtomicInteger <object>)));
                joinRefsSerde = classScope.AddOrGetDefaultFieldSharable(
                    new CodegenSharableSerdeEventTyped(
                        REFCOUNTEDSETATOMICINTEGER, forge.Spec.StreamEventType));
            }
            else
            {
                joinRefs      = null;
                joinRefsSerde = null;
            }
        }
        public AggregatorAccessLinearNonJoin(
            AggregationStateLinearForge forge,
            int col,
            CodegenCtor rowCtor,
            CodegenMemberCol membersColumnized,
            CodegenClassScope classScope,
            ExprNode optionalFilter)
            : base(optionalFilter)

        {
            _forge = forge;
            _events = membersColumnized.AddMember(col, typeof(IList<EventBean>), "events");
            rowCtor.Block.AssignRef(_events, NewInstance(typeof(List<EventBean>)));
        }
Ejemplo n.º 10
0
        public AggregatorAccessLinearJoin(
            AggregationStateLinearForge forge,
            int col,
            CodegenCtor rowCtor,
            CodegenMemberCol membersColumnized,
            CodegenClassScope classScope,
            ExprNode optionalFilter)
            : base(optionalFilter)

        {
            _forge = forge;
            _refSet = membersColumnized.AddMember(col, typeof(LinkedHashMap<EventBean, object>), "refSet");
            _array = membersColumnized.AddMember(col, typeof(EventBean[]), "array");
            rowCtor.Block.AssignRef(_refSet, NewInstance(typeof(LinkedHashMap<EventBean, object>)));
        }
 public AggregatorAccessCountMinSketch(
     AggregationStateCountMinSketchForge forge,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope)
 {
     this.forge = forge;
     state = membersColumnized.AddMember(col, typeof(CountMinSketchAggState), "state");
     spec = classScope.NamespaceScope.AddDefaultFieldUnshared(
         true,
         typeof(CountMinSketchSpec),
         forge.specification.CodegenMake(classScope.NamespaceScope.InitMethod, classScope));
     rowCtor.Block.AssignRef(state, ExprDotMethod(spec, "MakeAggState"));
 }
Ejemplo n.º 12
0
 public AggregatorMedian(
     AggregationForgeFactory factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     _vector = membersColumnized.AddMember(col, typeof(SortedDoubleVector), "vector");
     rowCtor.Block.AssignRef(_vector, NewInstance(typeof(SortedDoubleVector)));
 }
Ejemplo n.º 13
0
 public AggregatorCount(
     AggregationForgeFactory factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter,
     bool isEver)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     _isEver = isEver;
     _cnt = membersColumnized.AddMember(col, typeof(long), "cnt");
 }
Ejemplo n.º 14
0
 public AggregatorRateEver(
     AggregationForgeFactoryRate factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     _factory = factory;
     _points = membersColumnized.AddMember(col, typeof(Deque<long>), "points");
     _hasLeave = membersColumnized.AddMember(col, typeof(bool), "hasLeave");
     rowCtor.Block.AssignRef(_points, NewInstance(typeof(ArrayDeque<long>)));
 }
        private static CodegenMethod GetComparableWObjectArrayKeyCodegen(
            ExprNode[] criteria,
            CodegenExpressionMember member,
            CodegenNamedMethods namedMethods,
            CodegenClassScope classScope)
        {
            var methodName = "GetComparable_" + member.Ref;
            Consumer <CodegenMethod> code = method => {
                if (criteria.Length == 1)
                {
                    method.Block.MethodReturn(
                        LocalMethod(
                            CodegenLegoMethodExpression.CodegenExpression(criteria[0].Forge, method, classScope),
                            REF_EPS,
                            REF_ISNEWDATA,
                            REF_EXPREVALCONTEXT));
                }
                else
                {
                    var exprSymbol  = new ExprForgeCodegenSymbol(true, null);
                    var expressions = new CodegenExpression[criteria.Length];
                    for (var i = 0; i < criteria.Length; i++)
                    {
                        expressions[i] = criteria[i].Forge.EvaluateCodegen(typeof(object), method, exprSymbol, classScope);
                    }

                    exprSymbol.DerivedSymbolsCodegen(method, method.Block, classScope);

                    method.Block.DeclareVar <object[]>("result", NewArrayByLength(typeof(object), Constant(criteria.Length)));
                    for (var i = 0; i < criteria.Length; i++)
                    {
                        method.Block.AssignArrayElement(Ref("result"), Constant(i), expressions[i]);
                    }

                    method.Block.MethodReturn(Ref("result"));
                }
            };

            return(namedMethods.AddMethod(
                       typeof(object),
                       methodName,
                       CodegenNamedParam.From(typeof(EventBean[]), NAME_EPS, typeof(bool), NAME_ISNEWDATA, typeof(ExprEvaluatorContext), NAME_EXPREVALCONTEXT),
                       typeof(AggregatorAccessSortedImpl),
                       classScope,
                       code));
        }
Ejemplo n.º 16
0
 public AggregatorAvgBig(
     AggregationForgeFactoryAvg factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     _factory = factory;
     _sum = membersColumnized.AddMember(col, typeof(BigInteger), "sum");
     _cnt = membersColumnized.AddMember(col, typeof(long), "cnt");
     rowCtor.Block.AssignRef(_sum, EnumValue(typeof(BigInteger), "Zero"));
 }
Ejemplo n.º 17
0
 public AggregatorRate(
     AggregationForgeFactoryRate factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     _factory = factory;
     _accumulator = membersColumnized.AddMember(col, typeof(double), "accumulator");
     _latest = membersColumnized.AddMember(col, typeof(long), "latest");
     _oldest = membersColumnized.AddMember(col, typeof(long), "oldest");
     _isSet = membersColumnized.AddMember(col, typeof(bool), "isSet");
 }
Ejemplo n.º 18
0
 public AggregatorSumBase(
     AggregationForgeFactory factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter,
     Type sumType)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     cnt = membersColumnized.AddMember(col, typeof(long), "cnt");
     sum = membersColumnized.AddMember(col, sumType.GetPrimitiveType(), "sum");
     this.sumType = sumType;
     rowCtor.Block.AssignRef(sum, InitOfSum());
 }
Ejemplo n.º 19
0
        public AggregatorPlugInMultiParam(
            AggregationForgeFactoryPlugin factory,
            int col,
            CodegenCtor rowCtor,
            CodegenMemberCol membersColumnized,
            CodegenClassScope classScope,
            AggregationFunctionModeMultiParam mode)
        {
            this.mode = mode;
            var injectionStrategy =
                (InjectionStrategyClassNewInstance) mode.InjectionStrategyAggregationFunctionFactory;
            var factoryField = classScope.AddDefaultFieldUnshared<AggregationFunctionFactory>(
                true,
                injectionStrategy.GetInitializationExpression(classScope));

            plugin = membersColumnized.AddMember(col, typeof(AggregationFunction), "plugin");
            rowCtor.Block.AssignRef(plugin, ExprDotMethod(factoryField, "NewAggregator", ConstantNull()));
        }
Ejemplo n.º 20
0
        public AggregatorAccessPlugin(
            int col,
            bool join,
            CodegenCtor ctor,
            CodegenMemberCol membersColumnized,
            CodegenClassScope classScope,
            ExprNode optionalFilter,
            AggregationMultiFunctionStateModeManaged mode)
            : base(optionalFilter)

        {
            state = membersColumnized.AddMember(col, typeof(AggregationMultiFunctionState), "state");
            this.mode = mode;

            var injectionStrategy = (InjectionStrategyClassNewInstance) mode.InjectionStrategyAggregationStateFactory;
            var factoryField = classScope.AddDefaultFieldUnshared(
                true,
                typeof(AggregationMultiFunctionStateFactory),
                injectionStrategy.GetInitializationExpression(classScope));
            ctor.Block.AssignRef(state, ExprDotMethod(factoryField, "NewState", ConstantNull()));
        }
Ejemplo n.º 21
0
 public AggregatorMinMax(
         AggregationForgeFactoryMinMax factory,
         int col,
         CodegenCtor rowCtor,
         CodegenMemberCol membersColumnized,
         CodegenClassScope classScope,
         Type optionalDistinctValueType,
         DataInputOutputSerdeForge optionalDistinctSerde,
         bool hasFilter,
         ExprNode optionalFilter)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     this._factory = factory;
     _refSet = membersColumnized.AddMember(col, typeof(SortedRefCountedSet<object>), "refSet");
     _serde = classScope.AddOrGetDefaultFieldSharable(
         new CodegenSharableSerdeClassTyped(
             CodegenSharableSerdeClassTyped.CodegenSharableSerdeName.SORTEDREFCOUNTEDSET,
             factory.ResultType,
             factory.Serde,
             classScope));
     rowCtor.Block.AssignRef(_refSet, NewInstance(typeof(SortedRefCountedSet<object>)));
 }
Ejemplo n.º 22
0
 public AggregatorMinMaxEver(
     AggregationForgeFactoryMinMax factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter,
     DataInputOutputSerdeForge serde)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     _factory = factory;
     _currentMinMax = membersColumnized.AddMember(col, typeof(IComparable), "currentMinMax");
     _serde = classScope.AddOrGetDefaultFieldSharable(
         new CodegenSharableSerdeClassTyped(
             CodegenSharableSerdeClassTyped.CodegenSharableSerdeName.VALUE_NULLABLE,
             factory.ResultType,
             serde,
             classScope));
 }
Ejemplo n.º 23
0
 public AggregatorNth(
     AggregationForgeFactoryNth factory,
     int col,
     CodegenCtor rowCtor,
     CodegenMemberCol membersColumnized,
     CodegenClassScope classScope,
     Type optionalDistinctValueType,
     DataInputOutputSerdeForge optionalDistinctSerde,
     bool hasFilter,
     ExprNode optionalFilter)
     : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
 {
     this._factory = factory;
     _circularBuffer = membersColumnized.AddMember(col, typeof(object[]), "buf");
     _currentBufferElementPointer = membersColumnized.AddMember(col, typeof(int), "cbep");
     _numDataPoints = membersColumnized.AddMember(col, typeof(long), "cnt");
     _serdeValue = classScope.AddOrGetDefaultFieldSharable(
         new CodegenSharableSerdeClassTyped(
             CodegenSharableSerdeClassTyped.CodegenSharableSerdeName.VALUE_NULLABLE,
             factory.ChildType,
             factory.Serde,
             classScope));
 }
Ejemplo n.º 24
0
        public AggregatorPlugInManaged(
            AggregationForgeFactoryPlugin factory,
            int col,
            CodegenCtor rowCtor,
            CodegenMemberCol membersColumnized,
            CodegenClassScope classScope,
            Type optionalDistinctValueType,
            DataInputOutputSerdeForge optionalDistinctSerde,
            bool hasFilter,
            ExprNode optionalFilter,
            AggregationFunctionModeManaged mode)
            : base(factory, col, rowCtor, membersColumnized, classScope, optionalDistinctValueType, optionalDistinctSerde, hasFilter, optionalFilter)
        {
            this.mode = mode;

            var injectionStrategy =
                (InjectionStrategyClassNewInstance) mode.InjectionStrategyAggregationFunctionFactory;
            var factoryField = classScope.AddDefaultFieldUnshared<AggregationFunctionFactory>(
                true,
                injectionStrategy.GetInitializationExpression(classScope));

            plugin = membersColumnized.AddMember(col, typeof(AggregationFunction), "plugin");
            rowCtor.Block.AssignRef(plugin, ExprDotMethod(factoryField, "NewAggregator", ConstantNull()));
        }
 public SupportConcatWCodegenAggregatorMethod(AggregatorMethodFactoryContext context)
 {
     builder = context.MembersColumnized.AddMember(context.Col, typeof(StringBuilder), "buf");
     context.RowCtor.Block.AssignRef(builder, NewInstance(typeof(StringBuilder)));
 }
Ejemplo n.º 26
0
 public static CodegenExpression RowDotMember(
     CodegenExpressionRef row,
     CodegenExpressionMember member)
 {
     return Ref(row.Ref + "." + member.Ref);
 }