jrgemignani opened a new pull request, #2364:
URL: https://github.com/apache/age/pull/2364

   Note: This PR was created with AI tools and a human.
   
   Add a version-agnostic regression test (age_upgrade) that validates the 
upgrade template (age--<VER>--y.y.y.sql) works correctly by simulating a full 
extension version upgrade within "make installcheck".
   
   Add full upgrade scripts to the install path (DATA) in the Makefile, 
excluding template upgrade files. This enables the install to copy all version 
upgrade files into the PG AGE install. This is needed for ALTER EXTENSION
   
   Makefile infrastructure:
   - Build the install SQL (age--<CURR>.sql) from the initial version-bump 
commit in git history, so CREATE EXTENSION installs "day-one" SQL while the .so 
comes from current HEAD — implicitly testing backward compat.
   - Build a synthetic "next" version (age--<NEXT>.sql) from HEAD and stamp the 
upgrade template to produce age--<CURR>--<NEXT>.sql.
   - Add an installcheck prerequisite that temporarily installs both synthetic 
files into the PG extension directory; a generated cleanup script removes them 
at the end of the test via \! shell escape. EXTRA_CLEAN catches stragglers on 
"make clean".
   - Skip the test automatically when: (a) no git history (tarball builds), (b) 
no upgrade template exists, or (c) a real upgrade script from the current 
version is already committed (detected via git ls-files).o
   
   Regression test (regress/sql/age_upgrade.sql):
   - Creates 3 graphs (company, network, routes) with 8 vertex labels, 8 edge 
labels, 23 vertices, 28 edges, and 4 GIN indexes.
   - Records integrity checksums (agtype sums), vertex/edge counts, and label 
counts before the upgrade; repeats all checks after ALTER EXTENSION UPDATE to 
the synthetic next version.
   - Verifies structural queries: VLE management chains, circular follow 
chains, flight distances with edge properties.
   - Verifies all 4 GIN indexes survive the upgrade via pg_indexes.
   - Uses ORDER BY on all multi-row queries for deterministic output.
   - Returns agtype natively (no ::numeric casts) for portability.
   - Avoids version-dependent output (checks boolean IS NOT NULL instead of 
printing the version string).
   - Uses JOIN-based label counts to avoid NULL comparison bugs with the 
internal _ag_catalog graph.
   - Cleans up all 3 graphs and restores the default AGE version.
   
   modified:   Makefile
   new file:   regress/expected/age_upgrade.out
   new file:   regress/sql/age_upgrade.sql


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to