Skip to content
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

Dropped support for OpenSSL 1.1, MariaDB and Pre MySQL 8.4 LTS versions #29960

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

Ovahlord
Copy link
Contributor

@Ovahlord Ovahlord commented May 5, 2024

Controversal changes, might not get approved, however, someone may eventually resurrect the PR if it shouldn't get merged. At least I tried :)

Changes proposed:

  • The time for MySQL 5.7 has come to an end with MySQL 8.4 being the first long term support version of MySQL 8. This marks the point where we will start using MySQL 8 as default version since this is the version that has gotten rid of many functions that have been marked as deprecated for quite some time.

  • Since MariaDB is still using MySQL 5.7 functions, it is no longer compatible with MySQL 8.4. Following this update, the support for MariaDB has been removed as a result of incompatability

  • OpenSSL 3 is now default shipped alongside MySQL 8 and is also now the required version for users to install for consistency reasons. The backwards compatability has been removed from the core. This means that OpenSSL 1.1 has been put to rest and can no longer be used.

Tests performed:

  • built, tested, no regressions

Known issues and TODO list: (add/remove lines as needed)

  • validate if MySQLWorkaround.h is still needed or if it can be safely removed
  • tank the shitstorm of angry MariaDB and old MySQL DB users
  • Maybe keep support for older MySQL 8 versions though there is no reason to do so as not even Oracle cares about them anymore and is now focusing on 8.4 as first maintained version
  • depending on if there will be something like 8.4.1 we may add some wildcard support for subversions

MySQL 8.4 is the first long term support version of MySQL 8 which means this this version will be maintained and updated for a longer period of time which means there is no point for us to keep the older versions around as this version is gonna be the go-to standard for the time being.
OpenSSL 1.1 has been deprecated for quite some time now so it is time to put it to rest. Please upgrade to OpenSSL 3.x
…sql_stmt_bind_named_param

* MySQL 8.4 has removed the deprecated function and consequently we are no longer using it. This removes support for MariaDB since it uses MySQL 5.7 functions which partially no longer available for MySQL 8.4
… to 8.4 and removed remaining traces of the deprecated MariaDB support layer
@acidmanifesto
Copy link
Contributor

acidmanifesto commented May 5, 2024

Just some fyi. Openssl 1.1.x is no longer provided currently due to security exploits and has been dropped by infavor for openssl 3.x.x
The link to the openssl dependiences on the tc wiki only provides openssl 3.x.x.
As for mysql, there are alot of wide changes that will make future queries backwards not compatible with earlier versions of mysql, we already seen some queries not being compatible withing 5.6 and 5.7 variation.
Mariadb should be dropped full due to the incompatibility that is growing between the two sql giants.
I for one favor the idea of this pr and hope it will move forward.

@CraftedRO
Copy link
Contributor

just logged in to wish this will not be merged to 3.3.5 at least, you had your preservation thing compatible with mysql 5.1 till almost died (has been archived) I don't see the concern about this in TC.

@danielsreichenbach
Copy link

Not an active contributor, just a user. Would like to suggest to treat any external dependency just like compiler support.

Minimum version should be the versions available in the supported Linux distributions without having to add external repositories.

Effectively that means MariaDB 10.6 or newer, and for Windows one might support MySQL. I don't really know what's the issue with MariaDB but I do know that any stable non Windows system by default does not support MySQL but MariaDB. So if supporting Linux for the project is a primary object, so should being able to use MariaDB.

I do agree with dropping OpenSSL < 3.0 though since that's basically gone from any Linux distro that is considered stable.

Generally I get the sentiment of "just add external repository and get the new stuff" but it's in reality for Linux systems a huge source of frustration and problems since external repositories tend to get fucked up or dropped or ship broken packages.

So I would advise against "use the newest, cool stuff" and suggest a pragmatic approach: use what's is considered stable on the platform, and supported by default. Anything else is bad practice IMHO.

@Ovahlord
Copy link
Contributor Author

