-
Notifications
You must be signed in to change notification settings - Fork 14.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Actually run against the version of the DB we select in the matrix. #12591
Actually run against the version of the DB we select in the matrix. #12591
Conversation
#12588 for instance. |
Who tests the tester ..... Happy to take a look and fix those tests. Good that you found it @ashb |
| Row size too large. The maximum row size for the used table type, not counting BLOBs, is 65535. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs I saw this before with indexes. It's likely tth e are rruning utf8mb4 charset in our tests it likely causes some columns too be too big. I wonder though why it does not fail for 5.7. |
Could this be related:
|
The "fix" may be to make extra a TEXT rather than varchar column, that's why Mysql seems to suggest in their docs. |
Yep. The only thing that makes it really strange that it does not fail in MySQL 5.7 |
The only thing that doesn't surprise me about MySQL versions is just how surprising each version is in it's behaviour :) |
I start hating it for that reason too. |
Checking why |
This table works fin on 5.7:
|
I make that ~17k of length, which if we assume Mysql8 now uses 4 bytes per char pushses itjust over to 68k, where as at 3 bytes per it's 51k. |
I KNOW. It is a total 🤦 |
Well atleast we didn't find any issues with Postgres13. For MySQL I think let's just change the column to TEXT |
It's so bad on the MYSQL side, that I even do not know how to react ..... It seems that when you use Mysql8 Client and request utf8mb4 character, the database is created with 🤦 🤦 🤦 🤦 🤦 🤦 🤦 latin1 collation.... This is what happens in our case. When we changed client in the docker image to use mysql8 client, our 5.7 database silently started to be created as latin1 database instead of utf8mb4 and it worked fine with the increased size, because in latin1 the row size is much smaller. Mysql 8 client's utf8mb4 is turned into utf8mb4_0900_ai_ci which is not known to mysql 5.7 and it falls back to default which is latin1 in MySQL5.7. TRUE STORY. https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html
|
So even our tests for MySQL 5.7 are wrong! |
Why don't we say that we do not support utf8mb4 at all for mysql? Just utf8mb3? Seriously - with this problem in MySQL client, it is simply SAFER not to run utf8mb4 AT ALL |
And Who needs it anyway? |
I have no problem with limiting the possible combinations of mysql we support, so sure. Slight correction: let's phrase it as some form of "PR's welcome" rather than a "we won't ever support this". |
Due to not executing MySQL8 tests Fixed in apache#12591 added description for connection table was not compatible with MySQL8 with utf8mb4 character set. This change adds migration and fixes the previous migration to make it compatible.
I did a thorough check - and I run a few tests and It is actually a bit better than that. The "fallback" behavior is still there. Still the clients's behavior remains very bad but at least we mitigate it in tests. |
Due to not executing MySQL8 tests Fixed in #12591 added description for connection table was not compatible with MySQL8 with utf8mb4 character set. This change adds migration and fixes the previous migration to make it compatible.
* Fix Connection.description migration for MySQL8 Due to not executing MySQL8 tests Fixed in #12591 added description for connection table was not compatible with MySQL8 with utf8mb4 character set. This change adds migration and fixes the previous migration to make it compatible. * Fixes inconsistent setting of encoding on Mysql 5.7/8 We missed that when we added support for differnet mysql versions in #7717 when we removed default character set setting for the database server. This change forces the default on database server to be utf8mb4 - regardless if MySQL 5.7 or MySQL8 is used. Utf8mb4 is default for MySQL8 but latin1 is default fo MySQL 5.7. There was a suspected root cause of the problem: https://dev.mysql.com/doc/refman/8.0/en/charset-connection.html where mysql client falls back to the default collation if the client8 is used with 5.7 database, but this should be no problem if the default DB character set is forced to be utf8mb4 This PR restores forcing the server-side encoding.
@ashb -> you can rebase this one now. |
In orer to make sure that it works faster I rebased it and pushed in our repo -> #12621 |
Due to a bug in Breeze initialization code, we were always running against Postgres 9.6 and MySQL 5.7, even when the matrix selected something else. (We were overwriting the POSTGRES_VERSION and MYSQL_VERSION environment variables in initialization code)
07234dd
to
a86379d
Compare
All tests completed - just upload coverage to run. |
…pache#12591) Due to a bug in Breeze initialization code, we were always running against Postgres 9.6 and MySQL 5.7, even when the matrix selected something else. (We were overwriting the POSTGRES_VERSION and MYSQL_VERSION environment variables in initialization code) (cherry picked from commit 54adda5) (cherry picked from commit ca53e70)
…pache#12591) Due to a bug in Breeze initialization code, we were always running against Postgres 9.6 and MySQL 5.7, even when the matrix selected something else. (We were overwriting the POSTGRES_VERSION and MYSQL_VERSION environment variables in initialization code) (cherry picked from commit 54adda5)
…12591) (#12668) Due to a bug in Breeze initialization code, we were always running against Postgres 9.6 and MySQL 5.7, even when the matrix selected something else. (We were overwriting the POSTGRES_VERSION and MYSQL_VERSION environment variables in initialization code) (cherry picked from commit 54adda5) Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com>
…pache#12591) (apache#12668) Due to a bug in Breeze initialization code, we were always running against Postgres 9.6 and MySQL 5.7, even when the matrix selected something else. (We were overwriting the POSTGRES_VERSION and MYSQL_VERSION environment variables in initialization code) (cherry picked from commit 54adda5) Co-authored-by: Ash Berlin-Taylor <ash_github@firemirror.com>
Due to a bug in Breeze initialization code, we were always running
against Postgres 9.6 and MySQL 5.7, even when the matrix selected
something else.
(We were overwriting the POSTGRES_VERSION and MYSQL_VERSION environment
variables in initialization code)
I wouldn't be surprised if we now discover that we have some bugs on MySQL 8
^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code change, Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in UPDATING.md.