public override Task UpdateTableDetailsAsync(OracleObjectIdentifier objectIdentifier, TableDetailsModel dataModel, CancellationToken cancellationToken) { dataModel.AverageRowSize = 237; dataModel.LastAnalyzed = new DateTime(2014, 8, 19, 6, 18, 12); dataModel.BlockCount = 544; dataModel.RowCount = 8312; dataModel.SampleRows = 5512; dataModel.Logging = true; dataModel.AllocatedBytes = 22546891; dataModel.LargeObjectBytes = 1546891; dataModel.Compression = "Disabled"; dataModel.InMemoryCompression = "Disabled"; dataModel.Organization = "Index"; dataModel.PartitionKeys = "COLUMN1, COLUMN2"; dataModel.SubPartitionKeys = "COLUMN3, COLUMN4"; dataModel.IsTemporary = false; dataModel.Comment = "This is a table comment. "; dataModel.ParallelDegree = "Default"; var indexDetails = new IndexDetailsModel { Blocks = 123, Bytes = 123456, ClusteringFactor = 444, Compression = "Enabled", DegreeOfParallelism = 2, DistinctKeys = 1444, IsUnique = false, LastAnalyzed = new DateTime(2015, 1, 20, 21, 28, 12), LeafBlocks = 114, Logging = true, Name = "TEST_INDEX", Owner = "HUSQVIK", PrefixLength = 2, Rows = 2000, SampleRows = 333, Status = "Valid", Type = "Normal", TablespaceName = "TEST_TABLESPACE", Columns = { new IndexColumnModel { ColumnName = "COLUMN1", SortOrder = SortOrder.Descending }, new IndexColumnModel { ColumnName = "COLUMN2" } } }; var partition1Details = new PartitionDetailsModel { Name = "PARTITION_1" }; SetPartitionDetails(partition1Details); SetTablespaceDetails(dataModel.TablespaceDataModel); var partition2Details = new PartitionDetailsModel { Name = "PARTITION_2", TablespaceName = "TEST_TABLESPACE_2", AverageRowSize = 237, LastAnalyzed = new DateTime(2015, 2, 22, 16, 22, 14), BlockCount = 272, RowCount = 4162, SampleRows = 4162, Compression = "Disabled", Logging = true, HighValue = "'Partition key 2', 2", InMemoryCompression = "Disabled" }; dataModel.IndexDetails.Add(indexDetails); dataModel.AddPartition(partition1Details); dataModel.AddPartition(partition2Details); return Task.FromResult<object>(null); }
private static void SetPartitionKeys(TableDetailsModel tableDetails) { tableDetails.PartitionKeys = String.Join(", ", tableDetails.Table.PartitionKeyColumns.Select(c => c.ToSimpleIdentifier())); tableDetails.SubPartitionKeys = String.Join(", ", tableDetails.Table.SubPartitionKeyColumns.Select(c => c.ToSimpleIdentifier())); }
public void VisitDataObjectReference(OracleDataObjectReference objectReference) { if (TryBuildSchemaTooltip(objectReference)) { return; } if (objectReference.Type == ReferenceType.SchemaObject) { var schemaObject = objectReference.SchemaObject.GetTargetSchemaObject(); if (schemaObject == null) { return; } TableDetailsModel dataModel; var databaseModel = objectReference.Container.SemanticModel.DatabaseModel; var toolTipText = GetFullSchemaObjectToolTip(objectReference.SchemaObject); switch (schemaObject.Type) { case OracleObjectType.MaterializedView: var materializedView = (OracleMaterializedView)schemaObject; dataModel = new MaterializedViewDetailsModel { MaterializedViewTitle = toolTipText, Title = GetObjectTitle(OracleObjectIdentifier.Create(materializedView.Owner, materializedView.TableName), OracleObjectType.Table.ToLower()), MaterializedView = materializedView }; SetPartitionKeys(dataModel); databaseModel.UpdateTableDetailsAsync(schemaObject.FullyQualifiedName, dataModel, CancellationToken.None); ToolTip = new ToolTipMaterializedView { ScriptExtractor = databaseModel.ObjectScriptExtractor, DataContext = dataModel }; break; case OracleObjectType.Table: dataModel = new TableDetailsModel { Title = toolTipText, Table = (OracleTable)schemaObject }; SetPartitionKeys(dataModel); databaseModel.UpdateTableDetailsAsync(schemaObject.FullyQualifiedName, dataModel, CancellationToken.None); ToolTip = new ToolTipTable { ScriptExtractor = databaseModel.ObjectScriptExtractor, DataContext = dataModel }; break; case OracleObjectType.View: var objectDetailModel = new ObjectDetailsModel { Title = toolTipText, Object = schemaObject }; DocumentationDataDictionaryObject documentation; if (TryGetDataDictionaryObjectDocumentation(schemaObject.FullyQualifiedName, out documentation) && !String.IsNullOrWhiteSpace(documentation.Value)) { objectDetailModel.Comment = documentation.Value; } else { databaseModel.UpdateViewDetailsAsync(schemaObject.FullyQualifiedName, objectDetailModel, CancellationToken.None); } ToolTip = new ToolTipView { IsExtractDdlVisible = true, ScriptExtractor = databaseModel.ObjectScriptExtractor, DataContext = objectDetailModel }; break; case OracleObjectType.Sequence: ToolTip = new ToolTipSequence(toolTipText, (OracleSequence)schemaObject); break; } } else { ToolTip = new ToolTipObject { DataContext = $"{objectReference.FullyQualifiedObjectName.ToLabel()} ({objectReference.Type.ToCategoryLabel()})" }; } }