Fix -> operator on missing values to return null #193
Merged
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.
Using the
->
operator with a missing value, for exampleselect '{}' -> 'test'
, would returnundefined
instead ofnull
. We use SQLite types, so there should never be anundefined
value.This was specifically an issue when used together with
json_each
, for exampleSELECT value as project_id FROM json_each(request.jwt() -> 'project_ids')
. This query would throw an errorExpected json_each to be called with a string, got undefined
, instead of treating it like an empty array like withnull
values.This fixes
select '{}' -> 'test'
to returnnull
correctly.This also adds tests for all the following forms:
Notice the difference in handling of
{"t": null}
values between PowerSync and SQLite. That is not affected by this PR though, and fixing it to match SQLite would be a breaking change, so keeping it as-is for now.