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;
            }
        }
Example #2
0
 public SerdeEventPropertyDesc(
     DataInputOutputSerdeForge forge,
     ISet<EventType> nestedTypes)
 {
     Forge = forge;
     NestedTypes = nestedTypes;
 }
Example #3
0
 public SerdeAndForgeables(
     DataInputOutputSerdeForge forge,
     IList <StmtClassForgeableFactory> additionalForgeables)
 {
     this.forge = forge;
     this.additionalForgeables = additionalForgeables;
 }
        private static List<StmtClassForgeableFactory> PlanMultikeys(
            QueryPlanIndexForge[] indexSpecs,
            StatementRawInfo raw,
            StatementCompileTimeServices compileTimeServices)
        {
            List<StmtClassForgeableFactory> multiKeyForgeables = new List<StmtClassForgeableFactory>();
            foreach (QueryPlanIndexForge spec in indexSpecs) {
                if (spec == null) {
                    continue;
                }
                foreach (var entry in spec.Items) {
                    QueryPlanIndexItemForge forge = entry.Value;

                    MultiKeyPlan plan = MultiKeyPlanner.PlanMultiKey(
                        forge.HashTypes, false, raw, compileTimeServices.SerdeResolver);
                    multiKeyForgeables.AddAll(plan.MultiKeyForgeables);
                    forge.HashMultiKeyClasses = plan.ClassRef;

                    DataInputOutputSerdeForge[] rangeSerdes = new DataInputOutputSerdeForge[forge.RangeTypes.Length];
                    for (int i = 0; i < forge.RangeTypes.Length; i++) {
                        rangeSerdes[i] = compileTimeServices.SerdeResolver.SerdeForIndexBtree(forge.RangeTypes[i], raw);
                    }
                    forge.RangeSerdes = rangeSerdes;
                }
            }
            return multiKeyForgeables;
        }
Example #5
0
 public MultiKeyClassRefWSerde(
     DataInputOutputSerdeForge forge,
     Type[] types)
 {
     this.forge = forge;
     this.types = types;
 }
Example #6
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));
 }
Example #7
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>)));
 }
 public AggregationForgeFactoryAvg(ExprAvgNode parent, Type childType, DataInputOutputSerdeForge distinctSerde, MathContext optionalMathContext)
 {
     this.parent              = parent;
     this.childType           = childType;
     this.distinctSerde       = distinctSerde;
     this.resultType          = GetAvgAggregatorType(childType);
     this.optionalMathContext = optionalMathContext;
 }
Example #9
0
 public void AddSerdeFor(
     EventType eventType,
     DataInputOutputSerdeForge forge)
 {
     if (IsTargetHA) {
         EventTypes.Put(eventType, forge);
     }
 }
Example #10
0
 public AggregationForgeFactoryStddev(
     ExprStddevNode parent,
     Type aggregatedValueType,
     DataInputOutputSerdeForge distinctSerde)
 {
     this._parent = parent;
     this._aggregatedValueType = aggregatedValueType;
     this._distinctSerde       = distinctSerde;
 }
 public MultiKeyClassRefPredetermined(
     Type clazzMK,
     Type[] mkTypes,
     DataInputOutputSerdeForge serdeForge)
 {
     _clazzMK = clazzMK;
     MKTypes = mkTypes;
     _serdeForge = serdeForge;
 }
Example #12
0
 public AggregationForgeFactoryMedian(
     ExprMedianNode parent,
     Type aggregatedValueType,
     DataInputOutputSerdeForge distinctSerde)
 {
     _parent = parent;
     _aggregatedValueType = aggregatedValueType;
     _distinctSerde       = distinctSerde;
 }
        private DataInputOutputSerdeForge[] Noop(Type[] types)
        {
            DataInputOutputSerdeForge[] forges = new DataInputOutputSerdeForge[types.Length];
            for (int i = 0; i < forges.Length; i++)
            {
                forges[i] = Noop();
            }

            return(forges);
        }
