Пример #1
0
        public TableMetadata(
            string tableName,
            string eplExpression,
            string statementName,
            Type[] keyTypes,
            IDictionary <string, TableMetadataColumn> tableColumns,
            TableStateRowFactory rowFactory,
            int numberMethodAggregations,
            StatementContext createTableStatementContext,
            ObjectArrayEventType internalEventType,
            ObjectArrayEventType publicEventType,
            TableMetadataInternalEventToPublic eventToPublic,
            bool queryPlanLogging)
        {
            _tableName                   = tableName;
            _eplExpression               = eplExpression;
            _statementName               = statementName;
            _keyTypes                    = keyTypes;
            _tableColumns                = tableColumns;
            _rowFactory                  = rowFactory;
            _numberMethodAggregations    = numberMethodAggregations;
            _statementContextCreateTable = createTableStatementContext;
            _internalEventType           = internalEventType;
            _publicEventType             = publicEventType;
            _eventToPublic               = eventToPublic;
            _queryPlanLogging            = queryPlanLogging;

            if (keyTypes.Length > 0)
            {
                var pair = TableServiceUtil.GetIndexMultikeyForKeys(tableColumns, internalEventType);
                _eventTableIndexMetadataRepo.AddIndex(true, pair.Second, tableName, createTableStatementContext.StatementName, true, null);
                _tableRowKeyFactory = new TableRowKeyFactory(pair.First);
            }
        }
Пример #2
0
        public TableMetadata AddTable(
            string tableName,
            string eplExpression,
            string statementName,
            Type[] keyTypes,
            IDictionary<String, TableMetadataColumn> tableColumns,
            TableStateRowFactory tableStateRowFactory,
            int numberMethodAggregations,
            StatementContext statementContext,
            ObjectArrayEventType internalEventType,
            ObjectArrayEventType publicEventType,
            TableMetadataInternalEventToPublic eventToPublic,
            bool queryPlanLogging)
        {
            var metadata = new TableMetadata(
                tableName,
                eplExpression,
                statementName,
                keyTypes,
                tableColumns,
                tableStateRowFactory,
                numberMethodAggregations,
                statementContext,
                internalEventType,
                publicEventType,
                eventToPublic,
                queryPlanLogging);

            // determine table state factory
            TableStateFactory tableStateFactory;
            if (keyTypes.Length == 0)
            { // ungrouped
                tableStateFactory = new ProxyTableStateFactory
                {
                    ProcMakeTableState = agentInstanceContext => new TableStateInstanceUngroupedImpl(
                        metadata, agentInstanceContext, _rwLockManager),
                };
            }
            else
            {
                tableStateFactory = new ProxyTableStateFactory
                {
                    ProcMakeTableState = agentInstanceContext => new TableStateInstanceGroupedImpl(
                        metadata, agentInstanceContext, _rwLockManager),
                };
            }
            metadata.TableStateFactory = tableStateFactory;

            _tables.Put(tableName, metadata);
            return metadata;
        }