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
{{ message }}
Repository navigation
DB compatibility: add MySQL 8.4 (LTS/RDS) to CI matrix; pin documented support to tested versions (scope out 9.x) #1497
Our database compatibility story has a gap between what we claim, what we test, and what we
actually deploy to (AWS RDS). Most importantly, MySQL 8.4 — the current LTS and what AWS RDS runs
— is not tested in CI, and our open-ended version wording implicitly promises MySQL 9.x, which is an
Innovation series (never an LTS, not an RDS target) that we should not be committing to.
Current state
Documented claims (minimums only, open-ended):
reference/specs/database-backends.md — "Supported Backends" table: MySQL min 8.0.13, PostgreSQL
min 15, both "Production."
how-to/installation.md: "MySQL 8.0.13+ or PostgreSQL 15+."
about/whats-new-21.md: "PostgreSQL 15+ … alongside MySQL 8+."
connection.py warns MariaDB is not officially supported in 2.x (best-effort).
Actually tested in CI: only MySQL 8.0 and PostgreSQL 15, pinned via testcontainers
(tests/conftest.py:117datajoint/mysql:8.0, :146postgres:15). The CI matrix
(.github/workflows/test.yaml) varies Python only (3.10 / 3.14) — the DB version is not a
matrix axis. So MySQL 8.0 + PG 15 are the only combinations we prove.
Gaps
MySQL 8.4 (LTS / AWS RDS) is untested. We test 8.0, not 8.4 — yet 8.4 is the version we most
need to guarantee for RDS deployments.
Open-ended 8.0.13+ implicitly promises 9.x. MySQL 9.x are Innovation releases — never an LTS,
not offered as a standard RDS engine. We have fielded 9.6 bug reports for a version we do not deploy
to; the docs should bound this, not invite it.
PostgreSQL claimed 15+ but only 15 is tested (16/17 unverified).
Proposed work
Make the DB version a real CI matrix axis. Add MySQL 8.4 alongside 8.0 (parameterize the
testcontainers image, e.g. MYSQL_VER in tests/conftest.py + a matrix in test.yaml). Optionally
add PostgreSQL 16/17 if we want to claim beyond 15.
Tighten the documented support policy to match tested versions. State explicit tested versions
(MySQL 8.0 and 8.4 LTS; PostgreSQL 15) in database-backends.md and installation.md, and explicitly scope out MySQL 9.x (Innovation, non-LTS, not RDS → best-effort at most, not a support
commitment).
Establish the principle: supported == LTS versions we test in CI.
Progress: proposed-work item 1 (make the DB version a CI matrix axis) is done — merged #1498 added an mysql-image matrix axis testing both datajoint/mysql:8.0 and mysql:8.4 and parameterized the testcontainer image. #1498 says "Refs #1497," not "Closes," so keeping this open.
Remaining (datajoint-docs, items 2–3):
Tighten the documented support policy to the tested versions (MySQL 8.0 + 8.4 LTS; PostgreSQL 15) in database-backends.md and installation.md.
Explicitly scope out MySQL 9.x (Innovation, non-LTS, not an RDS target → best-effort at most).
PostgreSQL 16/17 was explicitly optional and MySQL 9.x (Innovation, non-LTS, not RDS) is deliberately out of scope, so nothing outstanding blocks closure. Minor doc follow-up tracked separately: flip the datajoint-docs "Tested in CI" cell from "8.0 (8.4 in progress)" to "8.0, 8.4".
Activity
dimitri-yatsenko commentedon Jul 17, 2026
Progress: proposed-work item 1 (make the DB version a CI matrix axis) is done — merged #1498 added an
mysql-imagematrix axis testing bothdatajoint/mysql:8.0andmysql:8.4and parameterized the testcontainer image. #1498 says "Refs #1497," not "Closes," so keeping this open.Remaining (datajoint-docs, items 2–3):
database-backends.mdandinstallation.md.dimitri-yatsenko commentedon Jul 21, 2026
Core deliverable addressed and merged:
repr_html#209.PostgreSQL 16/17 was explicitly optional and MySQL 9.x (Innovation, non-LTS, not RDS) is deliberately out of scope, so nothing outstanding blocks closure. Minor doc follow-up tracked separately: flip the datajoint-docs "Tested in CI" cell from "8.0 (8.4 in progress)" to "8.0, 8.4".
Closing.