Subdoc SET Operator for Flat Collections #267
Merged
+1,055
−24
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.
PR Summary: Implement SET Operator for Flat PostgreSQL Collections
What
Adds support for the
SETupdate operator on flat PostgreSQL collections, enabling sub-document updates on both top-level columns and nested JSONB paths.Why
To provide MongoDB-like
$setsemantics for flat collections, allowing updates to specific fields without replacing entire documents.Behavior
SET operator handles these scenarios:
SKIPstrategy) or throws (withTHROWstrategy)NULL{}and sets the keyKey behaviors:
jsonb_set(..., true)to create missing keysCOALESCE(column, '{}')to handleNULLJSONB columnsAssumptions
Depth-1 JSONB paths only — Nested paths within JSONB columns are assumed to be at most 1 level deep (e.g.,
customAttributes.myKey). Deeper paths would require recursive path creation which is not implemented yet.MissingColumnStrategy applies to updates — The existing
missingColumnStrategyconfiguration (SKIP/THROW/IGNORE_DOCUMENT) governs behavior when update paths don't resolve to schema columns.