You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
👋 when Slack migrated from v14 -> v15 we noticed a breakage in query responses: aggregators, for example COUNT(*) are returned always as lower-case count(*). This behaviour deviates from the MySQL server, which maintains the provided case (like <= v14) of aggregator "names"
This query breakage started when we upgraded vttablets, the first step in our v14->v15 upgrade. This should mean the change is in the vttablet-side of sql parser
For some languages/drivers (in our case Hacklang), this means that gathering the response-value by name, example: COUNT(*) returns no value, because the map/dictionary key became lowercase count(*) - a different map/dict key entirely
Example on v14 (the case we provided is == in response):
We believe this incompatibility was introduced by this PR: #10507(#10347 may also be related), which removed the Names field that gave the parser context of what the client "named" the column. My gut feel is the only way to restore the MySQL compatibility here is to undo this change 🤔
Reproduction Steps
Launch a Vitess cluster
CREATE TABLE sbtest1 (k bigint)
INSERT INTO sbtest1 (k) VALUES(183)
SELECT MIN(k) FROM sbtest1
Observe that MIN(k) is returned in lower-case, breaking MySQL compatibility
Binary Version
All versions >= v15
Operating System and Environment details
Linux
Log Fragments
The text was updated successfully, but these errors were encountered:
Overview of the Issue
👋 when Slack migrated from v14 -> v15 we noticed a breakage in query responses: aggregators, for example
COUNT(*)
are returned always as lower-casecount(*)
. This behaviour deviates from the MySQL server, which maintains the provided case (like <= v14) of aggregator "names"This query breakage started when we upgraded
vttablet
s, the first step in our v14->v15 upgrade. This should mean the change is in thevttablet
-side of sql parserFor some languages/drivers (in our case Hacklang), this means that gathering the response-value by name, example:
COUNT(*)
returns no value, because the map/dictionary key became lowercasecount(*)
- a different map/dict key entirelyExample on v14 (the case we provided is == in response):
Example on v15+ (inconsistent case):
And on MySQL 8.x, we see MySQL has the pre-v15 behaviour:
We believe this incompatibility was introduced by this PR: #10507 (#10347 may also be related), which removed the
Names
field that gave the parser context of what the client "named" the column. My gut feel is the only way to restore the MySQL compatibility here is to undo this change 🤔Reproduction Steps
CREATE TABLE sbtest1 (k bigint)
INSERT INTO sbtest1 (k) VALUES(183)
SELECT MIN(k) FROM sbtest1
MIN(k)
is returned in lower-case, breaking MySQL compatibilityBinary Version
All versions >= v15
Operating System and Environment details
Log Fragments
The text was updated successfully, but these errors were encountered: