The Game Panel specification

ADR-0016: PostgreSQL 16 is the only supported database

Context

The panel assumes MySQL, or a compatible MariaDB, and supports other drivers inside the database component without exposing them, per ADR-0007. MySQL was chosen as the simplest assumption for people setting the panel up.

The panel is built from scratch and distributed as a binary it controls, per ADR-0009, so what it runs against is the panel’s choice rather than whatever a host happens to provide. Nothing needs it to run on more than one database.

Subsystems that are designed but not built need things a database either provides or does not: delivery of events between processes, a queue claiming jobs without two workers taking the same one, a scheduler electing one instance to run a due task, and policies that restrict which rows a request can see.

Decision

PostgreSQL is the panel’s only supported database, at version 16 or above. MySQL and MariaDB are no longer supported, and the engine commits to one dialect rather than abstracting over two.

The floor is 16 because it is the lowest default across every currently supported mainstream distribution, so nobody self-hosting has to add a third-party package repository, and it is supported upstream until November 2028.

Alternatives

Staying on MySQL or MariaDB, as before. The reason recorded for moving is that PostgreSQL offers more of what the panel needs, and that nothing forces the simpler assumption MySQL was chosen for, now that the panel is built from scratch and ships as its own binary. The comparison itself is not recorded.

Supporting both, by abstracting over the two dialects. There is no requirement to run anywhere but where the panel is installed, so the abstraction would cost more than it gives, and neither dialect would be used properly.

Consequences

Easier:

Harder:

Constrained:

Sources