From 4f4f04699678d7f99d3875dc1f0ce0a883a9b663 Mon Sep 17 00:00:00 2001 From: Ngo Quoc Dat Date: Sat, 28 Mar 2026 15:03:50 +0700 Subject: [PATCH 1/2] fix: show dropdown chevron buttons on first table open --- .../MainContentCoordinator+QueryHelpers.swift | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/TablePro/Views/Main/Extensions/MainContentCoordinator+QueryHelpers.swift b/TablePro/Views/Main/Extensions/MainContentCoordinator+QueryHelpers.swift index 4e6b8359..fffd037d 100644 --- a/TablePro/Views/Main/Extensions/MainContentCoordinator+QueryHelpers.swift +++ b/TablePro/Views/Main/Extensions/MainContentCoordinator+QueryHelpers.swift @@ -21,6 +21,7 @@ extension MainContentCoordinator { let columnNullable: [String: Bool] let primaryKeyColumn: String? let approximateRowCount: Int? + let columnEnumValues: [String: [String]] } /// Schema result from parallel or sequential metadata fetch @@ -38,12 +39,22 @@ extension MainContentCoordinator { for fk in schema.fkInfo { fks[fk.column] = fk } + // Parse enum/set values from column type definitions (MySQL, MariaDB, ClickHouse) + var enumValues: [String: [String]] = [:] + for col in schema.columnInfo { + if let values = ColumnType.parseEnumValues(from: col.dataType) { + enumValues[col.name] = values + } else if let values = ColumnType.parseClickHouseEnumValues(from: col.dataType) { + enumValues[col.name] = values + } + } return ParsedSchemaMetadata( columnDefaults: defaults, columnForeignKeys: fks, columnNullable: nullable, primaryKeyColumn: schema.columnInfo.first(where: { $0.isPrimaryKey })?.name, - approximateRowCount: schema.approximateRowCount + approximateRowCount: schema.approximateRowCount, + columnEnumValues: enumValues ) } @@ -132,6 +143,9 @@ extension MainContentCoordinator { updatedTab.columnDefaults = metadata.columnDefaults updatedTab.columnForeignKeys = metadata.columnForeignKeys updatedTab.columnNullable = metadata.columnNullable + for (col, vals) in metadata.columnEnumValues { + updatedTab.columnEnumValues[col] = vals + } if let approxCount = metadata.approximateRowCount, approxCount > 0 { updatedTab.pagination.totalRowCount = approxCount updatedTab.pagination.isApproximateRowCount = true @@ -278,8 +292,16 @@ extension MainContentCoordinator { guard capturedGeneration == queryGeneration else { return } guard !Task.isCancelled else { return } if let idx = tabManager.tabs.firstIndex(where: { $0.id == tabId }) { - tabManager.tabs[idx].columnEnumValues = columnEnumValues - tabManager.tabs[idx].metadataVersion += 1 + let existing = tabManager.tabs[idx].columnEnumValues + let hasNewValues = columnEnumValues.contains { key, value in + existing[key] != value + } + if hasNewValues { + for (col, vals) in columnEnumValues { + tabManager.tabs[idx].columnEnumValues[col] = vals + } + tabManager.tabs[idx].metadataVersion += 1 + } } } } From c79c94f1a396364226abd68ad0847b87d480f32c Mon Sep 17 00:00:00 2001 From: Ngo Quoc Dat Date: Sat, 28 Mar 2026 15:08:16 +0700 Subject: [PATCH 2/2] fix: add CHANGELOG entry for dropdown chevron fix --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd8f1211..481ce30b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Confirmation dialogs for deep link queries, connection imports, and pre-connect scripts +### Fixed + +- ENUM/SET dropdown chevron buttons not showing on first table open, requiring a refresh to appear + ## [0.25.0] - 2026-03-27 ### Added