Ovahlord commented May 6, 2024

Not an active contributor, just a user. Would like to suggest to treat any external dependency just like compiler support.

Minimum version should be the versions available in the supported Linux distributions without having to add external repositories.

Effectively that means MariaDB 10.6 or newer, and for Windows one might support MySQL. I don't really know what's the issue with MariaDB but I do know that any stable non Windows system by default does not support MySQL but MariaDB. So if supporting Linux for the project is a primary object, so should being able to use MariaDB.

I do agree with dropping OpenSSL < 3.0 though since that's basically gone from any Linux distro that is considered stable.

Generally I get the sentiment of "just add external repository and get the new stuff" but it's in reality for Linux systems a huge source of frustration and problems since external repositories tend to get fucked up or dropped or ship broken packages.

So I would advise against "use the newest, cool stuff" and suggest a pragmatic approach: use what's is considered stable on the platform, and supported by default. Anything else is bad practice IMHO.

As MariaDB is likely never going to adapt the MySQL 8 functions and is gonna stick with 5.7, which is pretty much deprecated at this point, the end of support is inevitable. TrinityCore uses MySQL, not MariaDB. The sparse support for MariaDB was a result of it being close enough to MySQL. This has changed. MySQL 8.4 and going forward is going to deprecate and remove more and more 5.7 functionality which will lead to incompatability. In a sense, it already is to some degree.

@danielsreichenbach
Copy link

Then I would suggest to consider something like Postgres instead unless you want to make it super painful for Linux folks out there. Highly doubt MySQL will return to Linux distros.

@Fabi
Copy link
Contributor

Fabi commented May 6, 2024

Finally.
Openssl 1 is eol, mysql 5.7 is eol and mariadb was never supported. So updating those to it's latest parts and dropping support for the others should have been done a long time ago.

And for linux users it is VERY common to use other repos, especially official repos for specific versions. People who say otherwise are stuck in their bubble of never using up2date software and only what an OS provides (basically very bad company like thoughts).

So basically everything that goes eol should be updated as requirement before it's eol and that is due a long time now. Do it faster :D

Update: Also be sure to also update newer versions in future. not only LTS versions

@Ovahlord
Copy link
Contributor Author

Ovahlord commented May 6, 2024

Finally. Openssl 1 is eol, mysql 5.7 is eol and mariadb was never supported. So updating those to it's latest parts and dropping support for the others should have been done a long time ago.

And for linux users it is VERY common to use other repos, especially official repos for specific versions. People who say otherwise are stuck in their bubble of never using up2date software and only what an OS provides (basically very bad company like thoughts).

So basically everything that goes eol should be updated as requirement before it's eol and that is due a long time now. Do it faster :D

Well, there is one particular thing for master at least and that's the legacy openssl provider. Master is currently forced to load it because of the outdated warden implementation which uses RC4 stuff, that has long been deprecated. And as long as we don't know what the new warden uses, we can't replace it. On top of one certain individual wanting to reduce differences between branches (bc 335 uses RC4 everywhere) so Arc4 is kinda stuck to stay

@jackpoz
Copy link
Member

jackpoz commented May 7, 2024

Then I would suggest to consider something like Postgres instead unless you want to make it super painful for Linux folks out there. Highly doubt MySQL will return to Linux distros.

https://trinitycore.info/install/requirements/linux our wiki already includes steps on how to install MySQL and we support only setups that follow our wiki instructions.

You are free to use a different DBMS and maintain any code change required by that DBMS. If you guarantee you will take care of the support, we might even accept that as a PR, but you will have to verify not just that it compiles but that any MySQL feature is supported and behaves in the same way.

Please note that MariaDB developers say that MariaDB is not 100% compatible with MySQL at https://mariadb.com/kb/en/mariadb-vs-mysql-compatibility/#incompatibilities-between-currently-maintained-mariadb-versions-and-mysql , ask them to provide 100% compatibility and we will then support both.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants