Skip to content

perf(workspace): optimize large SQL result set mapping and DDL rendering (#334) - #338

Merged
ZhuchkaTriplesix merged 1 commit into
devfrom
issue/334-optimize-result-mapping
Jul 13, 2026
Merged

perf(workspace): optimize large SQL result set mapping and DDL rendering (#334)#338
ZhuchkaTriplesix merged 1 commit into
devfrom
issue/334-optimize-result-mapping

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

Что сделано

  • Фоновый маппинг больших выборок SQL (compute()):
    • Созданы утилиты фоновой конвертации для PostgreSQL (postgres_result_utils.dart) и SQLite (sqlite_result_utils.dart), аналогичные MySQL (mysql_result_utils.dart).
    • В PostgresSqlWorkspace, MysqlSqlWorkspace и SqliteSqlWorkspace при получении выборок объёмом более 500 строк маппинг ячеек в строковые представления для таблицы (null -> 'NULL', форматирование значений) теперь выполняется в фоновом изоляте (await compute(...)). Для выборок до 500 строк маппинг выполняется синхронно (без накладных расходов на создание изолята). Это полностью устраняет фризы (UI Jank) при открытии и прокрутке выборок до 10 000 строк.
  • Виртуализация DDL и длинных логов/ошибок:
    • Создан компонент VirtualSelectableTextView, который при небольшом объёме текста (до 200 строк) использует SingleChildScrollView + SelectableText для удобного выделения всего блока разом, а при объёме свыше 200 строк переключается на построчную виртуализацию через ListView.builder.
    • Внедрён в просмотр DDL процедур/функций (MysqlRoutineView, PostgresRoutineView), а также в отображение длинных трейсов ошибок (ResultsTab, MysqlRoutineView).
  • Новые unit-тесты: созданы result_conversion_perf_test.dart и virtual_selectable_text_view_test.dart.

Как проверялось

  • flutter analyze — 0 проблем.
  • flutter test — 831 из 831 тестов успешно пройдено.

Closes #334

@ZhuchkaTriplesix
ZhuchkaTriplesix merged commit 9e5cd4e into dev Jul 13, 2026
4 of 5 checks passed
ZhuchkaTriplesix added a commit that referenced this pull request Jul 27, 2026
perf(workspace): optimize large SQL result set mapping and DDL rendering (#334)
@ZhuchkaTriplesix ZhuchkaTriplesix self-assigned this Jul 27, 2026
@ZhuchkaTriplesix
ZhuchkaTriplesix deleted the issue/334-optimize-result-mapping branch July 27, 2026 20:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant