Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Compatibility

Which versions CI actually runs, as opposed to which ones are expected to work. "Not tested" is not "known broken" — it is a version no job exercises, so a regression there would ship unnoticed.

ComponentVersionCovered by
PostgreSQL17every pull request
PostgreSQL15 (the declared floor)nightly
PostgreSQL16, 18not tested
MySQL8.0every pull request
MySQL8.4 LTSnightly
MariaDB10.6 (the declared floor)nightly
MariaDB11.8 LTSnightly
OpenSearch2.19.6every pull request
OpenSearchother 2.xnot tested
Elasticsearch8.19.20nightly, full suite — advisory until #118
Elasticsearch7.xnot tested, known gaps
Meilisearchv1.53.1nightly, smoke suite only — advisory until #122

What the nightly suite runs

.github/workflows/compat.yml builds the release binary once and hands it to every cell. Three scripts do the work:

  • dev/e2e-test.sh — the full PostgreSQL suite. TARGET_FLAVOR picks OpenSearch or Elasticsearch; everything else is identical, because the two differ only in REST dialect details the sink hides.
  • dev/e2e-mysql-test.sh — the full MySQL/MariaDB suite. MYSQL_CLIENT picks the client binary the container ships.
  • dev/e2e-meili-smoke.sh — Meilisearch. Not the full suite: that one asserts over mappings, join fields and per-row indices, none of which Meilisearch has. The smoke suite covers the initial load, live INSERT/UPDATE/DELETE, the file-based checkpoint resuming after a restart, and a reindex swapping a rebuilt index into the live name.

Two cells are marked advisory, because the first nightly matrix found a bug in each of them. The Elasticsearch suite reaches reconcile, which that sink cannot run (#118), so everything after that section is unverified there. The Meilisearch smoke suite reaches the restart, which fails because that sink cannot start twice against one index (#122). Both cells are kept red rather than trimmed: the gap is the finding.

The matrix also runs on a pull request that touches the workflow or those scripts, so a change to the matrix is tested before the night it would break.

./dev/ci-local.sh runs the same six cells on your machine, and runs them automatically for exactly the changes a pull request would; --matrix forces them. Each cell is a throwaway container on a port of its own — PostgreSQL 15433, OpenSearch 9201, Elasticsearch 9202, Meilisearch 7701, MySQL/MariaDB 13307 — so the dev stack on 15432/9200/13306 keeps running beside it, and the containers are removed however the cell ends.

When a nightly run fails

The workflow opens one issue labelled nightly-compat and comments the run URL and the failed cells on it every night it stays red, rather than opening a new issue each time. Fix the cell or, if the version genuinely is not supported, say so here and in the README — a claim no job checks is the thing this page exists to prevent.