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); var queryPlanIndexItem = QueryPlanIndexItem.FromIndexMultikeyTablePrimaryKey(pair.Second); _eventTableIndexMetadataRepo.AddIndexExplicit(true, pair.Second, tableName, queryPlanIndexItem, createTableStatementContext.StatementName); _tableRowKeyFactory = new TableRowKeyFactory(pair.First); } }
public void RegisterIndex( IndexCompileTimeKey indexKey, IndexDetail indexDetail) { EventTableIndexMetadata indexMetadata = null; if (indexKey.IsNamedWindow) { NamedWindowMetaData localNamedWindow = moduleNamedWindows.Get(indexKey.InfraName); if (localNamedWindow != null) { indexMetadata = localNamedWindow.IndexMetadata; } else { if (indexKey.Visibility == NameAccessModifier.PUBLIC) { NamedWindowMetaData pathNamedWindow = pathNamedWindows.GetWithModule( indexKey.InfraName, indexKey.InfraModuleName); if (pathNamedWindow != null) { indexMetadata = pathNamedWindow.IndexMetadata; } } } if (indexMetadata == null) { throw new EPException("Failed to find named window '" + indexKey.InfraName + "'"); } } else { TableMetaData localTable = moduleTables.Get(indexKey.InfraName); if (localTable != null) { indexMetadata = localTable.IndexMetadata; } else { if (indexKey.Visibility == NameAccessModifier.PUBLIC) { TableMetaData pathTable = pathTables.GetWithModule( indexKey.InfraName, indexKey.InfraModuleName); if (pathTable != null) { indexMetadata = pathTable.IndexMetadata; } } } if (indexMetadata == null) { throw new EPException("Failed to find table '" + indexKey.InfraName + "'"); } } try { indexMetadata.AddIndexExplicit( false, indexDetail.IndexMultiKey, indexKey.IndexName, indexKey.InfraModuleName, indexDetail.QueryPlanIndexItem, ""); } catch (ExprValidationException ex) { throw new EPException(ex.Message, ex); } }
public void ValidateAddIndex(string statementName, string explicitIndexName, QueryPlanIndexItem explicitIndexDesc, IndexMultiKey imk) { _eventTableIndexMetadataRepo.AddIndexExplicit(false, imk, explicitIndexName, explicitIndexDesc, statementName); }