jrgemignani commented on PR #2455:
URL: https://github.com/apache/age/pull/2455#issuecomment-4878038257

   @MuhammadTahaNaveed @gregfelice 
   ## PostgreSQL 18 — AGE 1.7.0 → 1.8.0 upgrade validation on real graph data
   
   **Verdict: PASS.** The `age--1.7.0--1.8.0.sql` upgrade preserves all 
existing graph
   data and correctly applies the new-version catalog changes. Validated with a 
real
   two-binary upgrade (a 1.7.0 build → the 1.8.0 build from this PR) against 
PostgreSQL 18.3.
   
   ### Upgrade script is data-safe by construction
   Every top-level statement in `age--1.7.0--1.8.0.sql` is catalog DDL only:
   - 28 × `CREATE FUNCTION`, 8 × `CREATE CAST`, 4 × `CREATE OPERATOR`, 2 × 
`CREATE TYPE`
     (`vertex`, `edge`), 1 × `CREATE AGGREGATE`
   - a few `DROP FUNCTION IF EXISTS` + re-`CREATE` for internal functions whose 
signatures
     changed (e.g. `_agtype_build_vertex`/`_agtype_build_edge`, `_label_name`, 
the old `age_vle`)
   - `ALTER OPERATOR` (selectivity/commutator metadata on existing agtype 
operators) and `COMMENT`s
   - one `DO` block that adds an `_age_cache_invalidate` trigger to each 
existing label table
     (idempotent; skips the `_ag_label_vertex`/`_ag_label_edge` base tables)
   
   There are **no** `INSERT`/`UPDATE`/`DELETE`/`TRUNCATE`/`ALTER TABLE`/`DROP 
TABLE` statements
   touching label-table rows, so existing graph data cannot be modified or lost 
by the script.
   
   ### Test methodology
   1. Built and installed real **1.7.0** (commit `858747c7`) against PG18; 
`CREATE EXTENSION age` (→ 1.7.0).
   2. Loaded real data across 2 graphs: 14 vertices / 5 labels, 11 edges / 4 
labels, with mixed
      property types (string/int/float/bool/array/nested-object/null), plus a 
user btree index on a label table.
   3. Snapshotted all label-table rows (`id[,start_id,end_id],properties` 
ordered by `id`) plus an
      order-independent MD5 checksum.
   4. Installed **1.8.0** (this PR, `e6757b99`), restarted the server, ran 
`ALTER EXTENSION age UPDATE TO '1.8.0'`.
   5. Re-snapshotted and compared; verified catalog structure and ran 
functional queries.
   
   ### Results
   
   | Check | Result |
   |---|---|
   | `ALTER EXTENSION age UPDATE TO '1.8.0'` | Succeeded; `extversion` → 
`1.8.0` |
   | Graph data integrity | Byte-identical — snapshot `diff` empty, MD5 
unchanged (`1d24950e…11e358`) |
   | `DO`-block triggers | `_age_cache_invalidate` added to all 9 named label 
tables; 0 on base tables |
   | New catalog objects | `vertex`/`edge` types, `age_invalidate_graph_cache`, 
`age_reduce` present |
   | User index | Survived |
   | Queries on migrated data | KNOWS traversal, VLE (`*1..n`), `reduce()`, and 
`::vertex`/`::edge` returns all correct |
   | Post-upgrade DML + cache | New edge fires the trigger; same-session VLE 
reflects it (cache invalidation works) |
   
   ### Conclusion
   The 1.7.0 → 1.8.0 upgrade path is correct and non-destructive on populated 
databases. No issues found.


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