Example #14
0
 public AggregationForgeFactorySum(
     ExprSumNode parent,
     Type inputValueType,
     DataInputOutputSerdeForge distinctSerde)
 {
     _parent         = parent;
     _inputValueType = inputValueType;
     _distinctSerde  = distinctSerde;
     _resultType     = GetSumAggregatorType(inputValueType);
 }
 public CodegenSharableSerdeClassTyped(
     CodegenSharableSerdeName name,
     Type valueType,
     DataInputOutputSerdeForge forge,
     CodegenClassScope classScope)
 {
     this._name       = name;
     this._valueType  = valueType;
     this._forge      = forge;
     this._classScope = classScope;
 }
Example #16
0
 public AggregationForgeFactoryCount(
     ExprCountNode parent,
     bool ignoreNulls,
     Type countedValueType,
     DataInputOutputSerdeForge distinctValueSerde)
 {
     this._parent             = parent;
     this._ignoreNulls        = ignoreNulls;
     this._countedValueType   = countedValueType;
     this._distinctValueSerde = distinctValueSerde;
 }
Example #17
0
 public AggregationForgeFactoryAvedev(
     ExprAvedevNode parent,
     Type aggregatedValueType,
     DataInputOutputSerdeForge distinctSerde,
     ExprNode[] positionalParameters)
 {
     _parent = parent;
     _aggregatedValueType  = aggregatedValueType;
     _distinctSerde        = distinctSerde;
     _positionalParameters = positionalParameters;
 }
Example #18
0
 public AggregationForgeFactoryFirstLastUnbound(
     ExprAggMultiFunctionLinearAccessNode parent,
     Type resultType,
     bool hasFilter,
     DataInputOutputSerdeForge serde)
 {
     this.parent     = parent;
     this.resultType = resultType;
     this.hasFilter  = hasFilter;
     this.serde      = serde;
 }
 public AggregationForgeFactoryCountEver(
     ExprCountEverNode parent,
     bool ignoreNulls,
     Type childType,
     DataInputOutputSerdeForge distinctSerde)
 {
     this._parent        = parent;
     this._ignoreNulls   = ignoreNulls;
     this._childType     = childType;
     this._distinctSerde = distinctSerde;
 }
        private DataInputOutputSerdeForge[] SerdeForClasses(
            Type[] sortCriteriaExpressions,
            SerdeProviderAdditionalInfo additionalInfo)
        {
            DataInputOutputSerdeForge[] forges = new DataInputOutputSerdeForge[sortCriteriaExpressions.Length];
            for (int i = 0; i < sortCriteriaExpressions.Length; i++)
            {
                forges[i] = SerdeForClass(sortCriteriaExpressions[i], additionalInfo);
            }

            return(forges);
        }
 public StmtClassForgeableAIFactoryProviderCreateVariable(
     string className,
     CodegenNamespaceScope namespaceScope,
     StatementAgentInstanceFactoryCreateVariableForge forge,
     string variableName,
     DataInputOutputSerdeForge serde)
     : base(className, namespaceScope)
 {
     _forge = forge;
     _variableName = variableName;
     _serde = serde;
 }
Example #22
0
 public AggregationForgeFactoryPlugin(
     ExprPlugInAggNode parent,
     AggregationFunctionForge aggregationFunctionForge,
     AggregationFunctionMode mode,
     Type aggregatedValueType,
     DataInputOutputSerdeForge distinctSerde)
 {
     this.parent = parent;
     this.aggregationFunctionForge = aggregationFunctionForge;
     this.mode = mode;
     this.aggregatedValueType = aggregatedValueType;
     this.distinctSerde       = distinctSerde;
 }
Example #23
0
 public AggregationForgeFactoryMinMax(
     ExprMinMaxAggrNode parent,
     Type type,
     bool hasDataWindows,
     DataInputOutputSerdeForge serde,
     DataInputOutputSerdeForge distinctSerde)
 {
     this.parent         = parent;
     this.type           = type;
     this.hasDataWindows = hasDataWindows;
     this.serde          = serde;
     this.distinctSerde  = distinctSerde;
 }
 public AggregationForgeFactoryNth(
     ExprNthAggNode parent,
     Type childType,
     DataInputOutputSerdeForge serde,
     DataInputOutputSerdeForge distinctSerde,
     int size)
 {
     this.parent        = parent;
     this.childType     = childType;
     this.serde         = serde;
     this.distinctSerde = distinctSerde;
     this.size          = size;
 }
Example #25
0
        private static SerdeAndForgeables PlanBaseNestable(
            BaseNestableEventType eventType,
            StatementRawInfo raw,
            SerdeCompileTimeResolver resolver)
        {
            string className;

            if (eventType is JsonEventType)
            {
                var classNameFull = ((JsonEventType)eventType).Detail.SerdeClassName;
                var lastDotIndex  = classNameFull.LastIndexOf('.');
                className = lastDotIndex == -1 ? classNameFull : classNameFull.Substring(lastDotIndex + 1);
            }
            else
            {
                var uuid = GenerateClassNameUUID();
                className = GenerateClassNameWithUUID(typeof(DataInputOutputSerde), eventType.Metadata.Name, uuid);
            }

            var optionalApplicationSerde = resolver.SerdeForEventTypeExternalProvider(eventType, raw);

            if (optionalApplicationSerde != null)
            {
                return(new SerdeAndForgeables(optionalApplicationSerde, EmptyList <StmtClassForgeableFactory> .Instance));
            }

            var forges = new DataInputOutputSerdeForge[eventType.Types.Count];
            var count  = 0;

            foreach (var property in eventType.Types)
            {
                var desc = ForgeForEventProperty(eventType, property.Key, property.Value, raw, resolver);
                forges[count] = desc.Forge;
                count++;
            }

            StmtClassForgeableFactory forgeable = new ProxyStmtClassForgeableFactory()
            {
                ProcMake = (
                    namespaceScope,
                    classPostfix) => {
                    return(new StmtClassForgeableBaseNestableEventTypeSerde(className, namespaceScope, eventType, forges));
                },
            };

            var forge = new DataInputOutputSerdeForgeForClassName(className);

            return(new SerdeAndForgeables(forge, Collections.SingletonList(forgeable)));
        }
Example #26
0
 public AggregatorAvgNumeric(
     AggregationForgeFactoryAvg 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, sumType)
 {
     _factoryMethodAvg = factory;
 }
Example #27
0
 public PropertySortedFactoryFactoryForge(
     int indexedStreamNum,
     int? subqueryNum,
     bool isFireAndForget,
     string indexedProp,
     EventType eventType,
     CoercionDesc coercionDesc,
     DataInputOutputSerdeForge serde)
     : base(indexedStreamNum, subqueryNum, isFireAndForget)
 {
     this.indexedProp = indexedProp;
     this.eventType = eventType;
     this.coercionDesc = coercionDesc;
     this.serde = serde;
 }
Example #28
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)));
 }
Example #29
0
 public ExprFilterSpecLookupableForge(
     string expression,
     ExprEventEvaluatorForge optionalEventEvalForge,
     ExprForge optionalExprForge,
     Type returnType,
     bool isNonPropertyGetter,
     DataInputOutputSerdeForge valueSerde)
 {
     // prefixing the expression ensures the expression resolves to either the event-eval or the expr-eval
     _expression = optionalExprForge != null ? "." + expression : expression;
     _optionalEventEvalForge = optionalEventEvalForge;
     _optionalExprForge = optionalExprForge;
     _returnType = Boxing.GetBoxedType(returnType); // For type consistency for recovery and serde define as boxed type
     _isNonPropertyGetter = isNonPropertyGetter;
     _valueSerde = valueSerde;
 }
Example #30
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");
 }