Respect character_set_results
when emitting field metadata
#2140
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.
For non-binary types, we need to respect the value for the
character_set_results
session var (when notNULL
) and use that for the field metadata returned in the MySQL wire protocol.The unexpected charset/collation metadata is causing DataGrip to be unable to work with some types in the table editor ( see dolthub/dolt#6970 for more details).
I've validated this behavior with MySQL by inspecting packets with Wireshark. For testing, we were already testing the behavior of
character_set_results
and the charset translation, but we weren't testing the field metadata. I added support to check against the expect charset field metadata, but had to use reflection to get that data from the MySQL driver, since it's not exposed through the standard golang sql database APIs.