Parent
Part of #445
Severity
High
Problem
replaceIfChanged early-return skips _loading = false in MySQL/Postgres stats → stuck “Connecting…” when stats are identical/null while loading. Extension/Redis already guard (if (_loading) setState(() => _loading = false)).
- After
_loading = true, _fetch does if (conn == null || !conn.isConnected) return with no error / loading clear → infinite spinner in stats and table views.
Evidence
lib/features/mysql/mysql_stats_view.dart (~95–102, 111–114)
lib/features/postgresql/postgres_stats_view.dart (~111–114)
- Table views:
mysql_table_view.dart, postgres_table_view.dart, sqlite_table_view.dart early conn checks
- Good pattern:
lib/features/extensions/extension_stats_view.dart (~84–86)
Acceptance
Suggested fix
Match extension_stats / redis_view guards; treat missing connection as connect failure.
Parent
Part of #445
Severity
High
Problem
replaceIfChangedearly-returnskips_loading = falsein MySQL/Postgres stats → stuck “Connecting…” when stats are identical/null while loading. Extension/Redis already guard (if (_loading) setState(() => _loading = false))._loading = true,_fetchdoesif (conn == null || !conn.isConnected) returnwith no error / loading clear → infinite spinner in stats and table views.Evidence
lib/features/mysql/mysql_stats_view.dart(~95–102, 111–114)lib/features/postgresql/postgres_stats_view.dart(~111–114)mysql_table_view.dart,postgres_table_view.dart,sqlite_table_view.dartearly conn checkslib/features/extensions/extension_stats_view.dart(~84–86)Acceptance
replaceIfChangedstill clears_loadingon first paint_error(or equivalent) and_loading = falseSuggested fix
Match extension_stats / redis_view guards; treat missing connection as connect failure.