Repository navigation
feat(table-health): report table and index health of the selected database - #3958
Merged
Merged
Conversation
…s in key coverage
…d partition indexes
… tool tab paths Fixes the review of TableProApp#3958: foreign key and partition rules, skipped checks when usage is not counted, Refresh on self-loading tabs, per-engine menu gate.
… skip uncounted or referenced MySQL indexes
…skip full-text redundancy, theme the preview
…-text indexes as unused
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
withMetadataDriver(scope:)lease on a pooled connection, never the user's session, so a failing check cannot abort an open transaction. No database selected asks for one.pg_tempschemas.CREATE INDEX, since PostgreSQL refusesCONCURRENTLYthere.track_counts = offskips the bloat and unused checks and says why.setup_objectsleaves out looks.performance_schemais off, thewait/io/table/sql/handlerinstrument orglobal_instrumentationconsumer is disabled, or the database has no counted table I/O.SQLStatementPreview. Nothing runs it: Open in Editor, Copy, Open Table.Cmd+Rand the toolbar) now reloads Table Health, Server Dashboard, Query Insights, Users & Roles and object source tabs. It did nothing on those tabs. OneAppEvents.tabRefreshRequestedreplacesversionHistoryRefreshRequestedandtableListingRefreshRequested.showSingletonTab(_:)andQueryTabManager.addSingletonTab(_:)replace the four Server Dashboard, Users & Roles, Query Insights and Table Health copies.PaneRefreshControlsis shared by Query Insights and Table Health. VoiceOver now reads the last update time.tableHealth: AppleScripttable health(TPkx), MCP snapshottableHealth.Screenshots
Test plan
PostgreSQLTableHealthProviderTests,MySQLTableHealthProviderTests: parsing, fix SQL, partitioned fix, skipped checks, foreign key and invisible index rules, one failing check isolated, index catalog read once.TableHealthViewModelTests: one lease on the browse scope with.bulk, a pane switch during the first load, no database, offline then online, failed check keeps findings, selection.MainContentCoordinatorRefreshTests: Refresh reaches each self-loading tab and Users & Roles.MainMenuBuilderTests: engine gate and Agent mode.apple/scripts/probes/check-table-health-catalogs.shruns every query and fix against real servers: PASS on PostgreSQL 12.22 and 17.11, MySQL 8.4.13, MariaDB 10.5.29 and 11.8.9.Fixes #3935