preaction / Minion-Backend-mysql

MySQL backend for the 🐙 Minion job runner
Other
7 stars 14 forks source link

Decide on minimum supported MySQL/MariaDB version #16

Closed lammel closed 11 months ago

lammel commented 6 years ago

To upgrade the database schema to a recent version matching the schema handled by Minion::Backend-Pg the JSON related functions and storing array must be supported (ENUM should not be an issue).

This would mean that the minimum supported MySQL version would have to be raised to MySQL 5.7 / MariaDB 10.2 which would be rather new and limit adoption.

On the other hand it would be hard to achieve feature parity without using a newer version.

This ticket is meant to decide on the minimum supported MySQL/MariaDB version.

preaction commented 6 years ago

It's not so hard to have array-like things or even JSON object-like thing: Just need more tables, which will affect performance. We're not required to keep the same schema as the Pg backend.

We already fixed/broke a bunch of things with the TIMESTAMP columns that aren't backwards-compatible before 5.6, so 5.6 is our current minimum version (5.6.5 I think even, that's what our tests declare).

lammel commented 6 years ago

Well, then I'm going to update the MySQL migrations based on MySQL 5.6 / MariaDB 10.1. For array-like usage, we can simply use a many-to-many relation (parents of a job), which should still allow for good enough performance.

For the JSON stuff, I'm not sure how we can handle that apart from using a text only string (VARCHAR or TEXT) and handling the results in perl.

Work will be based on the fix-features branch.

preaction commented 6 years ago

What JSON querying support does the backend require?

preaction commented 4 years ago

24 was submitted about the multiple timestamp columns problem, and I've included a patch that may fix the issue. The backend didn't need the defaults set at all since the backend always provided values for those columns (or providing a default of 0 would affect nothing). That may push supported MySQL versions back further (though I still don't have a working Travis configuration for testing different versions of MySQL...)