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]