Problem/Motivation
MariaDB 12.3 is the current Long-Term-Support release (GA 12.3.2, May 2026, supported through June 2029). Core's GitLab CI currently tests MariaDB only on mariadb-10.11 (which reaches EOL in 2029, but is two LTS cycles behind), so we have no coverage on the MariaDB version most new installs will adopt.
Testing on 12.3 also surfaces a real behavioral change: MariaDB 11.5+ changed the default collation of the utf8mb4 charset from utf8mb4_general_ci to utf8mb4_uca1400_ai_ci. Core's Drupal\Tests\mysql\Kernel\mysql\SchemaTest asserts string columns use utf8mb4_general_ci (or MySQL's utf8mb4_0900_ai_ci):
✘ Schema ├ test_field_string should have a utf8mb4_general_ci or a utf8mb4_0900_ai_ci collation, but it has not. ├ Failed asserting that 'utf8mb4_uca1400_ai_ci' matches PCRE pattern │ "#^(utf8mb4_general_ci|utf8mb4_0900_ai_ci)$#".
Proposed resolution
- Add a new
db/mariadb-12.3/container to the DrupalCI Environments project (issue #3593556), pinned tomariadb:12.3.2, using the canonicalmariadb*tooling and clean of 12.x deprecations. - Pin the legacy default collation in the container via
character_set_collations = utf8mb4=utf8mb4_general_ci(MariaDB 11.5+ system variable), so existing schema expectations hold. (Done in the container; verified locally — SchemaTest 24/24 pass.) - Add
mariadb-12.3to theMariaDB (via PDO)matrix in.gitlab-ci.yml, and optionally promote it to the default_TARGET_DBfor the auto-running PHPUnit jobs.
Open question for the issue: should core instead/also broaden the test assertion to accept utf8mb4_uca1400_ai_ci, rather than relying on the container to pin the old collation? That avoids masking the new MariaDB default and is the more forward-looking fix; the container pin is the pragmatic short-term option.
Remaining tasks
- Land the
mariadb-12.3container in DrupalCI Environments (#3593556). - Decide: container-pinned collation vs. relaxing core's SchemaTest assertion (or both).
- Add the CI job / matrix entry and confirm a green run.
User interface changes
no
Introduced terminology
no
API changes
no
Data model changes
no
Release notes snippet
Issue fork drupal-3593581
Show commands
Start within a Git clone of the project using the version control instructions.
Or, if you do not have SSH keys set up on git.drupalcode.org:
Comments
Comment #3
andypost2 commits should be removed later when testing will finish
Comment #4
smustgrave commentedLet’s do it!
Comment #5
catchThis is still in the remaining tasks.