Skip to content

DB compatibility: add MySQL 8.4 (LTS/RDS) to CI matrix; pin documented support to tested versions (scope out 9.x) #1497

Closed

Description

@dimitri-yatsenko

Summary

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:117 datajoint/mysql:8.0, :146 postgres: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

  1. 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.
  2. 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.
  3. PostgreSQL claimed 15+ but only 15 is tested (16/17 unverified).

Proposed work

  1. 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.
  2. 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).
  3. Establish the principle: supported == LTS versions we test in CI.

References

  • tests/conftest.py:117 (MySQL image), :146 (PostgreSQL image)
  • .github/workflows/test.yaml (Python-only matrix)
  • reference/specs/database-backends.md:10-13, how-to/installation.md:94 (datajoint-docs)
  • src/datajoint/connection.py — _warn_if_mariadb

Activity

  1. dimitri-yatsenko commented on Jul 17, 2026

    @dimitri-yatsenko
    MemberAuthor

    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).
  2. dimitri-yatsenko commented on Jul 21, 2026

    @dimitri-yatsenko
    MemberAuthor

    Core deliverable addressed and merged:

    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.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementIndicates new improvements

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions