Storage: Add extend_json
Tag for Enhanced JSON Field Handling in bulk_update
Operations
#6659
+195
−17
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.
In #6587, it was determined that when performing
bulk_update
operations on JSON fields likeextra
, the existing JSON should be extended rather than overwritten. To address this, this PR introduces a new tag,extend_json
, that controls howbulk_update
handles JSON fields. By default,extend_json
is set toFalse
, ensuring backward compatibility. When explicitly enabled,bulk_update
merges the provided JSON with the existing JSON field, following to the RFC 7386 - JSON Merge Patch standard. This feature supports both SQLite and PostgreSQL backend.Note:
attributes
andextra
are JSON fields of interest, and few additional JSON fields will be introduced. As a result, automatic detection of JSON fields is not implemented.bulk_update
logic for the SQLite DOS backend currently resides inPsqlDosBackend
. A dirty workaround has to be added inPsqlDosBackend
to address the differences between SQLite and PostgreSQL. This is also stated in a comment block in the code.