Sync EQ/NEQ on Arrays in Flat Collections with Mongo #257
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.
Fix Postgres Array EQ/NEQ Query Generation
Problem
EQandNEQoperators on array fields in flat should behave similarly to Mongo:EQscalar: Containment check.NEQscalar: ! containment check.EQarrays: Exact match on arrays.NEQarrays: ! exact match on arrays.Solution
1. Operator Conversion for Scalar Values
When EQ/NEQ is used on an array field with a scalar RHS, convert to
CONTAINS/NOT_CONTAINS:tags EQ "hygiene"→tags @> ARRAY['hygiene']::text[]props.colors NEQ "Blue"→NOT (props->'colors' @> '["Blue"]'::jsonb)2. Exact Equality for Array Values
When EQ/NEQ is used with an array RHS, use exact equality operators:
tags EQ ["hygiene", "family-pack"]→tags = ARRAY['hygiene','family-pack']::text[]props.colors EQ ["Blue", "Green"]→props->'colors' = '["Blue","Green"]'::jsonbTesting
[x] Added integration tests.
[] Test these changes in a live env.
Checklist: