Skip to content

fix(mysql): request CLIENT_FOUND_ROWS so idempotent UPDATE reports matched rows (#889) - #961

Merged
ZhuchkaTriplesix merged 1 commit into
devfrom
issue/889-mysql-idempotent-update-affected-rows
Sep 25, 2026
Merged

ZhuchkaTriplesix merged 1 commit into
devfrom
issue/889-mysql-idempotent-update-affected-rows

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

Описание изменений

  • В vendored third_party/mysql_client в набор capability-флагов клиента добавлен CLIENT_FOUND_ROWS (и в HandshakeResponse41, и в SSLRequest). Теперь affectedRows = число совпавших строк, а не изменённых, как в PostgreSQL и SQLite.
  • Итог: UPDATE, записывающий то же значение, больше не даёт affectedRows = 0 и не откатывает весь пакет Save. Проверка "ровно 1 строка" из fix(grid): enforce exact single-row match in expectDmlMatchedRows (#896) #959 остаётся в силе, а код в mysql_table_view.dart и mysql_sql_workspace.dart менять не пришлось.
  • Побочный эффект: в SQL-редакторе число "affected rows" для UPDATE теперь показывает matched, а не changed.
  • Тест на флаги в обоих пакетах: third_party/mysql_client/test/mysql_packet_test.dart (офлайн, запускал локально, проходит).

Связанные Issue

Closes #889

…tched rows (Closes #889)

MySQL reports rows changed by default, so an UPDATE that rewrites a cell with
its existing value returns affectedRows = 0. expectDmlMatchedRows treated that
as a stale row and rolled back the whole staged save.

Advertise CLIENT_FOUND_ROWS in the vendored mysql_client handshake (both the
plain response and the SSL request) so affectedRows means matched rows, as it
already does for PostgreSQL and SQLite. The exact-one-row check stays intact.
@github-actions github-actions Bot added bug Something isn't working stability Theme parser epic label: stability mysql MySQL database driver and workspace data-grid Interactive data grid, cell editor, filtering, groupings labels Sep 25, 2026
@github-actions github-actions Bot added this to the 0.4.18 milestone Sep 25, 2026
@ZhuchkaTriplesix
ZhuchkaTriplesix merged commit 5a36e5f into dev Sep 25, 2026
3 checks passed
@ZhuchkaTriplesix
ZhuchkaTriplesix deleted the issue/889-mysql-idempotent-update-affected-rows branch September 28, 2026 08:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working data-grid Interactive data grid, cell editor, filtering, groupings mysql MySQL database driver and workspace stability Theme parser epic label: stability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant