Skip to content

ci: test on PostgreSQL 13 and document it as the minimum - #228

Merged
lesnik512 merged 2 commits into
mainfrom
ci/postgres-13-floor
Oct 17, 2026
Merged

lesnik512 merged 2 commits into
mainfrom
ci/postgres-13-floor

Conversation

@lesnik512

@lesnik512 lesnik512 commented Oct 17, 2026 •

Copy link
Copy Markdown
Member

Closes #216. For 0.15.0: the documented minimum moves from PostgreSQL 12 to 13, and CI now tests on 13.

Why

outbox_autovacuum_ddl always sets autovacuum_vacuum_insert_scale_factor and autovacuum_vacuum_insert_threshold, and both arrived in PostgreSQL 13. On 12 the ALTER TABLE fails with "unrecognized parameter", and validate_schema(check_autovacuum=True) can never pass. The docs said 12+, and CI only ran 17, so nothing caught this. PostgreSQL 12 has been end of life since November 2024.

I ran the full suite locally against both versions, swapping only the Postgres image:

server result
PostgreSQL 12 3 failed, 675 passed: the three test_validate_schema_autovacuum_ok_* tests
PostgreSQL 13.23 678 passed

No other test depends on 13, so nothing besides the autovacuum options needs it.

Changes

  • CI: the existing floors job now runs on postgres:13 instead of 17. That job already installs the lowest declared dependency versions, so it now tests the lowest supported server too, and the pytest matrix stays on 17 with the newest dependencies. No new job. floors skips the weekly scheduled run, so 13 is covered on every pull request and every push to main.
  • Local check of that combination: with the floor dependency set (SQLAlchemy 2.0.0, faststream 0.7.6, asyncpg 0.29.0, alembic 1.13.0) against PostgreSQL 13.23, all 678 tests pass on Python 3.11 and on 3.12. CI covers 3.13 and 3.14, which resolve their own floors.
  • Docs: installation.md now says PostgreSQL 13+ and why. alembic.md says the insert-triggered pair needs 13 or later.
  • No code change.

Release note (0.15.0)

PostgreSQL 13 is now the minimum supported version (12 reached end of life in November 2024). outbox_autovacuum_ddl never worked on 12, and CI now tests on 13 as well as 17.

@github-actions

github-actions Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Benchmark gate

✅ gate passed

scenario msg/s delete/msg WALrec/msg WALB/msg fpi upd del dead_tup
consumer/w1/b10 1081 1.000 6.67 909 242 5000 5000 10000
consumer/w1/b100 1341 1.000 7.10 1144 243 5000 5000 10000
consumer/w2/b10 1283 1.000 6.69 921 242 5000 5000 10000
consumer/w2/b100 1766 1.000 7.10 1144 243 5000 5000 10000
consumer/w4/b10 1279 1.000 6.69 922 242 5000 5000 10000
consumer/w4/b100 1815 1.000 7.14 1179 263 5000 5000 10000
consumer/w1/b100/tfbs100 5522 0.010 6.07 1119 244 5000 5000 10000
consumer/w1/b100/interval1-10 1310 1.000 7.10 1144 243 5000 5000 10000
producer/w1/b100 3107 0.000 3.04 585 1 0 0 0
producer/w1/b100/ppt1 746 0.000 4.04 626 0 0 0 0

Gated (fails the build): delete_calls + tuple counters (upd/del/ins) + the producer's insert_calls, exact; select_calls and other_calls within +2; wal_records within a 10% band; fetch_calls within 2x. msg/s, WAL bytes and total calls are informational (timing/FPI noise).

@lesnik512
lesnik512 merged commit f4345db into main Oct 17, 2026
13 checks passed
@lesnik512
lesnik512 deleted the ci/postgres-13-floor branch October 17, 2026 11:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Autovacuum DDL needs PostgreSQL 13, docs say 12+

1 participant