Change the way types for prepared statement parameters are calculated #1407
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.
Currently types are inferred based on what is in the input (Date -> mysql date, js number -> mysql double, everything else - string ). This used to work ok until mysql server version 8.0.22
Calling
execute('SELECT * from foo limit ?' , [1])
results inIncorrect arguments to mysqld_stmt_execute
error. The type of the parameter server expects ( LONGINT ) is incompatible to what is actually sent ( DOUBLE ).The fix is to use parameters column definitions returned from the previous
prepare()
call and use types from there instead of inferring type from the provided input