[SCM] PostGIS branch master updated. 3.7.0beta1-215-g59dce1353c
git at osgeo.org
git at osgeo.org
Mon Aug 3 14:45:35 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, master has been updated
via 59dce1353cc498bb657b19336ed4e6622fcfb873 (commit)
via 2dd8052b88e9aed59dfa9e2f72bfa09ec75830d7 (commit)
from beac83bc71bd7442b69da1053f6b1aab98fffa0f (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 59dce1353cc498bb657b19336ed4e6622fcfb873
Author: Regina Obe <lr at pcorp.us>
Date: Mon Aug 3 17:45:27 2026 -0400
Only run mingw-wine,portability during tag, cron events
diff --git a/.woodpecker/mingw-wine.yml b/.woodpecker/mingw-wine.yml
index ed79a30953..94b427d5c4 100644
--- a/.woodpecker/mingw-wine.yml
+++ b/.woodpecker/mingw-wine.yml
@@ -1,7 +1,7 @@
labels:
platform: linux/amd64
when:
- event: [push, pull_request, tag]
+ event: [tag]
clone:
git:
diff --git a/.woodpecker/portability.yml b/.woodpecker/portability.yml
index d6aa7accb1..5e9b3bf867 100644
--- a/.woodpecker/portability.yml
+++ b/.woodpecker/portability.yml
@@ -2,7 +2,7 @@ labels:
platform: linux/amd64
qemu: "true"
when:
- event: [push, pull_request, tag, cron]
+ event: [tag, cron]
# This workflow keeps the existing amd64 CI honest by attacking ABI properties
# that normal amd64 builds cannot falsify.
commit 2dd8052b88e9aed59dfa9e2f72bfa09ec75830d7
Author: Regina Obe <lr at pcorp.us>
Date: Mon Aug 3 16:32:12 2026 -0400
Schema qualify all references to pg_catalog and postgis
- geometry_columns view
- geography_columns view
diff --git a/NEWS b/NEWS
index 65e6328bc5..11dd7c99e9 100644
--- a/NEWS
+++ b/NEWS
@@ -40,6 +40,8 @@ These are only changes since 3.7.0beta1.
- #6109, Out-of-bounds heap read in BOX2D_out and BOX2D_expand
on 65-byte box2d under ASAN (Dennis Tighe, Google)
- #6110, regression in speed with geometry_columns (Regina Obe)
+ - Schema qualify references to pg_catalog and postgis
+ in geometry_columns and geography_columns views (Regina Obe)
* Enhancements *
diff --git a/postgis/geography.sql.in b/postgis/geography.sql.in
index edfd09d424..e7c1f5d32b 100644
--- a/postgis/geography.sql.in
+++ b/postgis/geography.sql.in
@@ -166,22 +166,22 @@ CREATE OR REPLACE VIEW geography_columns AS
n.nspname AS f_table_schema,
c.relname AS f_table_name,
a.attname AS f_geography_column,
- postgis_typmod_dims(a.atttypmod) AS coord_dimension,
- postgis_typmod_srid(a.atttypmod) AS srid,
- postgis_typmod_type(a.atttypmod) AS type
+ @extschema at .postgis_typmod_dims(a.atttypmod) AS coord_dimension,
+ @extschema at .postgis_typmod_srid(a.atttypmod) AS srid,
+ @extschema at .postgis_typmod_type(a.atttypmod) AS type
FROM
- pg_class c,
- pg_attribute a,
- pg_type t,
- pg_namespace n
- WHERE t.typname = 'geography'
- AND a.attisdropped = false
- AND a.atttypid = t.oid
- AND a.attrelid = c.oid
- AND c.relnamespace = n.oid
- AND c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'm'::"char", 'f'::"char", 'p'::"char"] )
+ pg_catalog.pg_class c,
+ pg_catalog.pg_attribute a,
+ pg_catalog.pg_type t,
+ pg_catalog.pg_namespace n
+ WHERE t.typname OPERATOR(pg_catalog.=) 'geography'::pg_catalog.name
+ AND a.attisdropped OPERATOR(pg_catalog.=) false
+ AND a.atttypid OPERATOR(pg_catalog.=) t.oid
+ AND a.attrelid OPERATOR(pg_catalog.=) c.oid
+ AND c.relnamespace OPERATOR(pg_catalog.=) n.oid
+ AND c.relkind OPERATOR(pg_catalog.=) ANY (ARRAY['r'::pg_catalog."char", 'v'::pg_catalog."char", 'm'::pg_catalog."char", 'f'::pg_catalog."char", 'p'::pg_catalog."char"] )
AND NOT pg_catalog.pg_is_other_temp_schema(c.relnamespace)
- AND pg_catalog.has_column_privilege(c.oid, a.attname,'SELECT'::text);
+ AND pg_catalog.has_column_privilege(c.oid, a.attname, 'SELECT'::pg_catalog.text);
-- Availability: 1.5.0
CREATE OR REPLACE FUNCTION geography(geometry)
diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in
index 57088ad4d7..1df0e2b0bf 100644
--- a/postgis/postgis.sql.in
+++ b/postgis/postgis.sql.in
@@ -6709,95 +6709,95 @@ WITH constraint_defs AS NOT MATERIALIZED (
SELECT connamespace,
conrelid,
conkey,
- regexp_replace(pg_get_constraintdef(oid), $$\s+NOT\s+VALID$$, '', 'i') AS consrc
- FROM pg_constraint
+ pg_catalog.regexp_replace(pg_catalog.pg_get_constraintdef(oid), $$\s+NOT\s+VALID$$, '', 'i') AS consrc
+ FROM pg_catalog.pg_constraint
)
-SELECT current_database()::character varying(256) AS f_table_catalog,
+SELECT pg_catalog.current_database()::pg_catalog.varchar(256) AS f_table_catalog,
n.nspname AS f_table_schema,
c.relname AS f_table_name,
a.attname AS f_geometry_column,
- COALESCE(postgis_typmod_dims(a.atttypmod), sn.ndims, 2) AS coord_dimension,
- COALESCE(NULLIF(postgis_typmod_srid(a.atttypmod), 0), sr.srid, 0) AS srid,
- replace(replace(COALESCE(NULLIF(upper(postgis_typmod_type(a.atttypmod)), 'GEOMETRY'::text), st.type, 'GEOMETRY'::text), 'ZM'::text, ''::text), 'Z'::text, ''::text)::character varying(30) AS type
- FROM pg_class c
- JOIN pg_attribute a ON a.attrelid = c.oid AND NOT a.attisdropped
- JOIN pg_namespace n ON c.relnamespace = n.oid
- JOIN pg_type t ON a.atttypid = t.oid
+ COALESCE(@extschema at .postgis_typmod_dims(a.atttypmod), sn.ndims, 2) AS coord_dimension,
+ COALESCE(NULLIF(@extschema at .postgis_typmod_srid(a.atttypmod), 0), sr.srid, 0) AS srid,
+ pg_catalog.replace(pg_catalog.replace(COALESCE(NULLIF(pg_catalog.upper(@extschema at .postgis_typmod_type(a.atttypmod)), 'GEOMETRY'::pg_catalog.text), st.type, 'GEOMETRY'::pg_catalog.text), 'ZM'::pg_catalog.text, ''::pg_catalog.text), 'Z'::pg_catalog.text, ''::pg_catalog.text)::pg_catalog.varchar(30) AS type
+ FROM pg_catalog.pg_class c
+ JOIN pg_catalog.pg_attribute a ON a.attrelid OPERATOR(pg_catalog.=) c.oid AND NOT a.attisdropped
+ JOIN pg_catalog.pg_namespace n ON c.relnamespace OPERATOR(pg_catalog.=) n.oid
+ JOIN pg_catalog.pg_type t ON a.atttypid OPERATOR(pg_catalog.=) t.oid
-- Direct view columns have rewrite-rule target entries with origin metadata.
-- Use only top-level bare VAR target entries, so expressions keep needing explicit casts.
LEFT JOIN LATERAL (
SELECT origin.base_relid,
origin.base_attnum
- FROM pg_rewrite AS r
- CROSS JOIN LATERAL _postgis_geometry_columns_view_column_origin(r.ev_action, a.attnum) AS origin
- WHERE c.relkind = ANY (ARRAY['v'::"char", 'm'::"char"])
- AND r.ev_class = c.oid
- AND r.rulename = '_RETURN'
+ FROM pg_catalog.pg_rewrite AS r
+ CROSS JOIN LATERAL @extschema at ._postgis_geometry_columns_view_column_origin(r.ev_action, a.attnum) AS origin
+ WHERE c.relkind OPERATOR(pg_catalog.=) ANY (ARRAY['v'::pg_catalog."char", 'm'::pg_catalog."char"])
+ AND r.ev_class OPERATOR(pg_catalog.=) c.oid
+ AND r.rulename OPERATOR(pg_catalog.=) '_RETURN'
) AS vco ON true
LEFT JOIN (
SELECT s.connamespace,
s.conrelid,
s.conkey,
- (regexp_match(s.consrc, $$geometrytype\(\w+\)\s*=\s*'(\w+)'$$, 'i'))[1]::text AS type
+ (pg_catalog.regexp_match(s.consrc, $$geometrytype\(\w+\)\s*=\s*'(\w+)'$$, 'i'))[1]::pg_catalog.text AS type
FROM constraint_defs AS s
- WHERE s.consrc ~* $$geometrytype\(\w+\)\s*=\s*'\w+'$$::text
- ) st ON st.conrelid = COALESCE(vco.base_relid, c.oid) AND (COALESCE(vco.base_attnum, a.attnum) = ANY (st.conkey))
+ WHERE s.consrc OPERATOR(pg_catalog.~*) $$geometrytype\(\w+\)\s*=\s*'\w+'$$::pg_catalog.text
+ ) st ON st.conrelid OPERATOR(pg_catalog.=) COALESCE(vco.base_relid, c.oid) AND (COALESCE(vco.base_attnum, a.attnum) OPERATOR(pg_catalog.=) ANY (st.conkey))
LEFT JOIN (
SELECT s.connamespace,
s.conrelid,
s.conkey,
- (regexp_match(s.consrc, $$ndims\(\w+\)\s*=\s*(\d+)$$, 'i'))[1]::integer AS ndims
+ (pg_catalog.regexp_match(s.consrc, $$ndims\(\w+\)\s*=\s*(\d+)$$, 'i'))[1]::integer AS ndims
FROM constraint_defs AS s
- WHERE s.consrc ~* $$ndims\(\w+\)\s*=\s*\d+$$::text
- ) sn ON sn.conrelid = COALESCE(vco.base_relid, c.oid) AND (COALESCE(vco.base_attnum, a.attnum) = ANY (sn.conkey))
+ WHERE s.consrc OPERATOR(pg_catalog.~*) $$ndims\(\w+\)\s*=\s*\d+$$::pg_catalog.text
+ ) sn ON sn.conrelid OPERATOR(pg_catalog.=) COALESCE(vco.base_relid, c.oid) AND (COALESCE(vco.base_attnum, a.attnum) OPERATOR(pg_catalog.=) ANY (sn.conkey))
LEFT JOIN (
SELECT s.connamespace,
s.conrelid,
s.conkey,
- (regexp_match(s.consrc, $$srid\(\w+\)\s*=\s*(\d+)$$, 'i'))[1]::integer As srid
+ (pg_catalog.regexp_match(s.consrc, $$srid\(\w+\)\s*=\s*(\d+)$$, 'i'))[1]::integer As srid
FROM constraint_defs AS s
- WHERE s.consrc ~* $$srid\(\w+\)\s*=\s*\d+$$::text
- ) sr ON sr.conrelid = COALESCE(vco.base_relid, c.oid) AND (COALESCE(vco.base_attnum, a.attnum) = ANY (sr.conkey))
- WHERE (c.relkind = ANY (ARRAY['r'::"char", 'v'::"char", 'm'::"char", 'f'::"char", 'p'::"char"]))
- AND NOT c.relname = 'raster_columns'::name AND t.typname = 'geometry'::name
- AND NOT pg_is_other_temp_schema(c.relnamespace)
+ WHERE s.consrc OPERATOR(pg_catalog.~*) $$srid\(\w+\)\s*=\s*\d+$$::pg_catalog.text
+ ) sr ON sr.conrelid OPERATOR(pg_catalog.=) COALESCE(vco.base_relid, c.oid) AND (COALESCE(vco.base_attnum, a.attnum) OPERATOR(pg_catalog.=) ANY (sr.conkey))
+ WHERE (c.relkind OPERATOR(pg_catalog.=) ANY (ARRAY['r'::pg_catalog."char", 'v'::pg_catalog."char", 'm'::pg_catalog."char", 'f'::pg_catalog."char", 'p'::pg_catalog."char"]))
+ AND NOT c.relname OPERATOR(pg_catalog.=) 'raster_columns'::pg_catalog.name AND t.typname OPERATOR(pg_catalog.=) 'geometry'::pg_catalog.name
+ AND NOT pg_catalog.pg_is_other_temp_schema(c.relnamespace)
-- A stale MVCC snapshot can still see a dropped pg_class row (#6038).
-- Re-resolve the qualified relation name only when the schema is visible,
-- because to_regclass reports permission errors for inaccessible schemas.
-- Without schema visibility, keep the old OID-based privilege semantics.
-- Keep the visible-schema SELECT check in the same CASE branch as the
-- re-resolution guard so PostgreSQL cannot evaluate it for a stale OID.
- AND CASE WHEN has_schema_privilege(c.relnamespace, 'USAGE'::text)
- THEN CASE WHEN pg_catalog.to_regclass(pg_catalog.format('%I.%I', n.nspname, c.relname)) = c.oid
- THEN pg_catalog.has_column_privilege(c.oid, a.attname, 'SELECT'::text)
+ AND CASE WHEN pg_catalog.has_schema_privilege(c.relnamespace, 'USAGE'::pg_catalog.text)
+ THEN CASE WHEN pg_catalog.to_regclass(pg_catalog.format('%I.%I', n.nspname, c.relname)) OPERATOR(pg_catalog.=) c.oid
+ THEN pg_catalog.has_column_privilege(c.oid, a.attname, 'SELECT'::pg_catalog.text)
ELSE false
END
- ELSE pg_catalog.has_column_privilege(c.oid, a.attname, 'SELECT'::text)
+ ELSE pg_catalog.has_column_privilege(c.oid, a.attname, 'SELECT'::pg_catalog.text)
END
AND (
EXISTS (
SELECT 1
- FROM pg_roles
- WHERE rolname = current_user
+ FROM pg_catalog.pg_roles
+ WHERE rolname OPERATOR(pg_catalog.=) current_user
AND rolsuper
)
OR EXISTS (
SELECT 1
- FROM pg_roles
- WHERE rolname = 'pg_read_all_data'
- AND pg_has_role(current_user, oid, 'USAGE')
+ FROM pg_catalog.pg_roles
+ WHERE rolname OPERATOR(pg_catalog.=) 'pg_read_all_data'
+ AND pg_catalog.pg_has_role(current_user, oid, 'USAGE')
)
OR EXISTS (
SELECT 1
- FROM aclexplode(COALESCE(c.relacl, acldefault('r', c.relowner))) AS acl
- WHERE acl.privilege_type = 'SELECT'
- AND (acl.grantee = 0 OR pg_has_role(acl.grantee, 'USAGE'))
+ FROM pg_catalog.aclexplode(COALESCE(c.relacl, pg_catalog.acldefault('r', c.relowner))) AS acl
+ WHERE acl.privilege_type OPERATOR(pg_catalog.=) 'SELECT'
+ AND (acl.grantee OPERATOR(pg_catalog.=) 0 OR pg_catalog.pg_has_role(acl.grantee, 'USAGE'))
)
OR EXISTS (
SELECT 1
- FROM aclexplode(a.attacl) AS acl
- WHERE acl.privilege_type = 'SELECT'
- AND (acl.grantee = 0 OR pg_has_role(acl.grantee, 'USAGE'))
+ FROM pg_catalog.aclexplode(a.attacl) AS acl
+ WHERE acl.privilege_type OPERATOR(pg_catalog.=) 'SELECT'
+ AND (acl.grantee OPERATOR(pg_catalog.=) 0 OR pg_catalog.pg_has_role(acl.grantee, 'USAGE'))
)
);
-----------------------------------------------------------------------
Summary of changes:
.woodpecker/mingw-wine.yml | 2 +-
.woodpecker/portability.yml | 2 +-
NEWS | 2 ++
postgis/geography.sql.in | 28 +++++++--------
postgis/postgis.sql.in | 84 ++++++++++++++++++++++-----------------------
5 files changed, 60 insertions(+), 58 deletions(-)
hooks/post-receive
--
PostGIS
More information about the postgis-tickets
mailing list