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 to mariadb:12.3.2, using the canonical mariadb* 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.3 to the MariaDB (via PDO) matrix in .gitlab-ci.yml, and optionally promote it to the default _TARGET_DB for 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.3 container 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

Command icon 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

andypost created an issue. See original summary.

andypost’s picture

Status: Active » Needs review

2 commits should be removed later when testing will finish

smustgrave’s picture

Status: Needs review » Reviewed & tested by the community

Let’s do it!

catch’s picture

Status: Reviewed & tested by the community » Needs review

This is still in the remaining tasks.

Decide: container-pinned collation vs. relaxing core's SchemaTest assertion (or both).