Skip to content

Conversation

@jrgemignani
Copy link
Contributor

Add pg_upgrade support functions for PostgreSQL major version upgrades

NOTE: This PR was created with AI tools and a human.

The ag_graph.namespace column uses the regnamespace type, which pg_upgrade cannot handle in user tables. This commit adds four SQL functions to enable seamless PostgreSQL major version upgrades while preserving all graph data.

New functions in ag_catalog:

  • age_prepare_pg_upgrade(): Converts namespace from regnamespace to oid, creates backup table with graph-to-namespace mappings
  • age_finish_pg_upgrade(): Remaps stale OIDs after upgrade, restores regnamespace type, invalidates AGE caches
  • age_revert_pg_upgrade_changes(): Cancels preparation if upgrade is aborted
  • age_pg_upgrade_status(): Returns current upgrade readiness status

Usage:

  1. Before pg_upgrade: SELECT age_prepare_pg_upgrade();
  2. Run pg_upgrade as normal
  3. After pg_upgrade: SELECT age_finish_pg_upgrade();

The functions include automatic cache invalidation by touching graph namespaces, ensuring cypher queries work immediately without requiring a session reconnect.

Files changed:

  • sql/age_pg_upgrade.sql: New file with function implementations
  • sql/sql_files: Added age_pg_upgrade entry
  • age--1.7.0--y.y.y.sql: Added functions for extension upgrades

All regressions tests passed.

Add pg_upgrade support functions for PostgreSQL major version upgrades

NOTE: This PR was created with AI tools and a human.

The ag_graph.namespace column uses the regnamespace type, which pg_upgrade
cannot handle in user tables. This commit adds four SQL functions to enable
seamless PostgreSQL major version upgrades while preserving all graph data.

New functions in ag_catalog:
- age_prepare_pg_upgrade(): Converts namespace from regnamespace to oid,
  creates backup table with graph-to-namespace mappings
- age_finish_pg_upgrade(): Remaps stale OIDs after upgrade, restores
  regnamespace type, invalidates AGE caches
- age_revert_pg_upgrade_changes(): Cancels preparation if upgrade is aborted
- age_pg_upgrade_status(): Returns current upgrade readiness status

Usage:
  1. Before pg_upgrade: SELECT age_prepare_pg_upgrade();
  2. Run pg_upgrade as normal
  3. After pg_upgrade:  SELECT age_finish_pg_upgrade();

The functions include automatic cache invalidation by touching graph
namespaces, ensuring cypher queries work immediately without requiring
a session reconnect.

Files changed:
- sql/age_pg_upgrade.sql: New file with function implementations
- sql/sql_files: Added age_pg_upgrade entry
- age--1.7.0--y.y.y.sql: Added functions for extension upgrades

All regressions tests passed.
@jrgemignani jrgemignani closed this Feb 2, 2026
@jrgemignani jrgemignani reopened this Feb 2, 2026
@github-actions github-actions bot added master override-stale To keep issues/PRs untouched from stale action labels Feb 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

master override-stale To keep issues/PRs untouched from stale action

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant