Beispiel #1
0
 public QueryPlanIndexItem(
     string[] hashProps,
     Type[] hashPropTypes,
     EventPropertyValueGetter hashGetter,
     MultiKeyFromObjectArray transformFireAndForget,
     DataInputOutputSerde hashKeySerde,
     string[] rangeProps,
     Type[] rangePropTypes,
     EventPropertyValueGetter[] rangeGetters,
     DataInputOutputSerde[] rangeKeySerdes,
     bool unique,
     EventAdvancedIndexProvisionRuntime advancedIndexProvisionDesc)
 {
     HashProps = hashProps;
     HashPropTypes = hashPropTypes;
     HashGetter = hashGetter;
     HashKeySerde = hashKeySerde;
     RangeProps = rangeProps == null || rangeProps.Length == 0 ? null : rangeProps;
     RangePropTypes = rangePropTypes;
     RangeGetters = rangeGetters;
     RangeKeySerdes = rangeKeySerdes;
     TransformFireAndForget = transformFireAndForget;
     IsUnique = unique;
     AdvancedIndexProvisionDesc = advancedIndexProvisionDesc;
 }
Beispiel #2
0
 public EventTableFactory CreateComposite(
     int indexedStreamNum,
     EventType eventType,
     string[] indexProps,
     Type[] indexCoercionTypes,
     EventPropertyValueGetter indexGetter,
     MultiKeyFromObjectArray transformFireAndForget,
     DataInputOutputSerde keySerde,
     string[] rangeProps,
     Type[] rangeCoercionTypes,
     EventPropertyValueGetter[] rangeGetters,
     DataInputOutputSerde[] rangeSerdes,
     DataInputOutputSerde optionalValueSerde,
     bool isFireAndForget)
 {
     return new PropertyCompositeEventTableFactory(
         indexedStreamNum,
         indexProps,
         indexCoercionTypes,
         indexGetter,
         transformFireAndForget,
         rangeProps,
         rangeCoercionTypes,
         rangeGetters);
 }
        public static CompositeIndexLookup Make(
            object[] keyValues,
            MultiKeyFromObjectArray multiKeyTransform,
            RangeIndexLookupValue[] rangeValues,
            Type[] rangeCoercion)
        {
            // construct chain
            IList<CompositeIndexLookup> queries = new List<CompositeIndexLookup>();
            if (keyValues != null && keyValues.Length > 0) {
                queries.Add(new CompositeIndexLookupKeyed(keyValues, multiKeyTransform));
            }

            for (int i = 0; i < rangeValues.Length; i++) {
                queries.Add(new CompositeIndexLookupRange(rangeValues[i], rangeCoercion[i]));
            }

            // Hook up as chain for remove
            CompositeIndexLookup last = null;
            foreach (CompositeIndexLookup action in queries) {
                if (last != null) {
                    last.Next = action;
                }

                last = action;
            }

            return queries[0];
        }
        public PropertyHashedEventTableFactory(
            int streamNum,
            string[] propertyNames,
            bool unique,
            string optionalIndexName,
            EventPropertyValueGetter propertyGetter,
            MultiKeyFromObjectArray multiKeyTransform)
        {
            StreamNum = streamNum;
            PropertyNames = propertyNames;
            Unique = unique;
            OptionalIndexName = optionalIndexName;
            PropertyGetter = propertyGetter;
            MultiKeyTransform = multiKeyTransform;

            if (propertyGetter == null) {
                throw new ArgumentException("Property-getter is null");
            }
        }
 public PropertyHashedFactoryFactory(
     int indexedStreamNum,
     int? subqueryNum,
     bool isFireAndForget,
     String[] indexProps,
     Type[] indexTypes,
     bool unique,
     EventPropertyValueGetter valueGetter,
     MultiKeyFromObjectArray transformFireAndForget,
     DataInputOutputSerde keySerde)
     : base(indexedStreamNum, subqueryNum, isFireAndForget)
 {
     this.indexProps = indexProps;
     this.indexTypes = indexTypes;
     this.unique = unique;
     this.valueGetter = valueGetter;
     this.transformFireAndForget = transformFireAndForget;
     this.keySerde = keySerde;
 }
        public PropertyCompositeEventTableFactory(
            int streamNum,
            string[] optionalKeyedProps,
            Type[] optKeyCoercedTypes,
            EventPropertyValueGetter hashGetter,
            MultiKeyFromObjectArray transformFireAndForget,
            string[] rangeProps,
            Type[] optRangeCoercedTypes,
            EventPropertyValueGetter[] rangeGetters)
        {
            this.StreamNum = streamNum;
            this.OptionalKeyedProps = optionalKeyedProps;
            this.OptKeyCoercedTypes = optKeyCoercedTypes;
            this.HashGetter = hashGetter;
            this.TransformFireAndForget = transformFireAndForget;
            this.RangeProps = rangeProps;
            this.OptRangeCoercedTypes = optRangeCoercedTypes;
            this.RangeGetters = rangeGetters;

            // construct chain
            IList<CompositeIndexEnterRemove> enterRemoves = new List<CompositeIndexEnterRemove>();
            if (optionalKeyedProps != null && optionalKeyedProps.Length > 0) {
                enterRemoves.Add(new CompositeIndexEnterRemoveKeyed(hashGetter));
            }

            foreach (var rangeGetter in rangeGetters) {
                enterRemoves.Add(new CompositeIndexEnterRemoveRange(rangeGetter));
            }

            // Hook up as chain for remove
            CompositeIndexEnterRemove last = null;
            foreach (var action in enterRemoves) {
                if (last != null) {
                    last.Next = action;
                }

                last = action;
            }

            Chain = enterRemoves[0];
        }
Beispiel #7
0
 public EventTableFactory CreateHashedOnly(
     int indexedStreamNum,
     EventType eventType,
     string[] indexProps,
     Type[] indexTypes,
     MultiKeyFromObjectArray transformFireAndForget,
     DataInputOutputSerde keySerde,
     bool unique,
     string optionalIndexName,
     EventPropertyValueGetter getter,
     DataInputOutputSerde optionalValueSerde,
     bool isFireAndForget,
     EventTableFactoryFactoryContext eventTableFactoryContext)
 {
     return new PropertyHashedEventTableFactory(
         indexedStreamNum,
         indexProps,
         unique,
         optionalIndexName,
         getter,
         transformFireAndForget);
 }
Beispiel #8
0
 public CompositeIndexLookupKeyed(object[] keys, MultiKeyFromObjectArray multiKeyTransform)
 {
     this._keys = keys;
     this._multiKeyTransform = multiKeyTransform;
 }