feat(query): Enhance JSON Parsing with Decimal Support and Extended Syntax #18252
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.
I hereby agree to the terms of the CLA available at: https://docs.databend.com/dev/policies/cla/
Summary
This PR introduces significant enhancements to Databend's
parse_json
function, focusing on improved numerical precision and expanded syntax support for greater flexibility in handling diverse JSON formats.Key Changes:
Decimal Support for Numbers:
99999999999999999999
) would be parsed as floating-point numbers (e.g.,1e20
), resulting in a loss of precision.parse_json
now supports parsing numbers asDecimal
data types, preserving the original precision of large integers.Extended JSON Syntax Support:
Improves compatibility with a wider range of JSON formats by relaxing certain parsing restrictions.
The following extended syntax features are now supported:
[1,2,,4]
), which will be parsed asnull
values (e.g.,[1,2,null,4]
).+
prefix (e.g.,+123
), which will be parsed as the corresponding positive number (e.g.,123
).00001
), which will be parsed as the equivalent integer (e.g.,1
)..1
will be parsed as0.1
, and1.
will be parsed as1
).Benefits:
Tests
Type of change
This change is