fix(grid): clear primary key columns when duplicating a row in staging buffer (#888) - #962
Merged
Merged
Conversation
…g buffer (Closes #888) Duplicate Row cloned every cell verbatim, so the staged INSERT carried the original primary key and Save failed with a unique constraint violation. Add DataGridStagingBuffer.duplicateRow, which blanks primary key cells (matched case-insensitively and ignoring identifier quoting) so the engine can omit them and let the database generate the key. The buffer now receives the table primary keys from the Table Browser views and SQL workspaces, and the grid delegates Duplicate Row to it.
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.
Описание изменений
DataGridStagingBufferпринимаетprimaryKeysи получилduplicateRow(index): копирует строку (базовую или уже вставленную) в новую вставляемую, очищая ячейки PK. Имена сравниваются без учёта регистра и кавычек, составные ключи очищаются целиком. Staged NULL копируется какNULL.VirtualResultGrid._handleDuplicateRowвызываетduplicateRowс индексом модели (учитывает сортировку).replaceTableViewStagingBuffer(primaryKeys:)и SQL workspaces.data_grid_staging_buffer_test(одиночный и составной PK, NULL, дубль вставленной строки, без PK, неверный индекс).Связанные Issue
Closes #888
Тесты локально не запускались (есть CI),
dart analyzeчистый.