fix(mysql): request CLIENT_FOUND_ROWS so idempotent UPDATE reports matched rows (#889) - #961
Merged
ZhuchkaTriplesix merged 1 commit intoSep 25, 2026
Conversation
…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.
ZhuchkaTriplesix
deleted the
issue/889-mysql-idempotent-update-affected-rows
branch
September 28, 2026 08:13
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.
Описание изменений
third_party/mysql_clientв набор capability-флагов клиента добавленCLIENT_FOUND_ROWS(и вHandshakeResponse41, и вSSLRequest). ТеперьaffectedRows= число совпавших строк, а не изменённых, как в PostgreSQL и SQLite.affectedRows = 0и не откатывает весь пакет Save. Проверка "ровно 1 строка" из fix(grid): enforce exact single-row match in expectDmlMatchedRows (#896) #959 остаётся в силе, а код вmysql_table_view.dartиmysql_sql_workspace.dartменять не пришлось.third_party/mysql_client/test/mysql_packet_test.dart(офлайн, запускал локально, проходит).Связанные Issue
Closes #889