Bug #114857 Contribution: Update charset/collation description indicate this is 16-bits ...
Submitted: 2 May 2024 18:09 Modified: 12 Sep 2024 20:11
Reporter: OCA Admin (OCA) Email Updates:
Status: Closed Impact on me:
None 
Category:Connector / Python Severity:S3 (Non-critical)
Version:8.0 OS:Any
Assigned to: CPU Architecture:Any

[2 May 2024 18:09] OCA Admin
Description:
This bug tracks a contribution by Daniël van Eeden (Github user: dveeden), as described in http://github.com/mysql/mysql-connector-python/pull/96

How to repeat:
See description

Suggested fix:
See contribution code attached
[2 May 2024 18:09] OCA Admin
Contribution submitted via Github - Update charset/collation description indicate this is 16-bits, not 8-bits. 
(*) Contribution by Daniël van Eeden (Github dveeden, mysql-connector-python/pull/96#issuecomment-2088255362): I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.

Contribution: git_patch_1849282515.txt (text/plain), 2.74 KiB.

[3 May 2024 6:08] MySQL Verification Team
Hello Daniël,

Thank you for the report and contribution.

regards,
Umesh
[3 May 2024 6:24] Daniël van Eeden
Please make sure to consider the comment from Vladislav Vaintroub on GitHub when checking this: https://github.com/mysql/mysql-connector-python/pull/96#issuecomment-2091275230
[3 May 2024 6:37] Daniël van Eeden
Note that there are two possibilities here:

1. Connector/Python is violating the protocol

This means:
- this is a bug in Connector/Python
- this invalidates my contribution to update the comments
- this means none of the connectors should send a collation that's more than 255 (1 byte)
- this means a COM_QUERY with `SET NAMES` is needed for collations >255.
    For `latin1_bin` I've seen Connector/Python do this:
    `SET NAMES 'latin1' COLLATE 'latin1_bin'`
    `SET NAMES latin1`
    This adds at least one roundtrip, maybe two. Not sure why there are two statements. The second one is only using the charset without quotes.

2a. Connector/Python is doing the right thing

This means:
- My contribution is valid
- The protocol docs are wrong or at least require an update
- The server should be made to read 2 bytes for collations
- The collation in this packet can be used to set the collation even if it is >255, without the need for `SET NAMES...`

2b. The protocol needs updating in a different way

This means:
- My contribution is invalid
- Connector/Python is violating the protocol
- The other byte of the collation should be send elsewhere in the protocol (not in the place where Connector/Python is putting it).
[3 May 2024 6:39] Daniël van Eeden
Related: 
Bug #114818 	Contribution: docs: multibyte collation for HandshakeResponse41
[11 Sep 2024 9:43] Souma Kanti Ghosh
Posted by developer:
 
Hello Daniël,

Thank you for reporting this issue, your contribution helped a lot in fixing this one.

Thanks and Regards,
Souma Kanti Ghosh
[12 Sep 2024 20:11] Philip Olson
Posted by developer:
 
Fixed as of the upcoming MySQL Connector/Python 9.1.0 release, and here's the proposed changelog entry from the documentation team:

The connector sent two bytes for the collation in the response packet,
instead of one.

Thank you for the bug report.