[NR-302034] fix: handle DECIMAL values in custom queries #173
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.
This PR updates the function handling custom queries in order that it can parse DECIMAL values.
The previous implementation was scanning all the values into
interface{}
values, which means that the driver performs no conversion, and later it was converting all the values to string, to finally try to convert toFloat64
for the corresponding types. This wasn't working well because the driver represents DECIMAL values asuint8[]
and the corresponding conversion to string was an array of bytes. We have updated it to directly scan the values into thestring
type (which tells the driver to perform the corresponding conversion) and later, we keep converting the strings to numbers only when needed.The PR also includes a small refactor of the function handling custom queries and some unit-test to try to assure its behavior doesn't change.