[SCM] PostGIS branch stable-3.3 updated. 3.3.10-5-g13118cab3

git at osgeo.org git at osgeo.org
Fri May 29 10:59:17 PDT 2026


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "PostGIS".

The branch, stable-3.3 has been updated
       via  13118cab3d52b8fe39f84924c5b5e96ee8ee73e8 (commit)
       via  b8a1112c9049d81de55144b88bf1da09b863d234 (commit)
      from  f8009dd50554c9ab6fe2767ee5f5dccae8964ec3 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 13118cab3d52b8fe39f84924c5b5e96ee8ee73e8
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Fri May 29 10:59:02 2026 -0700

    News item for #5988

diff --git a/NEWS b/NEWS
index b3c009bdf..dbd055e18 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@ PostGIS 3.3.11
 * Bug Fixes and Enhancements *
 
  - Flatgeobuf schema mismatch vulnerability (NeuroWinter)
+ - #5899, pg_upgrade issue for non-standard geography SRID (Paul Ramsey)
 
 
 PostGIS 3.3.10

commit b8a1112c9049d81de55144b88bf1da09b863d234
Author: Paul Ramsey <pramsey at cleverelephant.ca>
Date:   Fri May 29 16:21:02 2026 +0000

    pg_upgrade issue for non-standard geography SRID
    
    When doing pg_upgrade on a table with Geography(type, srid)
    column, where the SRID is specified, but not 4326, the SRID
    lookup code will fail during schema transfer as the
    spatial_ref_sys table may be missing and unable to lookup
    the SRID number. This "fix" leans on the fact that most
    SRID numbers in PostGIS are already EPSG numbers so the
    lookup can be skipped most times.

diff --git a/libpgcommon/lwgeom_transform.c b/libpgcommon/lwgeom_transform.c
index 3972b914c..084e89046 100644
--- a/libpgcommon/lwgeom_transform.c
+++ b/libpgcommon/lwgeom_transform.c
@@ -189,6 +189,40 @@ GetProjStringsSPI(int32_t srid)
 		elog(ERROR, "Could not connect to database using SPI");
 	}
 
+	/*
+	 * During pg_upgrade, geography typmod is parsed before spatial_ref_sys
+	 * exists or is populated. Check both conditions via catalog before
+	 * querying the table, to avoid a transaction-aborting error.
+	 * If either check fails, return "EPSG:<srid>" directly so PROJ can
+	 * resolve standard codes from its own database.
+	 */
+	Oid nsp_oid = POSTGIS_CONSTANTS ? POSTGIS_CONSTANTS->install_nsp_oid : InvalidOid;
+	snprintf(proj_spi_buffer, spibufferlen,
+	         "SELECT 1 FROM pg_class "
+	         "WHERE relname = 'spatial_ref_sys' AND relnamespace = %u",
+	         nsp_oid);
+	spi_result = SPI_execute(proj_spi_buffer, true, 1);
+	bool srs_exists = (spi_result == SPI_OK_SELECT && SPI_processed > 0);
+
+	bool srs_populated = false;
+	if (srs_exists)
+	{
+		snprintf(proj_spi_buffer, spibufferlen,
+		         "SELECT 1 FROM %s LIMIT 1",
+		         postgis_spatial_ref_sys());
+		spi_result = SPI_execute(proj_spi_buffer, true, 1);
+		srs_populated = (spi_result == SPI_OK_SELECT && SPI_processed > 0);
+	}
+
+	if (!srs_exists || !srs_populated)
+	{
+		char tmp[maxprojlen];
+		snprintf(tmp, maxprojlen, "EPSG:%d", srid);
+		strs.authtext = SPI_pstrdup(tmp);
+		SPI_finish();
+		return strs;
+	}
+
 	static char *proj_str_tmpl =
 	    "SELECT proj4text, auth_name, auth_srid, srtext "
 	    "FROM %s "

-----------------------------------------------------------------------

Summary of changes:
 NEWS                           |  1 +
 libpgcommon/lwgeom_transform.c | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list