| Bug #117391 | Contribution: protocol_classic: clarify param type and flag | ||
|---|---|---|---|
| Submitted: | 5 Feb 15:21 | Modified: | 13 Mar 13:44 |
| Reporter: | OCA Admin (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
| Version: | 9.2.0 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | Contribution | ||
[5 Feb 15:21]
OCA Admin
[5 Feb 15:21]
OCA Admin
Contribution submitted via Github - protocol_classic: clarify param type and flag (*) Contribution by Daniël van Eeden (Github dveeden, mysql-server/pull/595#issuecomment-2634237916): 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_2314840524.txt (text/plain), 2.09 KiB.
[5 Feb 15:43]
MySQL Verification Team
Hello Daniël, Thank you for the report and contribution. regards, Umesh
[7 Feb 13:02]
Georgi Kodinov
That's not how we treat field type in the code. It's read as 2 bytes and the MSB is filtered off. The rest is used as a type. So, when it overflows to two bytes, we'd still support it in the protocol. I'd keep the current 2 bytes field, but mention the flag.
[7 Feb 13:57]
Daniël van Eeden
I assume you meant to say "...when the type overflows one byte..."? This is when the type spills over into the second byte (where the unsigned flag is using 1 bit).
Would the following be correct?
----------------------------------------------------------
#!/bin/python
type_and_flag = 0xfe80
print(f"Type and Flag (bits) = {type_and_flag:16b}")
print("\nType mask = 1111111100000000")
print(f"Type = {type_and_flag & 0b1111111100000000:016b}")
print("\nFlag mask = 0000000011111111")
print(f"Flag = {type_and_flag & 0b0000000011111111:016b}")
print("\nType mask = 1111111101111111")
print(f"Type (Corrected) = {type_and_flag & 0b1111111101111111:016b}")
print("\nFlag mask = 0000000010000000")
print(f"Flag (Corrected) = {type_and_flag & 0b0000000010000000:016b}")
----------------------------------------------------------
----------------------------------------------------------
Type and Flag (bits) = 1111111010000000
Type mask = 1111111100000000
Type = 1111111000000000
Flag mask = 0000000011111111
Flag = 0000000010000000
Type mask = 1111111101111111
Type (Corrected) = 1111111000000000
Flag mask = 0000000010000000
Flag (Corrected) = 0000000010000000
----------------------------------------------------------
[13 Mar 13:44]
Jon Stephens
Fixed in MySQL 9.3.0. Please see BUG#117503 for docs info. Closed.
