Skip to content

feat: detect stale binary after upgrade via library version check#241

Merged
tjgreen42 merged 2 commits intomainfrom
library-version-check
Feb 26, 2026
Merged

feat: detect stale binary after upgrade via library version check#241
tjgreen42 merged 2 commits intomainfrom
library-version-check

Conversation

@tjgreen42
Copy link
Copy Markdown
Collaborator

@tjgreen42 tjgreen42 commented Feb 26, 2026

Summary

  • Add pg_textsearch.library_version read-only GUC set at library load time from a compile-time version define
  • Check the GUC in CREATE EXTENSION and ALTER EXTENSION UPDATE SQL scripts, failing with a clear error if the loaded library is missing or doesn't match the expected version
  • Catches the case where a user runs make install but forgets to restart the server

Changes

  • Makefile: Extract EXTVERSION from pg_textsearch.control, pass as -DPG_TEXTSEARCH_VERSION
  • src/mod.c: Register PGC_INTERNAL string GUC in _PG_init
  • sql/pg_textsearch--1.0.0-dev.sql: Version check DO block before any CREATE statements
  • sql/pg_textsearch--0.5.0--1.0.0-dev.sql: Same version check in upgrade script
  • test/sql/basic.sql: Regression test for the GUC

Testing

  • SHOW pg_textsearch.library_version returns 1.0.0-dev after restart
  • All 47 regression tests pass

Add a pg_textsearch.library_version GUC (PGC_INTERNAL) set at library
load time, and check it in CREATE EXTENSION / ALTER EXTENSION UPDATE
SQL scripts. This catches the case where a user installs a new binary
but forgets to restart the server, preventing shared memory layout
mismatches or silent behavior differences.
Use pg_catalog.current_setting and OPERATOR(pg_catalog.<>) to satisfy
pgspot's unqualified reference checks (PS016, PS001).
@tjgreen42 tjgreen42 marked this pull request as ready for review February 26, 2026 19:19
@tjgreen42 tjgreen42 merged commit f1384f9 into main Feb 26, 2026
29 checks passed
@tjgreen42 tjgreen42 deleted the library-version-check branch February 26, 2026 19:19
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.

1 participant