From trac at osgeo.org Sun Jan 4 16:11:07 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 05 Jan 2026 00:11:07 -0000 Subject: [PostGIS] #6032: postgis_tiger_geocoder upgrade script for PostgreSQL < 16 not stripping extension placeholder Message-ID: <046.e05c3dd82af3141018edb480f4ef0486@osgeo.org> #6032: postgis_tiger_geocoder upgrade script for PostgreSQL < 16 not stripping extension placeholder ----------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.2 Component: tiger geocoder | Version: 3.5.x Keywords: | ----------------------------+--------------------------- I guess I didn't have tests to catch this for PostgreSQL < 16. It seems that the @extschema:fuzzystrmatch@ is not being stripped for this so the upgrade scripts have broken functions. This only effects PostgreSQL < 16 because 16 and above the extension install automatically replaces this with the extension schema path. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Jan 4 16:11:35 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 05 Jan 2026 00:11:35 -0000 Subject: [PostGIS] #6032: postgis_tiger_geocoder upgrade script for PostgreSQL < 16 not stripping extension placeholder In-Reply-To: <046.e05c3dd82af3141018edb480f4ef0486@osgeo.org> References: <046.e05c3dd82af3141018edb480f4ef0486@osgeo.org> Message-ID: <061.73ed3495cc57fa01b144d0dce4c26491@osgeo.org> #6032: postgis_tiger_geocoder upgrade script for PostgreSQL < 16 not stripping extension placeholder -----------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: blocker | Milestone: PostGIS 3.6.2 Component: tiger geocoder | Version: 3.5.x Resolution: | Keywords: -----------------------------+--------------------------- Changes (by robe): * priority: medium => blocker -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 5 08:28:48 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 05 Jan 2026 16:28:48 -0000 Subject: [PostGIS] #6030: sfcgal-master branch failing on CG_Orientation In-Reply-To: <046.7861320a84526e863d0c451a950d8572@osgeo.org> References: <046.7861320a84526e863d0c451a950d8572@osgeo.org> Message-ID: <061.0025cf3b5b6966f2d6317bdbd1509774@osgeo.org> #6030: sfcgal-master branch failing on CG_Orientation ---------------------+----------------------------- Reporter: robe | Owner: Lo?c Bartoletti Type: defect | Status: closed Priority: medium | Milestone: PostGIS SFCGAL Component: sfcgal | Version: master Resolution: fixed | Keywords: ---------------------+----------------------------- Changes (by robe): * resolution: => fixed * status: new => closed Old description: > {{{ > SELECT CG_Orientation(ST_GeomFromText('POLYGON EMPTY',4326)) > > }}} > > Failure seen in > https://github.com/postgis/postgis/actions/runs/20337485931/job/58427648985#step:4:1425 > > {{{ > > }}} New description: {{{ SELECT CG_Orientation(ST_GeomFromText('POLYGON EMPTY',4326)) }}} Failure seen in https://github.com/postgis/postgis/actions/runs/20337485931/job/58427648985#step:4:1425 {{{ }}} -- Comment: Fixed per https://gitlab.com/sfcgal/SFCGAL/-/issues/315 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 5 08:30:21 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 05 Jan 2026 16:30:21 -0000 Subject: [PostGIS] #6032: postgis_tiger_geocoder upgrade script for PostgreSQL < 16 not stripping extension placeholder In-Reply-To: <046.e05c3dd82af3141018edb480f4ef0486@osgeo.org> References: <046.e05c3dd82af3141018edb480f4ef0486@osgeo.org> Message-ID: <061.90a98148b1233bfc6587bb0747e6565e@osgeo.org> #6032: postgis_tiger_geocoder upgrade script for PostgreSQL < 16 not stripping extension placeholder -----------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: blocker | Milestone: PostGIS 3.6.2 Component: tiger geocoder | Version: 3.5.x Resolution: | Keywords: -----------------------------+--------------------------- Comment (by robe): Should note this doesn't impact CREATE EXTENSION just ALTER EXTENSION for PostgreSQL < 16 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Jan 7 14:28:03 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 07 Jan 2026 22:28:03 -0000 Subject: [PostGIS] #2614: Prepared geometry support for ST_DWithin In-Reply-To: <046.41117123baaa543ff6a90d33bb22189d@osgeo.org> References: <046.41117123baaa543ff6a90d33bb22189d@osgeo.org> Message-ID: <061.a46ccbbd62a224da395a679a86182dc4@osgeo.org> #2614: Prepared geometry support for ST_DWithin --------------------------+--------------------------- Reporter: robe | Owner: pramsey Type: enhancement | Status: new Priority: high | Milestone: PostGIS 3.7.0 Component: postgis | Version: master Resolution: | Keywords: --------------------------+--------------------------- Changes (by pramsey): * milestone: PostGIS Fund Me => PostGIS 3.7.0 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 8 09:14:19 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 08 Jan 2026 17:14:19 -0000 Subject: [PostGIS] #6033: ERROR: operator is not unique: public.geometry = public.geometry Message-ID: <046.8b65a0696671f5b60448812d9e3003f2@osgeo.org> #6033: ERROR: operator is not unique: public.geometry = public.geometry ---------------------+--------------------------- Reporter: robe | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.2 Component: postgis | Version: 3.5.x Keywords: | ---------------------+--------------------------- This error happens if the postgis schema is not in the search_path. To replicate: {{{ CREATE EXTENSION postgis SCHEMA public; SET search_path='pg_catalog'; SELECT 'POINT EMPTY'::public.geometry = 'POINT EMPTY'::public.geometry; }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 8 09:33:55 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 08 Jan 2026 17:33:55 -0000 Subject: [PostGIS] #6033: ERROR: operator is not unique: public.geometry = public.geometry In-Reply-To: <046.8b65a0696671f5b60448812d9e3003f2@osgeo.org> References: <046.8b65a0696671f5b60448812d9e3003f2@osgeo.org> Message-ID: <061.87bf12916cc91d141cebb647ea9416d7@osgeo.org> #6033: ERROR: operator is not unique: public.geometry = public.geometry ----------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.2 Component: postgis | Version: 3.5.x Resolution: | Keywords: ----------------------+--------------------------- Changes (by robe): * owner: pramsey => robe -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sat Jan 10 05:48:02 2026 From: git at osgeo.org (git at osgeo.org) Date: Sat, 10 Jan 2026 05:48:02 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-271-ge7e55cdf3 Message-ID: <20260110134802.680823AF1E@trac.osgeo.org> 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 e7e55cdf3e82356b11365b706bb65c30f4060b35 (commit) from 2cdf739b02ec00ff6b784e15ed8d3d87bf3f788f (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 e7e55cdf3e82356b11365b706bb65c30f4060b35 Author: Denys Kovshun Date: Sat Jan 10 12:22:37 2026 +0000 Translated PostGIS Manual using Weblate (Ukrainian) Currently translated at 86.5% (5101 of 5893 strings) Translation: postgis/PostGIS Manual Translate-URL: https://weblate.osgeo.org/projects/postgis/postgis-manual/uk/ diff --git a/doc/po/uk/postgis-manual.po b/doc/po/uk/postgis-manual.po index 9e55330d7..62e629932 100644 --- a/doc/po/uk/postgis-manual.po +++ b/doc/po/uk/postgis-manual.po @@ -1,12 +1,12 @@ # SOME DESCRIPTIVE TITLE. -# Denys Kovshun , 2025. +# Denys Kovshun , 2025, 2026. # Weblate , 2025. msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://bugs.kde.org\n" "POT-Creation-Date: 2025-11-13 16:23+0000\n" -"PO-Revision-Date: 2025-12-25 20:47+0000\n" +"PO-Revision-Date: 2026-01-10 13:47+0000\n" "Last-Translator: Denys Kovshun \n" "Language-Team: Ukrainian \n" @@ -42414,7 +42414,7 @@ msgstr "" #. Tag: refpurpose #, no-c-format msgid "Compute a straight skeleton from a geometry" -msgstr "" +msgstr "????????? ?????? ?????? ? ????e????" #. Tag: para #, no-c-format @@ -42636,6 +42636,14 @@ msgid "" "parameter> specifies the type of buffer to create: 0: Rounded buffer " "(default) 1: Flat buffer 2: Square buffer" msgstr "" +"??????? 3D-????? ??????? ??????? ????????? geom ?? " +"??????? radius. ????? ????????? ? 3D-????????, " +"????????? ??'???? ????????????? ???????? ?????????. ???????? " +"segments ???????? ????????? ?????????, ?? " +"???????????????? ??? ???????????? ???????? ??????? ??????, ? ??????????? " +"????????? 4 ????????. ???????? buffer_type ???????? " +"??? ??????, ?? ???????????: 0: ?????????? ????? (?? ?????????????) 1: " +"??????? ????? 2: ?????????? ?????" #. Tag: para #, no-c-format @@ -43287,6 +43295,17 @@ msgid "" "functions with from_proj, input geometries must have a " "defined SRID." msgstr "" +"???????? ???? ????????? ? ????????????, ????????????? ? ???? ??????? " +"??????????? ?????????. ?????????? ??????? ????????? ??????????? " +"to_srid ???? ???? ?????????????? ?? ????????? ???????? " +"?????????????? ????????? SRID (????? ???? ??????? ???????? ? ??????? " +"spatial_ref_sys). ?? ????????????, ??? to_proj ??/??? from_proj ????? ??????????????? " +"?????????? ??????? ?????????, ????????? ?? ????? PROJ.4, ????? ?? ?????? ?? " +"? ??????????????. ???? ?????????? ??????? ????????? ??????????? ???????? " +"?????? PROJ.4 ??????? SRID, SRID ???????? ????????? ???? ??????????? ?? " +"????. ?? ???????? ??????? ? from_proj, ?????? ????????? " +"??????? ???? ?????????? SRID." #. Tag: para #, no-c-format @@ -43387,6 +43406,14 @@ msgid "" "proj4text value within the spatial_ref_sys table." msgstr "" +"????? ???????????? ????????? ?? ????????? ????? ???? ??????????? ????????, " +"?????????, ???? PROJ.4 ?? ???? ???????? ? ??????? ???????? ????? ??? " +"?????????? ?? ?????? ? ?????????, ??? ????? ????????? ???????? ?????. ?? " +"????????????? PostGIS ??????? ???????, ???? ???? ???????? ????? ?????????, " +"??? ?? ????????? ????? ??????????? ??? ??????? SRID ??????, ??? ?????? " +"?????????? ?????? ??????? to_proj ?????? PROJ.4, ??? " +"?????? ????? ???????? proj4text ? ??????? " +"spatial_ref_sys." #. Tag: para #, no-c-format @@ -44271,6 +44298,15 @@ msgid "" "function\" error. To prevent the error use an explicit cast to the desired " "box type." msgstr "" +"????? ?????????? ????? ???? ?????????, ?? " +"???????, ?? ?????????? ??????? ???? ??????? ?? ????????? ?????????? " +"CAST(myval As sometype) ??? myval::sometype. ???? ?????????? ????? ???????? ???????? ???????? ????????????? " +"?????????, ??? ???? ????????? ??? ???????????? ?????????????? ???????, ?? ?? " +"????????? ?????? ???. ?????????, ??????? ???? ???????? box2d ??? box3d, ??? " +"?? geometry. ???????? geometry ??? ??????????? ?????????? ?? ???? ????? box, " +"?? ?????????? ?? ??????? ????????????? ????????. ??? ????????? ???????, " +"?????????????? ???? ?????????? ?? ???????? ???? box." #. Tag: para #, no-c-format @@ -44284,7 +44320,7 @@ msgstr "" #. Tag: refpurpose #, no-c-format msgid "The type representing a 2-dimensional bounding box." -msgstr "" +msgstr "???, ?? ??????????? ?????????? ???????????? ?????." #. Tag: para #, no-c-format @@ -44294,6 +44330,10 @@ msgid "" "For example, the aggregate function returns a " "box2d object." msgstr "" +"box2d ? ?? ??? ??????????? ?????, ?? ???????????????? ??? " +"????????????? ??????????? ????????????? ?????, ??? ??????? ????????? ??? " +"?????????? ?????????. ?????????, ????????? ??????? ???????? ??'??? box2d." #. Tag: para #, no-c-format @@ -44301,6 +44341,8 @@ msgid "" "The representation contains the values xmin, ymin, xmax, ymax. These are the minimum and maximum values of the X and Y extents." msgstr "" +"????????????? ??????? ???????? xmin, ymin, xmax, ymax. ?? " +"?????????? ?? ??????????? ???????? ???????? X ?? Y." #. Tag: para #, no-c-format @@ -44308,27 +44350,31 @@ msgid "" "box2d objects have a text representation which looks like " "BOX(1 2,5 6)." msgstr "" +"??'???? box2d ????? ???????? ?????????????, ??? ???????? " +"?? BOX(1 2,5 6)." #. Tag: para #, no-c-format msgid "" "This table lists the automatic and explicit casts allowed for this data type:" msgstr "" +"? ??? ??????? ???????? ??????????? ?? ???? ????????????, ????????? ??? ????? " +"???? ?????:" #. Tag: entry #, no-c-format msgid "box3d" -msgstr "" +msgstr "box3d" #. Tag: entry #, no-c-format msgid "geometry" -msgstr "" +msgstr "geometry" #. Tag: refpurpose #, no-c-format msgid "The type representing a 3-dimensional bounding box." -msgstr "" +msgstr "???, ?? ??????????? ?????????? ???????????? ?????." #. Tag: para #, no-c-format @@ -44338,6 +44384,10 @@ msgid "" "geometries. For example, the aggregate " "function returns a box3d object." msgstr "" +"box3d ? ?? ??? ??????????? ????? PostGIS, ???? " +"???????????????? ??? ????????????? ??????????? ????????????? ?????, ?? " +"??????? ????????? ??? ?????????? ?????????. ?????????, ????????? ??????? " +" ???????? ??'??? box3d." #. Tag: para #, no-c-format @@ -44346,6 +44396,8 @@ msgid "" "ymax, zmax. These are the minimum and maximum values of the X, Y " "and Z extents." msgstr "" +"????????????? ??????? ???????? xmin, ymin, zmin, xmax, ymax, zmax. ?? ?????????? ?? ??????????? ???????? ???????? X, Y ?? Z." #. Tag: para #, no-c-format @@ -44353,21 +44405,23 @@ msgid "" "box3d objects have a text representation which looks like " "BOX3D(1 2 3,5 6 5)." msgstr "" +"??'???? box3d ????? ???????? ?????????????, ??? ???????? " +"?? BOX3D(1 2 3,5 6 5)." #. Tag: entry #, no-c-format msgid "box" -msgstr "" +msgstr "box" #. Tag: entry #, no-c-format msgid "box2d" -msgstr "" +msgstr "box2d" #. Tag: refpurpose #, no-c-format msgid "The type representing spatial features with planar coordinate systems." -msgstr "" +msgstr "???, ?? ??????????? ?????????? ??'???? ? ???????? ????????? ?????????." #. Tag: para #, no-c-format @@ -44375,6 +44429,9 @@ msgid "" "geometry is a fundamental PostGIS spatial data type used " "to represent a feature in planar (Euclidean) coordinate systems." msgstr "" +"geometry ? ?? ???????? ??? ??????????? ????? PostGIS, " +"???? ???????????????? ??? ????????????? ??'???? ? ????????? (??????????) " +"???????? ?????????." #. Tag: para #, no-c-format @@ -44382,31 +44439,34 @@ msgid "" "All spatial operations on geometry use the units of the Spatial Reference " "System the geometry is in." msgstr "" +"??? ?????????? ???????? ??? ?????????? ?????????????? ??????? ?????? " +"??????????? ??????? ?????????, ? ???? ??????????? ?????????." #. Tag: entry #, no-c-format msgid "bytea" -msgstr "" +msgstr "bytea" #. Tag: entry #, no-c-format msgid "geography" -msgstr "" +msgstr "geography" #. Tag: entry #, no-c-format msgid "text" -msgstr "" +msgstr "text" #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format msgid "A composite type used to describe the parts of complex geometry." msgstr "" +"??????????? ???, ?? ???????????????? ??? ????? ?????? ???????? ?????????." #. Tag: para #, no-c-format @@ -44415,6 +44475,9 @@ msgid "" "postgresql.org/docs/current/rowtypes.html\">composite data type " "containing the fields:" msgstr "" +"geometry_dump ? ?? ???????? ??? ?????, ?? " +"??????? ???? ????:" #. Tag: para #, no-c-format @@ -44422,6 +44485,8 @@ msgid "" "geom - a geometry representing a component of the dumped " "geometry. The geometry type depends on the originating function." msgstr "" +"geom ? ?????????, ?? ??????????? ????????? ???????? " +"?????????. ??? ????????? ???????? ??? ???????? ???????." #. Tag: para #, no-c-format @@ -44431,6 +44496,9 @@ msgid "" "The path array is 1-based (i.e. path[1] is the first " "element.)" msgstr "" +"path[] ? ????? ????? ?????, ?? ???????? ???? ????????? ? " +"????? ???????? ????????? ?? ?????????? geom. ????? ?????? " +"????????? ?? 1 (????? path[1] ? ?????? ?????????)" #. Tag: para #, no-c-format @@ -44438,6 +44506,8 @@ msgid "" "It is used by the ST_Dump* family of functions as an " "output type to explode a complex geometry into its constituent parts." msgstr "" +"??? ???????????????? ?????????? ??????? ST_Dump* ?? ??? " +"?????? ??? ???????? ???????? ????????? ?? ???????? ???????." #. Tag: refpurpose #, no-c-format @@ -44445,6 +44515,8 @@ msgid "" "The type representing spatial features with geodetic (ellipsoidal) " "coordinate systems." msgstr "" +"???, ?? ??????????? ?????????? ??'???? ? ???????????? (???????????????) " +"????????? ?????????." #. Tag: para #, no-c-format @@ -44453,6 +44525,9 @@ msgid "" "feature in geodetic coordinate systems. Geodetic coordinate systems model " "the earth using an ellipsoid." msgstr "" +"geography ? ?? ??? ??????????? ?????, ?? ???????????????? " +"??? ????????????? ??'???? ? ??????????? ???????? ?????????. ?????????? " +"??????? ????????? ????????? ????? ?? ????????? ?????????." #. Tag: para #, no-c-format @@ -44460,21 +44535,23 @@ msgid "" "Spatial operations on the geography type provide more accurate results by " "taking the ellipsoidal model into account." msgstr "" +"?????????? ???????? ? ????? ????????? ???????????? ????? ????? ?????????? " +"??????? ?????????? ?????????????? ??????." #. Tag: entry #, no-c-format msgid "explicit" -msgstr "" +msgstr "explicit" #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: title #, no-c-format msgid "Geometry Validation" -msgstr "" +msgstr "????????? ?????????" #. Tag: para #, no-c-format @@ -44484,11 +44561,15 @@ msgid "" "invalidity. There is also a function to create a valid geometry out of an " "invalid one." msgstr "" +"?? ??????? ???????????, ?? ????????? ? ???????? ?????????? ?? ????????? OGC " +"SFS. ???? ????? ??????? ?????????? ??? ???????? ? ????? ???????????? " +"????????? ?????????. ????? ????? ??????? ??? ????????? ??????? ????????? ? " +"?????????." #. Tag: refpurpose #, no-c-format msgid "Tests if a geometry is well-formed in 2D." -msgstr "" +msgstr "?????????, ?? ????????? ??? ????????? ????? ? 2D." #. Tag: para #, no-c-format @@ -44498,6 +44579,11 @@ msgid "" "only tested in 2 dimensions. For geometries that are invalid, a PostgreSQL " "NOTICE is emitted providing details of why it is not valid." msgstr "" +"?????????, ?? ???????? ST_Geometry ? ????????? ??????????? ? ??????? ? 2D " +"?????????? ?? ?????? OGC. ??? ????????? ? 3 ? 4 ???????? ????????? ??? ?? " +"????????????? ?????? ? 2 ???????. ??? ?????????, ??? ? ??????????, ????????? " +"???????????? PostgreSQL NOTICE ? ????????? ??????????? ??? ??????? " +"???????????." #. Tag: para #, no-c-format @@ -44506,6 +44592,9 @@ msgid "" "values are documented in This version " "does not print a NOTICE explaining invalidity." msgstr "" +"??? ?????? ? ?????????? flags ???????????? ???????? " +"??????????????? ? ?? ?????? ?? ?????? " +"????????????, ?? ??????? ???????????." #. Tag: para #, no-c-format @@ -44513,6 +44602,8 @@ msgid "" "For more information on the definition of geometry validity, refer to " msgstr "" +"????? ???????? ?????????? ??? ?????????? ???????????? ?????????? ???. " #. Tag: para #, no-c-format @@ -44520,16 +44611,18 @@ msgid "" "SQL-MM defines the result of ST_IsValid(NULL) to be 0, while PostGIS returns " "NULL." msgstr "" +"SQL-MM ???????? ????????? ST_IsValid(NULL) ?? 0, ???? ?? PostGIS ???????? " +"NULL." #. Tag: para #, no-c-format msgid "The version accepting flags is available starting with 2.0.0." -msgstr "" +msgstr "??????, ?? ????????? ????????, ???????? ????????? ? 2.0.0." #. Tag: para #, no-c-format msgid "&sqlmm_compliant; SQL-MM 3: 5.1.9" -msgstr "" +msgstr "&sqlmm_compliant; SQL-MM 3: 5.1.9" #. Tag: para #, no-c-format @@ -44537,12 +44630,15 @@ msgid "" "Neither OGC-SFS nor SQL-MM specifications include a flag argument for " "ST_IsValid. The flag is a PostGIS extension." msgstr "" +"?? ???????????? OGC-SFS, ?? SQL-MM ?? ??????? ????????? ???????? ??? " +"ST_IsValid. ????????? ? ??????????? PostGIS." #. Tag: para #, no-c-format msgid "" ", , ," msgstr "" +", , ," #. Tag: refpurpose #, no-c-format @@ -44550,6 +44646,8 @@ msgid "" "Returns a valid_detail row stating if a geometry is valid " "or if not a reason and a location." msgstr "" +"???????? ????? valid_detail, ? ????? ???????, ?? ? " +"????????? ???????, ? ???? ??, ?? ??????? ?? ????? ????????????." #. Tag: para #, no-c-format @@ -44559,6 +44657,11 @@ msgid "" "(reason) stating a reason why it is invalid and a " "geometry (location) pointing out where it is invalid." msgstr "" +"???????? ????? valid_detail, ?? ??????? ??????? ???????? " +"(valid), ??? ??????, ?? ? ????????? ???????, ????? " +"varchar (reason), ?? ?????? ???????, ???? ???? ? " +"?????????, ?? ????????? (location), ?? ??????, ?? ???? ? " +"?????????." #. Tag: para #, no-c-format @@ -44567,6 +44670,9 @@ msgid "" " to generate a detailed report of " "invalid geometries." msgstr "" +"??????? ??? ?????????? ?????????? ?? ??? ????????? ?????????? ????? ??? ???????? " +"?????????." #. Tag: para #, no-c-format @@ -44574,11 +44680,13 @@ msgid "" "The optional flags parameter is a bitfield. It can have " "the following values:" msgstr "" +"???????????? ???????? flags ? ??????? ?????. ??? ???? " +"???? ???? ????????:" #. Tag: para #, no-c-format msgid "0: Use usual OGC SFS validity semantics." -msgstr "" +msgstr "0: ?????????????? ???????? ????????? ?????????? OGC SFS." #. Tag: para #, no-c-format @@ -44592,7 +44700,7 @@ msgstr "" #. Tag: para #, no-c-format msgid ", " -msgstr "" +msgstr ", " #. Tag: refpurpose #, no-c-format ----------------------------------------------------------------------- Summary of changes: doc/po/uk/postgis-manual.po | 152 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 130 insertions(+), 22 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Sat Jan 10 16:29:57 2026 From: git at osgeo.org (git at osgeo.org) Date: Sat, 10 Jan 2026 16:29:57 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-272-g2fd624566 Message-ID: <20260111002957.6764B3D1DD@trac.osgeo.org> 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 2fd624566a96e503dbc6288d61e9d2c71a4120ff (commit) from e7e55cdf3e82356b11365b706bb65c30f4060b35 (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 2fd624566a96e503dbc6288d61e9d2c71a4120ff Author: Regina Obe Date: Sat Jan 10 19:29:48 2026 -0500 Upgrade berrie to geos-master to see if she stops crashing on coverage test diff --git a/ci/berrie/configs.sh b/ci/berrie/configs.sh index fae39a0af..c0414b998 100644 --- a/ci/berrie/configs.sh +++ b/ci/berrie/configs.sh @@ -1,5 +1,5 @@ export WORKSPACE=/home/jenkins/workspace -export GEOS_VER=3.12.4 +export GEOS_VER=3.15.0 export OS_BUILD=32 export PG_VER=15 ----------------------------------------------------------------------- Summary of changes: ci/berrie/configs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Sat Jan 10 18:38:53 2026 From: git at osgeo.org (git at osgeo.org) Date: Sat, 10 Jan 2026 18:38:53 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-273-g5b0471c31 Message-ID: <20260111023853.9A9093E0A0@trac.osgeo.org> 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 5b0471c31399202cb7c8e407dcf90ce229c1cd5c (commit) from 2fd624566a96e503dbc6288d61e9d2c71a4120ff (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 5b0471c31399202cb7c8e407dcf90ce229c1cd5c Author: Regina Obe Date: Sat Jan 10 21:38:43 2026 -0500 change to 3.11.6 diff --git a/ci/berrie/configs.sh b/ci/berrie/configs.sh index c0414b998..5119fcccc 100644 --- a/ci/berrie/configs.sh +++ b/ci/berrie/configs.sh @@ -1,5 +1,5 @@ export WORKSPACE=/home/jenkins/workspace -export GEOS_VER=3.15.0 +export GEOS_VER=3.11.6 export OS_BUILD=32 export PG_VER=15 ----------------------------------------------------------------------- Summary of changes: ci/berrie/configs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Sat Jan 10 19:29:46 2026 From: git at osgeo.org (git at osgeo.org) Date: Sat, 10 Jan 2026 19:29:46 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-274-g1a44e0fdc Message-ID: <20260111032946.8B6233EA54@trac.osgeo.org> 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 1a44e0fdca9141e7e5c844ec4b537015219b4be9 (commit) from 5b0471c31399202cb7c8e407dcf90ce229c1cd5c (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 1a44e0fdca9141e7e5c844ec4b537015219b4be9 Author: Regina Obe Date: Sat Jan 10 22:29:38 2026 -0500 Disable topology testing on bessie until regressions fixed diff --git a/ci/bessie/postgis_regress.sh b/ci/bessie/postgis_regress.sh index bec7bb73b..18d5fdf5a 100644 --- a/ci/bessie/postgis_regress.sh +++ b/ci/bessie/postgis_regress.sh @@ -8,7 +8,8 @@ sh autogen.sh ./configure \ --with-projdir=/usr/local \ --with-libiconv=/usr/local \ - --with-library-minor-version + --with-library-minor-version \ + --without-topology #make distclean make export PGUSER=postgres ----------------------------------------------------------------------- Summary of changes: ci/bessie/postgis_regress.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Sat Jan 10 19:32:06 2026 From: git at osgeo.org (git at osgeo.org) Date: Sat, 10 Jan 2026 19:32:06 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-275-ge48062f7d Message-ID: <20260111033207.5538F109CE7@trac.osgeo.org> 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 e48062f7d65694c22841dab7587b2fdad9ea8549 (commit) from 1a44e0fdca9141e7e5c844ec4b537015219b4be9 (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 e48062f7d65694c22841dab7587b2fdad9ea8549 Author: Regina Obe Date: Sat Jan 10 22:31:33 2026 -0500 Don't test topology on berrie 32-bit as it's failing on addnode diff --git a/ci/berrie/postgis_regress.sh b/ci/berrie/postgis_regress.sh index dda1678f5..426cc52d8 100644 --- a/ci/berrie/postgis_regress.sh +++ b/ci/berrie/postgis_regress.sh @@ -17,6 +17,7 @@ sh autogen.sh ./configure --with-pgconfig=${PGPATH}/bin/pg_config \ --with-geosconfig=${GEOS_PATH}/bin/geos-config \ --without-protobuf --with-library-minor-version \ + --without-topology \ --enable-lto --prefix=${PGPATH} #make clean make ----------------------------------------------------------------------- Summary of changes: ci/berrie/postgis_regress.sh | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- PostGIS From git at osgeo.org Mon Jan 12 12:19:10 2026 From: git at osgeo.org (git at osgeo.org) Date: Mon, 12 Jan 2026 12:19:10 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-276-g3c50b132d Message-ID: <20260112201911.1E33722848@trac.osgeo.org> 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 3c50b132d145ab4c8a5a32d8f8bc7f1676e2ad6b (commit) from e48062f7d65694c22841dab7587b2fdad9ea8549 (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 3c50b132d145ab4c8a5a32d8f8bc7f1676e2ad6b Author: Paul Ramsey Date: Mon Jan 12 12:19:06 2026 -0800 Quiet clang warning about folding into array diff --git a/raster/test/cunit/cu_gdal.c b/raster/test/cunit/cu_gdal.c index aa53fe268..4420d2062 100644 --- a/raster/test/cunit/cu_gdal.c +++ b/raster/test/cunit/cu_gdal.c @@ -380,8 +380,8 @@ static void test_gdal_to_raster() { rt_raster raster; rt_raster rast; - const uint32_t width = 100; - const uint32_t height = 100; + static uint32_t width = 100; + static uint32_t height = 100; uint32_t x; uint32_t y; int v; ----------------------------------------------------------------------- Summary of changes: raster/test/cunit/cu_gdal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Mon Jan 12 13:28:37 2026 From: git at osgeo.org (git at osgeo.org) Date: Mon, 12 Jan 2026 13:28:37 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-277-g48a31d424 Message-ID: <20260112212837.E3A9A2343C@trac.osgeo.org> 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 48a31d424a91b9fda7c125a5c5594689e87d562c (commit) from 3c50b132d145ab4c8a5a32d8f8bc7f1676e2ad6b (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 48a31d424a91b9fda7c125a5c5594689e87d562c Author: Paul Ramsey Date: Mon Jan 12 13:26:14 2026 -0800 Back ST_DWithin with GEOSPreparedDistance for cases where it might be useful. When at least one object is > 1kb. Standard caching criteria (see object more than once). Use brute force implementation where caching is not indicated. Includes a commented out ST_DwithinUncached which is backed by the old brute force implementation, for testing purposes. Closes #2614 diff --git a/NEWS b/NEWS index f4c61cbc6..9e96fdbe3 100644 --- a/NEWS +++ b/NEWS @@ -24,6 +24,7 @@ xxxx/xx/xx - #4222, [raster] ST_DumpAsPolygons honours PostgreSQL interrupts (Darafei Praliaskouski) - #5109, Document the meaning of topology.next_left_edge and topology.next_right_edge links (Darafei Praliaskouski) - #5889, [topology] Include representative locations in topology build errors (Darafei Praliaskouski) + - #2614, Use GEOSPreparedDistance and caching to accelerate ST_DWithin (Paul Ramsey) * Bug Fixes * diff --git a/postgis/lwgeom_functions_basic.c b/postgis/lwgeom_functions_basic.c index b3e1179b3..ed5f076f2 100644 --- a/postgis/lwgeom_functions_basic.c +++ b/postgis/lwgeom_functions_basic.c @@ -66,7 +66,7 @@ Datum ST_Distance(PG_FUNCTION_ARGS); Datum LWGEOM_closestpoint(PG_FUNCTION_ARGS); Datum LWGEOM_shortestline2d(PG_FUNCTION_ARGS); Datum LWGEOM_longestline2d(PG_FUNCTION_ARGS); -Datum LWGEOM_dwithin(PG_FUNCTION_ARGS); +Datum ST_DWithinUncached(PG_FUNCTION_ARGS); Datum LWGEOM_maxdistance3d(PG_FUNCTION_ARGS); Datum LWGEOM_mindistance3d(PG_FUNCTION_ARGS); @@ -727,8 +727,8 @@ Returns boolean describing if mininimum 2d distance between objects in geom1 and geom2 is shorter than tolerance */ -PG_FUNCTION_INFO_V1(LWGEOM_dwithin); -Datum LWGEOM_dwithin(PG_FUNCTION_ARGS) +PG_FUNCTION_INFO_V1(ST_DWithinUncached); +Datum ST_DWithinUncached(PG_FUNCTION_ARGS) { double mindist; GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0); diff --git a/postgis/lwgeom_geos_predicates.c b/postgis/lwgeom_geos_predicates.c index 092795921..fb8989f05 100644 --- a/postgis/lwgeom_geos_predicates.c +++ b/postgis/lwgeom_geos_predicates.c @@ -46,6 +46,7 @@ /* Prototypes for SQL-bound functions */ +Datum LWGEOM_dwithin(PG_FUNCTION_ARGS); Datum relate_full(PG_FUNCTION_ARGS); Datum relate_pattern(PG_FUNCTION_ARGS); Datum disjoint(PG_FUNCTION_ARGS); @@ -1018,3 +1019,100 @@ Datum relate_full(PG_FUNCTION_ARGS) } +/* + * ST_DWithin(geom1, geom2, radius) returns boolean + * + * For GEOS >= 3.10, this is a cached predicate implementation much + * like the other functions in this module. As with the other prepared + * predicates, the utility of the caching/preparation is a function + * of the size of the inputs, in particular the cached input, and + * that caching only happens if the input shows up multiple times in + * a row, which mostly is a result of either a literal or a + * nested loop join. The size of the inputs is used as an initial + * pre-check on whether to engage the geos/prepared geometry + * machinery. + */ +PG_FUNCTION_INFO_V1(LWGEOM_dwithin); +Datum LWGEOM_dwithin(PG_FUNCTION_ARGS) +{ + + double tolerance = PG_GETARG_FLOAT8(2); + double mindist; + +#if POSTGIS_GEOS_VERSION < 31000 + const GSERIALIZED *geom1 = PG_GETARG_GSERIALIZED_P(0); + const GSERIALIZED *geom2 = PG_GETARG_GSERIALIZED_P(1); + LWGEOM *lwgeom1 = lwgeom_from_gserialized(geom1); + LWGEOM *lwgeom2 = lwgeom_from_gserialized(geom2); + mindist = lwgeom_mindistance2d_tolerance(lwgeom1, lwgeom2, tolerance); + PG_RETURN_BOOL(tolerance >= mindist); + +#else + SHARED_GSERIALIZED *shared_geom1 = ToastCacheGetGeometry(fcinfo, 0); + SHARED_GSERIALIZED *shared_geom2 = ToastCacheGetGeometry(fcinfo, 1); + const GSERIALIZED *geom1 = shared_gserialized_get(shared_geom1); + const GSERIALIZED *geom2 = shared_gserialized_get(shared_geom2); + PrepGeomCache *prep_cache = NULL; + const size_t small_threshold = 1024; + char is_dwithin = -1; + + /* + * Only enter the GEOS/PreparedGeometry code line if one of the + * operands is large enough that the win from indexing will exceed + * the loss from GEOS fixed overhead. + */ + bool use_prepared = + (LWSIZE_GET(geom1->size) > small_threshold) || + (LWSIZE_GET(geom2->size) > small_threshold); + + if (tolerance < 0) + elog(ERROR, "Tolerance cannot be less than zero"); + + /* + * Error out early for mismatched SRID or empty inputs. + */ + gserialized_error_if_srid_mismatch(geom1, geom2, __func__); + if (gserialized_is_empty(geom1) || gserialized_is_empty(geom2)) + PG_RETURN_BOOL(false); + + /* + * Only enter GEOS/PreparedGeometry code line if objects + * are big enough and cache is populated. + */ + if (use_prepared) + { + initGEOS(lwpgnotice, lwgeom_geos_error); + prep_cache = GetPrepGeomCache(fcinfo, shared_geom1, shared_geom2); + if (prep_cache && prep_cache->prepared_geom) + { + GEOSGeometry *g = NULL; + if (prep_cache->gcache.argnum == 1) + g = POSTGIS2GEOS(geom2); + else + g = POSTGIS2GEOS(geom1); + + if (!g) HANDLE_GEOS_ERROR("Geometry could not be converted to GEOS"); + is_dwithin = GEOSPreparedDistanceWithin(prep_cache->prepared_geom, g, tolerance); + if (is_dwithin == 2) HANDLE_GEOS_ERROR("GEOSPreparedDistanceWithin"); + GEOSGeom_destroy(g); + } + } + + /* + * If for any reason we did not use GEOS/PreparedGeometry, we still + * need an answer, so use the brute force implementation. + */ + if (is_dwithin < 0) + { + LWGEOM *lwgeom1 = lwgeom_from_gserialized(geom1); + LWGEOM *lwgeom2 = lwgeom_from_gserialized(geom2); + mindist = lwgeom_mindistance2d_tolerance(lwgeom1, lwgeom2, tolerance); + is_dwithin = (tolerance >= mindist); + } + + PG_RETURN_BOOL(is_dwithin); + +#endif +} + + diff --git a/postgis/postgis.sql.in b/postgis/postgis.sql.in index 3e5916205..4d13ced28 100644 --- a/postgis/postgis.sql.in +++ b/postgis/postgis.sql.in @@ -4674,6 +4674,14 @@ CREATE OR REPLACE FUNCTION ST_DWithin(geom1 geometry, geom2 geometry, float8) LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE _COST_HIGH; +-- Availability: 3.7.0 +-- Purpose: Uncomment for testing against cached version of ST_DWithin +-- CREATE OR REPLACE FUNCTION ST_DWithinUncached(geom1 geometry, geom2 geometry, float8) +-- RETURNS boolean +-- AS 'MODULE_PATHNAME', 'ST_DWithinUncached' +-- LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE +-- _COST_HIGH; + -- Availability: 1.2.2 CREATE OR REPLACE FUNCTION ST_Touches(geom1 geometry, geom2 geometry) RETURNS boolean ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + postgis/lwgeom_functions_basic.c | 6 +-- postgis/lwgeom_geos_predicates.c | 98 ++++++++++++++++++++++++++++++++++++++++ postgis/postgis.sql.in | 8 ++++ 4 files changed, 110 insertions(+), 3 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Jan 12 13:28:40 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 12 Jan 2026 21:28:40 -0000 Subject: [PostGIS] #2614: Prepared geometry support for ST_DWithin In-Reply-To: <046.41117123baaa543ff6a90d33bb22189d@osgeo.org> References: <046.41117123baaa543ff6a90d33bb22189d@osgeo.org> Message-ID: <061.c9f22cefe5ddd1b2d7d6c1051b3b7fb0@osgeo.org> #2614: Prepared geometry support for ST_DWithin --------------------------+--------------------------- Reporter: robe | Owner: pramsey Type: enhancement | Status: closed Priority: high | Milestone: PostGIS 3.7.0 Component: postgis | Version: master Resolution: fixed | Keywords: --------------------------+--------------------------- Changes (by Paul Ramsey ): * resolution: => fixed * status: new => closed Comment: In [changeset:"48a31d424a91b9fda7c125a5c5594689e87d562c/git" 48a31d4/git]: {{{#!CommitTicketReference repository="git" revision="48a31d424a91b9fda7c125a5c5594689e87d562c" Back ST_DWithin with GEOSPreparedDistance for cases where it might be useful. When at least one object is > 1kb. Standard caching criteria (see object more than once). Use brute force implementation where caching is not indicated. Includes a commented out ST_DwithinUncached which is backed by the old brute force implementation, for testing purposes. Closes #2614 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 12 23:38:52 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 07:38:52 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line Message-ID: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> #6034: Missing node when adding overlapping line -------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Keywords: | -------------------------------+------------------- When adding two lines with a overlapping parts like this. {{{ SELECT topology.CreateTopology ('edge_test_01', 4258 , 1e-06); SELECT * FROM topology.TopoGeo_addLinestring('edge_test_01','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06); SELECT * FROM topology.TopoGeo_addLinestring('edge_test_01','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06); }}} We end with two completely separate edges. This is know problem yes but we need to solve this in way. The problem is also a kind random for the user, because if we change order it works OK. SELECT topology.CreateTopology ('edge_test_02', 4258 , 1e-06); SELECT * FROM topology.TopoGeo_addLinestring('edge_test_02','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06); SELECT * FROM topology.TopoGeo_addLinestring('edge_test_02','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06); it would be nice that result should not depend so much on the order of adding lines. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 12 23:39:38 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 07:39:38 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.fd165e8d84616d539b4d9dd4a4045358@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Changes (by Lars Aksel Opsahl): * Attachment "Screenshot 2026-01-13 at 08.38.13.png" added. nodes in edge_test_01 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 12 23:39:59 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 07:39:59 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.fa1ce771ea71d2318edc0cbd88bacaec@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Changes (by Lars Aksel Opsahl): * Attachment "Screenshot 2026-01-13 at 08.38.44.png" added. Nodes in edge_test_02 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 12 23:43:40 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 07:43:40 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.54d5c6a0b3e282b7f25d7ce4d78e680d@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Changes (by Lars Aksel Opsahl): * Attachment "test_01.png" added. nodes test_01 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 12 23:45:10 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 07:45:10 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.ad74481e4d42fcccc4cdddb324a7d9f6@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by Lars Aksel Opsahl): Here are input lines nodes from edge_test_01 [[Image(test_01.png)]] -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 12 23:45:41 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 07:45:41 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.fdf0a0ebc3dff6f13dfd1d14aac7f182@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Changes (by Lars Aksel Opsahl): * Attachment "test_02.png" added. Nodes in edge_test_02 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 12 23:46:38 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 07:46:38 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.aee5d81a911b2deb9a5f5373055b119e@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by Lars Aksel Opsahl): Here are node in test_02 and we one more node. [[Image(test_02.png)]] -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 13 02:59:42 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 02:59:42 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-279-g76123f9f6 Message-ID: <20260113105942.61B743340C@trac.osgeo.org> 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 76123f9f6e9653e7f7cce728046b42da1fc1ff03 (commit) via 5dbb1546c1a7d6158d099be9b1268966230419db (commit) from 48a31d424a91b9fda7c125a5c5594689e87d562c (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 76123f9f6e9653e7f7cce728046b42da1fc1ff03 Author: Sandro Santilli Date: Tue Jan 13 11:59:32 2026 +0100 Clarify comment diff --git a/liblwgeom/topo/lwgeom_topo.c b/liblwgeom/topo/lwgeom_topo.c index 61edd3ef5..5dd4b1f6d 100644 --- a/liblwgeom/topo/lwgeom_topo.c +++ b/liblwgeom/topo/lwgeom_topo.c @@ -2238,7 +2238,7 @@ _lwt_AddFaceSplit( LWT_TOPOLOGY* topo, if ( found ) continue; LWDEBUGF(1, "Edge %" LWTFMT_ELEMID " is not a known edge of the new ring", e->edge_id); - /* Check if the edge is now binding a different face */ + /* Check if the edge is inside the new face */ if ( ! getPoint2d_p(e->geom->points, 0, &ep) ) { commit 5dbb1546c1a7d6158d099be9b1268966230419db Author: Sandro Santilli Date: Tue Jan 13 11:59:21 2026 +0100 Fix typo in comment diff --git a/liblwgeom/lwalgorithm.c b/liblwgeom/lwalgorithm.c index 5cb90a04c..1ab3d74a6 100644 --- a/liblwgeom/lwalgorithm.c +++ b/liblwgeom/lwalgorithm.c @@ -97,7 +97,7 @@ lw_pt_in_arc(const POINT2D *P, const POINT2D *A1, const POINT2D *A2, const POINT /** * Returns true if P is between A1/A2. Only makes sense if P has already been -* deterined to be on the line defined by A1/A2. +* determined to be on the line defined by A1/A2. */ int lw_pt_in_seg(const POINT2D *P, const POINT2D *A1, const POINT2D *A2) ----------------------------------------------------------------------- Summary of changes: liblwgeom/lwalgorithm.c | 2 +- liblwgeom/topo/lwgeom_topo.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 13 03:08:59 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 11:08:59 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) (was: Silent toplogy error in the result (face has multiple shells,mixed face labeling in ring)) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.ac82902a96f21420a956f7138ea32d23@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Changes (by strk): * summary: Silent toplogy error in the result (face has multiple shells,mixed face labeling in ring) => Silent topology error in the result (face has multiple shells,mixed face labeling in ring) Comment: The problem is with ptarray_contains_point failing to determine the point is on the boundary of a segment, WIP fix is in https://gitea.osgeo.org/postgis/postgis/pulls/279 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 13 03:56:43 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 03:56:43 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-280-g3a6b9e454 Message-ID: <20260113115643.A791A376F5@trac.osgeo.org> 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 3a6b9e454c1ce9a53f14ad87fefcf8cf2ee1ad33 (commit) from 76123f9f6e9653e7f7cce728046b42da1fc1ff03 (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 3a6b9e454c1ce9a53f14ad87fefcf8cf2ee1ad33 Author: Sandro Santilli Date: Tue Jan 13 12:05:57 2026 +0100 Fix robustness issue in ptarray_contains_point References #6023 in master branch (3.7.0dev) Includes unit and regress tests diff --git a/liblwgeom/cunit/cu_ptarray.c b/liblwgeom/cunit/cu_ptarray.c index 99c689ac2..6d8ea2faa 100644 --- a/liblwgeom/cunit/cu_ptarray.c +++ b/liblwgeom/cunit/cu_ptarray.c @@ -426,6 +426,17 @@ static void test_ptarray_contains_point() rv = ptarray_contains_point(pa, &pt); CU_ASSERT_EQUAL(rv, LW_INSIDE); + lwline_free(lwline); + + + /* Test for https://trac.osgeo.org/postgis/ticket/6023 */ + lwline = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(11.230120879533454 62.84897119848748,11.230120879533905 62.8489711984873,11.23020501303477 62.84900750109812,11.230170431987244 62.84904481447776,11.230117909393426 62.8489943480894,11.230120879533454 62.84897119848748)")); + pa = lwline->points; + pt = getPoint2d(lwline->points, 0); + rv = ptarray_contains_point(pa, &pt); + ASSERT_INT_EQUAL(rv, LW_BOUNDARY); + + lwline_free(lwline); } diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index cce30d5b2..9a73230f8 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -768,6 +768,12 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); + /* This is required for robustness, see #6023 */ + if (p2d_same(seg1, pt)) + { + return LW_BOUNDARY; + } + /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { diff --git a/topology/test/regress/topogeo_addlinestring.sql b/topology/test/regress/topogeo_addlinestring.sql index 07465dab9..50c716b6b 100644 --- a/topology/test/regress/topogeo_addlinestring.sql +++ b/topology/test/regress/topogeo_addlinestring.sql @@ -589,3 +589,27 @@ SELECT '#5993.4', 'snap-split-off-limit', * FROM topology.TopoGeo_addLinestring( tolerance => 2 ); SELECT NULL FROM topology.DropTopology ('t5993'); + + + +-- See https://trac.osgeo.org/postgis/ticket/6023 +SELECT NULL FROM topology.CreateTopology ('t6023'); +SELECT NULL FROM topology.TopoGeo_addLinestring('t6023', + 'LINESTRING( + 11.230021066287687 62.84898276648437, + 11.230170431987244 62.84904481447776, + 11.230117909393426 62.8489943480894, + 11.230121356631185 62.848967479934664, + 11.230021066287687 62.84898276648437 + )',-1); +SELECT 't6023.1', 'errors', (array_agg(v.error))[1] FROM topology.ValidateTopology('t6023') v; +SELECT NULL FROM topology.TopoGeo_addLinestring('t6023', + 'LINESTRING( + 11.230170431987244 62.84904481447776, + 11.23020501303477 62.84900750109812, + 11.230120879533905 62.8489711984873, + 11.230120879533454 62.84897119848748 + )', 0); +SELECT 't6023.2', 'errors', (array_agg(v.error))[1] FROM topology.ValidateTopology('t6023') v; +SELECT NULL FROM topology.DropTopology ('t6023'); + diff --git a/topology/test/regress/topogeo_addlinestring_expected b/topology/test/regress/topogeo_addlinestring_expected index a9ecae7b9..f80416f71 100644 --- a/topology/test/regress/topogeo_addlinestring_expected +++ b/topology/test/regress/topogeo_addlinestring_expected @@ -233,3 +233,5 @@ ERROR: Adding line to topology requires creating more edges than the requested ERROR: Adding line to topology requires creating more edges than the requested limit of 1 #5993.3|double-split-in-limit|1 ERROR: Adding line to topology requires creating more edges than the requested limit of 1 +t6023.1|errors| +t6023.2|errors| ----------------------------------------------------------------------- Summary of changes: liblwgeom/cunit/cu_ptarray.c | 11 ++++++++++ liblwgeom/ptarray.c | 6 ++++++ topology/test/regress/topogeo_addlinestring.sql | 24 ++++++++++++++++++++++ .../test/regress/topogeo_addlinestring_expected | 2 ++ 4 files changed, 43 insertions(+) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 13 03:56:45 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 11:56:45 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.d6101fcf53f046e740ea61ebf9d87280@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"3a6b9e454c1ce9a53f14ad87fefcf8cf2ee1ad33/git" 3a6b9e45/git]: {{{#!CommitTicketReference repository="git" revision="3a6b9e454c1ce9a53f14ad87fefcf8cf2ee1ad33" Fix robustness issue in ptarray_contains_point References #6023 in master branch (3.7.0dev) Includes unit and regress tests }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Jan 13 06:00:15 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 14:00:15 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.8528746e170a23cbf8ed383f10193200@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by Lars Aksel Opsahl): Forgot Postgis version {{{ POSTGIS="3.7.0dev 3.6.0rc2-152-g19e25a659" [EXTENSION] PGSQL="160" GEOS="3.14.0-CAPI-1.20.4" PROJ="9.7.0 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/Users/lop/Library/Application Support/proj DATABASE_PATH=/opt/homebrew/Cellar/proj/9.7.0/share/proj/proj.db" (compiled against PROJ 9.7.0) LIBXML="2.13.0" LIBJSON="0.18" TOPOLOGY }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 13 07:24:52 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 07:24:52 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-10-g80eefad13 Message-ID: <20260113152453.0725A3A357@trac.osgeo.org> 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.6 has been updated via 80eefad13bd00d1e56d2bec36cd5140f87775ce4 (commit) from f71e8d8a682cfaf72330ae70bdc24c1e1bbd7802 (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 80eefad13bd00d1e56d2bec36cd5140f87775ce4 Author: Sandro Santilli Date: Tue Jan 13 12:05:57 2026 +0100 Fix robustness issue in ptarray_contains_point References #6023 in 3.6 branch (3.6.2dev) Includes unit test diff --git a/liblwgeom/cunit/cu_ptarray.c b/liblwgeom/cunit/cu_ptarray.c index 99c689ac2..6d8ea2faa 100644 --- a/liblwgeom/cunit/cu_ptarray.c +++ b/liblwgeom/cunit/cu_ptarray.c @@ -426,6 +426,17 @@ static void test_ptarray_contains_point() rv = ptarray_contains_point(pa, &pt); CU_ASSERT_EQUAL(rv, LW_INSIDE); + lwline_free(lwline); + + + /* Test for https://trac.osgeo.org/postgis/ticket/6023 */ + lwline = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(11.230120879533454 62.84897119848748,11.230120879533905 62.8489711984873,11.23020501303477 62.84900750109812,11.230170431987244 62.84904481447776,11.230117909393426 62.8489943480894,11.230120879533454 62.84897119848748)")); + pa = lwline->points; + pt = getPoint2d(lwline->points, 0); + rv = ptarray_contains_point(pa, &pt); + ASSERT_INT_EQUAL(rv, LW_BOUNDARY); + + lwline_free(lwline); } diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index 2bc6126b5..2afb12c44 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -768,6 +768,12 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); + /* This is required for robustness, see #6023 */ + if (p2d_same(seg1, pt)) + { + return LW_BOUNDARY; + } + /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: liblwgeom/cunit/cu_ptarray.c | 11 +++++++++++ liblwgeom/ptarray.c | 6 ++++++ 2 files changed, 17 insertions(+) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 13 07:24:54 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 15:24:54 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.9db9d23548960387ff3ae5ca5e4d16a3@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"80eefad13bd00d1e56d2bec36cd5140f87775ce4/git" 80eefad/git]: {{{#!CommitTicketReference repository="git" revision="80eefad13bd00d1e56d2bec36cd5140f87775ce4" Fix robustness issue in ptarray_contains_point References #6023 in 3.6 branch (3.6.2dev) Includes unit test }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 13 07:31:04 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 07:31:04 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-11-g7d8ab1474 Message-ID: <20260113153104.673A93C01E@trac.osgeo.org> 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.6 has been updated via 7d8ab147457afccb04f35057505b5843730af72e (commit) from 80eefad13bd00d1e56d2bec36cd5140f87775ce4 (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 7d8ab147457afccb04f35057505b5843730af72e Author: Sandro Santilli Date: Tue Jan 13 16:30:54 2026 +0100 Add missing NEWS item diff --git a/NEWS b/NEWS index 7fde115d8..0486c2c46 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,6 @@ -PostGIS 3.6.2 -2025/xx/xx +PostGIS 3.6.2dev +2026/xx/xx This version requires PostgreSQL 12-18, GEOS 3.8 or higher, and Proj 6.1+. To take advantage of all features, GEOS 3.14+ is needed. @@ -16,6 +16,7 @@ topogeometry corruption: * Fixes * +- #6023, Fix robustness issue in ptarray_contains_point (Sandro Santilli) - #6027, Fix RemoveUnusedPrimitives without topology in search_path (Sandro Santilli) - #6019, make clean does not remove cunit generated files ----------------------------------------------------------------------- Summary of changes: NEWS | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 13 07:32:47 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 07:32:47 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.5 updated. 3.5.4-12-g3ec8542a9 Message-ID: <20260113153248.685713BEF5@trac.osgeo.org> 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.5 has been updated via 3ec8542a9ca9b3a6edcb662731108e22f1779b91 (commit) from 9edefcf512798655375eb7ae6a0820546f1d45c9 (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 3ec8542a9ca9b3a6edcb662731108e22f1779b91 Author: Sandro Santilli Date: Tue Jan 13 12:05:57 2026 +0100 Fix robustness issue in ptarray_contains_point References #6023 in 3.5 branch (3.5.5dev) Includes unit test diff --git a/NEWS b/NEWS index 8aef123f7..3acc169ad 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -PostGIS 3.5.5 +PostGIS 3.5.5dev xxxx/xx/xx To take advantage of all postgis_sfcgal extension features SFCGAL 1.5+ is needed. @@ -8,6 +8,7 @@ PostgreSQL 12-18 required. GEOS 3.8+ required. Proj 6.1+ required. - #5959, #5984, Prevent histogram target overflow when analysing massive tables (Darafei Praliaskouski) - #6020, schema qualify call in ST_MPointFromText (Paul Ramsey) + - #6023, Fix robustness issue in ptarray_contains_point (Sandro Santilli) - #6027, Fix RemoveUnusedPrimitives without topology in search_path (Sandro Santilli) - #6028, crash indexing malformed empty polygon (Paul Ramsey) diff --git a/liblwgeom/cunit/cu_ptarray.c b/liblwgeom/cunit/cu_ptarray.c index bfb830284..bb1f43925 100644 --- a/liblwgeom/cunit/cu_ptarray.c +++ b/liblwgeom/cunit/cu_ptarray.c @@ -426,6 +426,17 @@ static void test_ptarray_contains_point() rv = ptarray_contains_point(pa, &pt); CU_ASSERT_EQUAL(rv, LW_INSIDE); + lwline_free(lwline); + + + /* Test for https://trac.osgeo.org/postgis/ticket/6023 */ + lwline = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(11.230120879533454 62.84897119848748,11.230120879533905 62.8489711984873,11.23020501303477 62.84900750109812,11.230170431987244 62.84904481447776,11.230117909393426 62.8489943480894,11.230120879533454 62.84897119848748)")); + pa = lwline->points; + pt = getPoint2d(lwline->points, 0); + rv = ptarray_contains_point(pa, &pt); + ASSERT_INT_EQUAL(rv, LW_BOUNDARY); + + lwline_free(lwline); } diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index 2369bff18..7a5cf234a 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -768,6 +768,12 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); + /* This is required for robustness, see #6023 */ + if (p2d_same(seg1, pt)) + { + return LW_BOUNDARY; + } + /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: NEWS | 3 ++- liblwgeom/cunit/cu_ptarray.c | 11 +++++++++++ liblwgeom/ptarray.c | 6 ++++++ 3 files changed, 19 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 13 07:32:50 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 15:32:50 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.56ce1fb0b18e8104c288a66c6ebb83c5@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"3ec8542a9ca9b3a6edcb662731108e22f1779b91/git" 3ec8542/git]: {{{#!CommitTicketReference repository="git" revision="3ec8542a9ca9b3a6edcb662731108e22f1779b91" Fix robustness issue in ptarray_contains_point References #6023 in 3.5 branch (3.5.5dev) Includes unit test }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 13 07:33:38 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 07:33:38 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.4 updated. 3.4.4-66-gfdfffdb43 Message-ID: <20260113153339.485173BA46@trac.osgeo.org> 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.4 has been updated via fdfffdb437bd937aa37c59ca9590d73882779c6e (commit) from e7b06279475fceb45def9292a2c5d6544d184508 (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 fdfffdb437bd937aa37c59ca9590d73882779c6e Author: Sandro Santilli Date: Tue Jan 13 12:05:57 2026 +0100 Fix robustness issue in ptarray_contains_point References #6023 in 3.4 branch (3.4.5dev) Includes unit test diff --git a/NEWS b/NEWS index a1f1b4576..3d0347ef7 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,7 @@ Proj 6.1+ required. * Bug Fixes * + - #6023, Fix robustness issue in ptarray_contains_point (Sandro Santilli) - #6027, Fix RemoveUnusedPrimitives without topology in search_path (Sandro Santilli) - #5978, fix parsing of constraints in geometry_columns (Paul Ramsey) - #5977, Fix downgrade protection with standard conforming strings off (Sandro Santilli) diff --git a/liblwgeom/cunit/cu_ptarray.c b/liblwgeom/cunit/cu_ptarray.c index bfb830284..bb1f43925 100644 --- a/liblwgeom/cunit/cu_ptarray.c +++ b/liblwgeom/cunit/cu_ptarray.c @@ -426,6 +426,17 @@ static void test_ptarray_contains_point() rv = ptarray_contains_point(pa, &pt); CU_ASSERT_EQUAL(rv, LW_INSIDE); + lwline_free(lwline); + + + /* Test for https://trac.osgeo.org/postgis/ticket/6023 */ + lwline = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(11.230120879533454 62.84897119848748,11.230120879533905 62.8489711984873,11.23020501303477 62.84900750109812,11.230170431987244 62.84904481447776,11.230117909393426 62.8489943480894,11.230120879533454 62.84897119848748)")); + pa = lwline->points; + pt = getPoint2d(lwline->points, 0); + rv = ptarray_contains_point(pa, &pt); + ASSERT_INT_EQUAL(rv, LW_BOUNDARY); + + lwline_free(lwline); } diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index 12114bbf2..74141aefd 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -772,6 +772,12 @@ ptarray_contains_point_partial(const POINTARRAY *pa, const POINT2D *pt, int chec { seg2 = getPoint2d_cp(pa, i); + /* This is required for robustness, see #6023 */ + if (p2d_same(seg1, pt)) + { + return LW_BOUNDARY; + } + /* Zero length segments are ignored. */ if ( seg1->x == seg2->x && seg1->y == seg2->y ) { ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + liblwgeom/cunit/cu_ptarray.c | 11 +++++++++++ liblwgeom/ptarray.c | 6 ++++++ 3 files changed, 18 insertions(+) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 13 07:33:41 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 15:33:41 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.3d61de7e4c3452280161cf4417dbb775@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"fdfffdb437bd937aa37c59ca9590d73882779c6e/git" fdfffdb/git]: {{{#!CommitTicketReference repository="git" revision="fdfffdb437bd937aa37c59ca9590d73882779c6e" Fix robustness issue in ptarray_contains_point References #6023 in 3.4 branch (3.4.5dev) Includes unit test }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 13 07:34:32 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 07:34:32 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.3 updated. 3.3.7-65-g29d977fa4 Message-ID: <20260113153432.6F2923BF40@trac.osgeo.org> 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 29d977fa49f899bfe6533bd2fe8b14a13b1313d3 (commit) from 38c2ccb5ea604ac456e3297be39663d0cbbce58e (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 29d977fa49f899bfe6533bd2fe8b14a13b1313d3 Author: Sandro Santilli Date: Tue Jan 13 12:05:57 2026 +0100 Fix robustness issue in ptarray_contains_point References #6023 in 3.3 branch (3.3.9dev) Includes unit test diff --git a/NEWS b/NEWS index cd969c30f..a2005d6a9 100644 --- a/NEWS +++ b/NEWS @@ -26,6 +26,7 @@ Proj 4.9+ required. - #5991, CircularString distance error (Paul Ramsey) - #5962, Consistent clipping of MULTI/POINT (Paul Ramsey) - #5989, CurvePolygon distance error (Paul Ramsey) + - #6023, Fix robustness issue in ptarray_contains_point (Sandro Santilli) - #6027, Fix RemoveUnusedPrimitives without topology in search_path (Sandro Santilli) - #6028, crash indexing malformed empty polygon (Paul Ramsey) diff --git a/liblwgeom/cunit/cu_ptarray.c b/liblwgeom/cunit/cu_ptarray.c index 48d6a3b24..82c50301d 100644 --- a/liblwgeom/cunit/cu_ptarray.c +++ b/liblwgeom/cunit/cu_ptarray.c @@ -426,6 +426,17 @@ static void test_ptarray_contains_point() rv = ptarray_contains_point(pa, &pt); CU_ASSERT_EQUAL(rv, LW_INSIDE); + lwline_free(lwline); + + + /* Test for https://trac.osgeo.org/postgis/ticket/6023 */ + lwline = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(11.230120879533454 62.84897119848748,11.230120879533905 62.8489711984873,11.23020501303477 62.84900750109812,11.230170431987244 62.84904481447776,11.230117909393426 62.8489943480894,11.230120879533454 62.84897119848748)")); + pa = lwline->points; + pt = getPoint2d(lwline->points, 0); + rv = ptarray_contains_point(pa, &pt); + ASSERT_INT_EQUAL(rv, LW_BOUNDARY); + + lwline_free(lwline); } diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index e106d2372..4d822fb98 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -759,6 +759,12 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); + /* This is required for robustness, see #6023 */ + if (p2d_same(seg1, pt)) + { + return LW_BOUNDARY; + } + /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + liblwgeom/cunit/cu_ptarray.c | 11 +++++++++++ liblwgeom/ptarray.c | 6 ++++++ 3 files changed, 18 insertions(+) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 13 07:34:34 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 15:34:34 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.bfa0572109863548777bd9740e591748@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"29d977fa49f899bfe6533bd2fe8b14a13b1313d3/git" 29d977f/git]: {{{#!CommitTicketReference repository="git" revision="29d977fa49f899bfe6533bd2fe8b14a13b1313d3" Fix robustness issue in ptarray_contains_point References #6023 in 3.3 branch (3.3.9dev) Includes unit test }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 13 07:35:17 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 07:35:17 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.2 updated. 3.2.7-58-g79c591a8a Message-ID: <20260113153518.319133BFA2@trac.osgeo.org> 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.2 has been updated via 79c591a8af5a19bb3b81c7f5ddbc540529c4086e (commit) from 87f9a82dbf195c0f3d57e12b32be4d4b5b5eb4ac (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 79c591a8af5a19bb3b81c7f5ddbc540529c4086e Author: Sandro Santilli Date: Tue Jan 13 12:05:57 2026 +0100 Fix robustness issue in ptarray_contains_point Closes #6023 in 3.2 branch (3.2.9dev) Includes unit test diff --git a/NEWS b/NEWS index fcbb2210c..8e80e68f4 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,7 @@ Proj 4.9+ required. * Bug Fixes * + - #6023, Fix robustness issue in ptarray_contains_point (Sandro Santilli) - #5951, [topology] Fix crash in ST_GetFaceEdges with corrupted topology (Sandro Santilli) - #5947, [topology] Fix crash in ST_ModEdgeHeal (Sandro Santilli) - #5925, #5946, [topology] Have GetFaceContainingPoint survive EMPTY edges (Sandro Santilli) diff --git a/liblwgeom/cunit/cu_ptarray.c b/liblwgeom/cunit/cu_ptarray.c index 0ae4a43fd..e22844603 100644 --- a/liblwgeom/cunit/cu_ptarray.c +++ b/liblwgeom/cunit/cu_ptarray.c @@ -426,6 +426,17 @@ static void test_ptarray_contains_point() rv = ptarray_contains_point(pa, &pt); CU_ASSERT_EQUAL(rv, LW_INSIDE); + lwline_free(lwline); + + + /* Test for https://trac.osgeo.org/postgis/ticket/6023 */ + lwline = lwgeom_as_lwline(lwgeom_from_text("LINESTRING(11.230120879533454 62.84897119848748,11.230120879533905 62.8489711984873,11.23020501303477 62.84900750109812,11.230170431987244 62.84904481447776,11.230117909393426 62.8489943480894,11.230120879533454 62.84897119848748)")); + pa = lwline->points; + pt = getPoint2d(lwline->points, 0); + rv = ptarray_contains_point(pa, &pt); + ASSERT_INT_EQUAL(rv, LW_BOUNDARY); + + lwline_free(lwline); } diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index e106d2372..4d822fb98 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -759,6 +759,12 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); + /* This is required for robustness, see #6023 */ + if (p2d_same(seg1, pt)) + { + return LW_BOUNDARY; + } + /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + liblwgeom/cunit/cu_ptarray.c | 11 +++++++++++ liblwgeom/ptarray.c | 6 ++++++ 3 files changed, 18 insertions(+) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 13 07:35:20 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 13 Jan 2026 15:35:20 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.d06cf8dd30ad540e7bef94058054bc24@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: fixed | Keywords: robustness --------------------------------+------------------------ Changes (by Sandro Santilli ): * resolution: => fixed * status: new => closed Comment: In [changeset:"79c591a8af5a19bb3b81c7f5ddbc540529c4086e/git" 79c591a8/git]: {{{#!CommitTicketReference repository="git" revision="79c591a8af5a19bb3b81c7f5ddbc540529c4086e" Fix robustness issue in ptarray_contains_point Closes #6023 in 3.2 branch (3.2.9dev) Includes unit test }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 13 08:18:02 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 08:18:02 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.4 updated. 3.4.4-67-gd8eb831cb Message-ID: <20260113161802.8F9A83C407@trac.osgeo.org> 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.4 has been updated via d8eb831cb6d5979b1170bf64df7587dd2308c98b (commit) from fdfffdb437bd937aa37c59ca9590d73882779c6e (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 d8eb831cb6d5979b1170bf64df7587dd2308c98b Author: Sandro Santilli Date: Tue Jan 13 17:17:47 2026 +0100 Fix backport in previous commit diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index 74141aefd..04d7080c7 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -772,12 +772,6 @@ ptarray_contains_point_partial(const POINTARRAY *pa, const POINT2D *pt, int chec { seg2 = getPoint2d_cp(pa, i); - /* This is required for robustness, see #6023 */ - if (p2d_same(seg1, pt)) - { - return LW_BOUNDARY; - } - /* Zero length segments are ignored. */ if ( seg1->x == seg2->x && seg1->y == seg2->y ) { @@ -1060,6 +1054,12 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); + /* This is required for robustness, see #6023 */ + if (p2d_same(seg1, pt)) + { + return LW_BOUNDARY; + } + /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: liblwgeom/ptarray.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 13 23:16:12 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 13 Jan 2026 23:16:12 -0800 (PST) Subject: [SCM] postgis.net branch website updated. clarity-final-170-g48f98ae Message-ID: <20260114071612.9219C1101FC@trac.osgeo.org> 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.net". The branch, website has been updated via 48f98ae4015d69cf608393d1eb92cb644b4b13bc (commit) from 665ac7ba7dbb4de4c0cdd8cfd24383b661ae5a4e (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 48f98ae4015d69cf608393d1eb92cb644b4b13bc Author: Regina Obe Date: Wed Jan 14 02:15:10 2026 -0500 - Replace github icon with gitea icon in source - Change git.osgeo.org/gitea to gitea.osgeo.org - Add in 2024 and 2025 PostGIS Day video links diff --git a/config.toml b/config.toml index 671a818..a90b2c6 100644 --- a/config.toml +++ b/config.toml @@ -67,7 +67,7 @@ enableRobotsTXT = true # (Optional, default none) Set source repository location. Used for 'Edit page' links. # You can also specify this parameter per page in front matter. - #geekdocRepo = "https://git.osgeo.org/gitea/postgis/postgis.net" + #geekdocRepo = "https://gitea.osgeo.org/postgis/postgis.net" # (Optional, default none) Enable 'Edit page' links. Requires 'GeekdocRepo' param # and the path must point to the parent directory of the 'content' folder. diff --git a/content/community/video.md b/content/community/video.md index f843688..6b6d95e 100644 --- a/content/community/video.md +++ b/content/community/video.md @@ -11,8 +11,9 @@ Conferences and events are generating new and interesting talks all the time. He ## PostGIS Day Since 2019 we have been celebrating "PostGIS Day" (the day after "[GIS Day](https://www.gisday.com/)") with a day of talks about the use and development of PostGIS. - -* [2023](https://www.youtube.com/playlist?list=PLesw5jpZchueoLk5-dLP4c4wLwiknD-Dk) +* [2025](https://www.youtube.com/playlist?list=PLavJpcg8cl1EkQWoCbczsOjFTe-SHg_8m) + | [2024](https://www.youtube.com/playlist?list=PLesw5jpZchudlDbCzKtZwr5eCbvyT_FKW) + | [2023](https://www.youtube.com/playlist?list=PLesw5jpZchueoLk5-dLP4c4wLwiknD-Dk) | [2022](https://www.youtube.com/playlist?list=PLesw5jpZchudJTmRukWO1eP5-6zPpIm5x) | [2021](https://www.youtube.com/playlist?list=PLesw5jpZchudjKjwvFks-gAbz9ZZzysFm) | [2020](https://www.youtube.com/playlist?list=PLesw5jpZchufVkPcwGYpiiijThFcPNlz_) diff --git a/data/menu/more.yaml b/data/menu/more.yaml index 7ff9454..744c661 100644 --- a/data/menu/more.yaml +++ b/data/menu/more.yaml @@ -8,6 +8,6 @@ more: external: false icon: "gdoc_download" - name: "View Source" - ref: "https://git.osgeo.org/gitea/postgis/postgis" + ref: "https://gitea.osgeo.org/postgis/postgis" external: true - icon: "gdoc_github" + icon: "gdoc_gitea" ----------------------------------------------------------------------- Summary of changes: config.toml | 2 +- content/community/video.md | 5 +++-- data/menu/more.yaml | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) hooks/post-receive -- postgis.net From trac at osgeo.org Tue Jan 13 23:40:22 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 07:40:22 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.4547abd701f5e5739c962c4636b0f830@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: fixed | Keywords: robustness --------------------------------+------------------------ Comment (by Lars Aksel Opsahl): Thanks very nice job I tested a couple of jobs this night For test number one before the fix we had topology errors in 224 off 2328 cells after the fix we 1 topology error. And that error does not seem to cause any spatial bugs. For number 2 we had 13 errors and after this fix all was gone. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Jan 14 00:07:38 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 08:07:38 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.117c4d3350328ae62b075c7f6d47e9e9@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: fixed | Keywords: robustness --------------------------------+------------------------ Comment (by strk): Do we have a separate ticket for that left-over topology error ? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Jan 14 01:01:05 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 09:01:05 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.e591e006dc8af1285ff37485e01037fb@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: fixed | Keywords: robustness --------------------------------+------------------------ Comment (by Lars Aksel Opsahl): No I don't have a test case for this bug yet and this bug may also be related to my own code and not Postgis Topology. -[ RECORD 1 ]---+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- global_id | 1804_3333 id | 3333 cell_bbox | 0103000020A21000000100000005000000E0675C3850CB2C40401361C323C85040E0675C3850CB2C405D16139B87C8504049163081DBD52C405D16139B87C8504049163081DBD52C40401361C323C85040E0675C3850CB2C40401361C323C85040 validate_result | '("face without edges",794903,)' -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Jan 14 02:44:47 2026 From: git at osgeo.org (git at osgeo.org) Date: Wed, 14 Jan 2026 02:44:47 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-281-g17d0890cc Message-ID: <20260114104447.47BF8112838@trac.osgeo.org> 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 17d0890cc6d156c7e3e482c3c02b221184f3a027 (commit) from 3a6b9e454c1ce9a53f14ad87fefcf8cf2ee1ad33 (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 17d0890cc6d156c7e3e482c3c02b221184f3a027 Author: Sandro Santilli Date: Wed Jan 14 11:44:03 2026 +0100 Reword error on internal functions returning geometry-less nodes diff --git a/liblwgeom/topo/lwgeom_topo.c b/liblwgeom/topo/lwgeom_topo.c index 5dd4b1f6d..359ba1615 100644 --- a/liblwgeom/topo/lwgeom_topo.c +++ b/liblwgeom/topo/lwgeom_topo.c @@ -698,17 +698,21 @@ _lwt_CheckEdgeCrossing( LWT_TOPOLOGY* topo, { POINT2D p; LWT_ISO_NODE *node = &(nodes[i]); - if (node->node_id == start_node) - continue; - if (node->node_id == end_node) - continue; + LWT_ELEMID node_id = node->node_id; + /* check if the edge contains this node (not on boundary) */ /* ST_RelateMatch(rec.relate, 'T********') */ + + /* skip boundary nodes */ + if (node_id == start_node) continue; + if (node_id == end_node) continue; + if (!node->geom || !node->geom->point || !node->geom->point->npoints) { GEOSGeom_destroy(edgegg); _lwt_release_nodes(nodes, num_nodes); - lwerror("SQL/MM Spatial exception - geometry crosses a node"); + lwerror("Internal error: lwt_be_getNodeWithinBox2D returned node %" + LWTFMT_ELEMID " with no vertices", node_id); return -1; } ----------------------------------------------------------------------- Summary of changes: liblwgeom/topo/lwgeom_topo.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Jan 14 05:57:30 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 13:57:30 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.564f945a2740b69810eeb285fb2bc911@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: fixed | Keywords: robustness --------------------------------+------------------------ Comment (by strk): Upon further inspection I found that another reason for the wrong answer was that the first segment of the pointarray being tested is considered EMPTY due to p2d_same internally using a tolerance to consider two vertices equal. I thought we removed those tolerances long ago. Doing it today passes the whole testsuite so I'd lean toward doing that. Paul: are you ok with that ? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Jan 14 05:57:38 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 13:57:38 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.8810c480d20f8eaf2442553ab4a9e251@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: reopened Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Changes (by strk): * resolution: fixed => * status: closed => reopened -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Jan 14 06:02:04 2026 From: git at osgeo.org (git at osgeo.org) Date: Wed, 14 Jan 2026 06:02:04 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-282-g57956afa2 Message-ID: <20260114140204.58F9D114270@trac.osgeo.org> 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 57956afa20f14379bed6bfffd630e56ed15743d8 (commit) from 17d0890cc6d156c7e3e482c3c02b221184f3a027 (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 57956afa20f14379bed6bfffd630e56ed15743d8 Author: Sandro Santilli Date: Wed Jan 14 15:01:14 2026 +0100 Stop using a tolerance for point-same functions References #6023 This is partially reverting 3a6b9e454c1ce9a53f14ad87fefcf8cf2ee1ad33 diff --git a/liblwgeom/lwalgorithm.c b/liblwgeom/lwalgorithm.c index 1ab3d74a6..0a467dfb6 100644 --- a/liblwgeom/lwalgorithm.c +++ b/liblwgeom/lwalgorithm.c @@ -31,33 +31,33 @@ int p4d_same(const POINT4D *p1, const POINT4D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z) - && FP_EQUALS(p1->m, p2->m); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z + && p1->m == p2->m; } int p3d_same(const POINT3D *p1, const POINT3D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z; } int p3dz_same(const POINT3DZ *p1, const POINT3DZ *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z; } int p2d_same(const POINT2D *p1, const POINT2D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y); + return p1->x == p2->x + && p1->y == p2->y; } /** diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index 9a73230f8..cce30d5b2 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -768,12 +768,6 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); - /* This is required for robustness, see #6023 */ - if (p2d_same(seg1, pt)) - { - return LW_BOUNDARY; - } - /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: liblwgeom/lwalgorithm.c | 24 ++++++++++++------------ liblwgeom/ptarray.c | 6 ------ 2 files changed, 12 insertions(+), 18 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Jan 14 06:02:06 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 14:02:06 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.d40c40ece2a21c679f83feb51958bf2b@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: reopened Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"57956afa20f14379bed6bfffd630e56ed15743d8/git" 57956afa/git]: {{{#!CommitTicketReference repository="git" revision="57956afa20f14379bed6bfffd630e56ed15743d8" Stop using a tolerance for point-same functions References #6023 This is partially reverting 3a6b9e454c1ce9a53f14ad87fefcf8cf2ee1ad33 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Jan 14 06:24:53 2026 From: git at osgeo.org (git at osgeo.org) Date: Wed, 14 Jan 2026 06:24:53 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-13-gdff60191e Message-ID: <20260114142453.A487C131ACA@trac.osgeo.org> 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.6 has been updated via dff60191e1c48d4c1b50482fe8cd527284db9d9c (commit) via 1f1329217e01c7e412cf0829d0e660ede815638e (commit) from 7d8ab147457afccb04f35057505b5843730af72e (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 dff60191e1c48d4c1b50482fe8cd527284db9d9c Author: Sandro Santilli Date: Wed Jan 14 15:24:36 2026 +0100 Add surnames to spellcheck ignore list diff --git a/.codespell.ignore b/.codespell.ignore index de287e7b3..e75d0d639 100644 --- a/.codespell.ignore +++ b/.codespell.ignore @@ -35,3 +35,5 @@ techer unknwn nin msdos +Koordinates +Pease commit 1f1329217e01c7e412cf0829d0e660ede815638e Author: Sandro Santilli Date: Wed Jan 14 15:01:14 2026 +0100 Stop using a tolerance for point-same functions References #6023 in 3.6 branch (3.6.2dev) This is partially reverting 80eefad13bd00d1e56d2bec36cd5140f87775ce4 diff --git a/liblwgeom/lwalgorithm.c b/liblwgeom/lwalgorithm.c index 5cb90a04c..9f9e42503 100644 --- a/liblwgeom/lwalgorithm.c +++ b/liblwgeom/lwalgorithm.c @@ -31,33 +31,33 @@ int p4d_same(const POINT4D *p1, const POINT4D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z) - && FP_EQUALS(p1->m, p2->m); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z + && p1->m == p2->m; } int p3d_same(const POINT3D *p1, const POINT3D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z; } int p3dz_same(const POINT3DZ *p1, const POINT3DZ *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z; } int p2d_same(const POINT2D *p1, const POINT2D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y); + return p1->x == p2->x + && p1->y == p2->y; } /** ----------------------------------------------------------------------- Summary of changes: .codespell.ignore | 2 ++ liblwgeom/lwalgorithm.c | 24 ++++++++++++------------ 2 files changed, 14 insertions(+), 12 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Jan 14 06:25:08 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 14:25:08 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.6c49040862bf0cb242cc1ca3b5f78fee@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: reopened Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"1f1329217e01c7e412cf0829d0e660ede815638e/git" 1f13292/git]: {{{#!CommitTicketReference repository="git" revision="1f1329217e01c7e412cf0829d0e660ede815638e" Stop using a tolerance for point-same functions References #6023 in 3.6 branch (3.6.2dev) This is partially reverting 80eefad13bd00d1e56d2bec36cd5140f87775ce4 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Jan 14 06:39:36 2026 From: git at osgeo.org (git at osgeo.org) Date: Wed, 14 Jan 2026 06:39:36 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-283-gc6aed9b53 Message-ID: <20260114143937.290A7131AE3@trac.osgeo.org> 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 c6aed9b539a4f4d81abe0a4d7dbe9e5873c40889 (commit) from 57956afa20f14379bed6bfffd630e56ed15743d8 (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 c6aed9b539a4f4d81abe0a4d7dbe9e5873c40889 Author: Sandro Santilli Date: Wed Jan 14 15:39:26 2026 +0100 Fix woodie branch links diff --git a/utils/ci-trac-line.sh b/utils/ci-trac-line.sh index 9c3006245..d85d5890c 100755 --- a/utils/ci-trac-line.sh +++ b/utils/ci-trac-line.sh @@ -13,7 +13,7 @@ cat < 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.5 has been updated via 815ad50377488ef366470696d15e2a9e9e923080 (commit) from 3ec8542a9ca9b3a6edcb662731108e22f1779b91 (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 815ad50377488ef366470696d15e2a9e9e923080 Author: Sandro Santilli Date: Wed Jan 14 15:01:14 2026 +0100 Stop using a tolerance for point-same functions References #6023 in 3.5 branch (3.5.5dev) This is partially reverting 3ec8542a9ca9b3a6edcb662731108e22f1779b91 diff --git a/liblwgeom/lwalgorithm.c b/liblwgeom/lwalgorithm.c index ad0150e20..56ce3e5ba 100644 --- a/liblwgeom/lwalgorithm.c +++ b/liblwgeom/lwalgorithm.c @@ -31,33 +31,33 @@ int p4d_same(const POINT4D *p1, const POINT4D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z) - && FP_EQUALS(p1->m, p2->m); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z + && p1->m == p2->m; } int p3d_same(const POINT3D *p1, const POINT3D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z; } int p3dz_same(const POINT3DZ *p1, const POINT3DZ *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z; } int p2d_same(const POINT2D *p1, const POINT2D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y); + return p1->x == p2->x + && p1->y == p2->y; } /** diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index 7a5cf234a..2369bff18 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -768,12 +768,6 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); - /* This is required for robustness, see #6023 */ - if (p2d_same(seg1, pt)) - { - return LW_BOUNDARY; - } - /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: liblwgeom/lwalgorithm.c | 24 ++++++++++++------------ liblwgeom/ptarray.c | 6 ------ 2 files changed, 12 insertions(+), 18 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Jan 14 06:40:59 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 14:40:59 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.e362b8d506a286808952eeec07286054@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: reopened Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"815ad50377488ef366470696d15e2a9e9e923080/git" 815ad50/git]: {{{#!CommitTicketReference repository="git" revision="815ad50377488ef366470696d15e2a9e9e923080" Stop using a tolerance for point-same functions References #6023 in 3.5 branch (3.5.5dev) This is partially reverting 3ec8542a9ca9b3a6edcb662731108e22f1779b91 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Jan 14 06:53:21 2026 From: git at osgeo.org (git at osgeo.org) Date: Wed, 14 Jan 2026 06:53:21 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-284-g013e9b0fd Message-ID: <20260114145321.3A1CF1334B5@trac.osgeo.org> 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 013e9b0fd9c37f5d03e32231f81b8e8ba2c9f9dd (commit) from c6aed9b539a4f4d81abe0a4d7dbe9e5873c40889 (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 013e9b0fd9c37f5d03e32231f81b8e8ba2c9f9dd Author: Sandro Santilli Date: Wed Jan 14 15:51:45 2026 +0100 Drop Dronie line Continuing process started in e11613eaa0d9d98788d508f4ee90c6abd8b2f5f7 diff --git a/utils/ci-trac-line.sh b/utils/ci-trac-line.sh index d85d5890c..744d74324 100755 --- a/utils/ci-trac-line.sh +++ b/utils/ci-trac-line.sh @@ -11,7 +11,6 @@ cat < References: <046.f6750efaf57283aaa574b53f8961e0ea@osgeo.org> Message-ID: <061.e6e786c3bf02dbd30a529c734ed1f123@osgeo.org> #5981: Retire dronie ---------------------------+-------------------------------------- Reporter: strk | Owner: robe Type: task | Status: closed Priority: medium | Milestone: Website Management, Bots Component: QA/buildbots | Version: Resolution: fixed | Keywords: ---------------------------+-------------------------------------- Changes (by strk): * resolution: => fixed * status: new => closed Comment: Retired from wiki with https://trac.osgeo.org/postgis/wiki/ContinuousIntegration?action=diff&version=12 See also [013e9b0fd9c37f5d03e32231f81b8e8ba2c9f9dd/git] and [e11613eaa0d9d98788d508f4ee90c6abd8b2f5f7/git] -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Jan 14 06:56:35 2026 From: git at osgeo.org (git at osgeo.org) Date: Wed, 14 Jan 2026 06:56:35 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.4 updated. 3.4.4-68-g92a107c3a Message-ID: <20260114145636.0569F134A06@trac.osgeo.org> 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.4 has been updated via 92a107c3ab7b53c4cdff3c749a11d854c30d4142 (commit) from d8eb831cb6d5979b1170bf64df7587dd2308c98b (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 92a107c3ab7b53c4cdff3c749a11d854c30d4142 Author: Sandro Santilli Date: Wed Jan 14 15:01:14 2026 +0100 Stop using a tolerance for point-same functions References #6023 in 3.4 branch (3.4.5dev) This is partially reverting fdfffdb437bd937aa37c59ca9590d73882779c6e diff --git a/liblwgeom/lwalgorithm.c b/liblwgeom/lwalgorithm.c index cd2295975..3cf3a7d33 100644 --- a/liblwgeom/lwalgorithm.c +++ b/liblwgeom/lwalgorithm.c @@ -31,25 +31,25 @@ int p4d_same(const POINT4D *p1, const POINT4D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z) - && FP_EQUALS(p1->m, p2->m); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z + && p1->m == p2->m; } int p3d_same(const POINT3D *p1, const POINT3D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y) - && FP_EQUALS(p1->z, p2->z); + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z; } int p2d_same(const POINT2D *p1, const POINT2D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y); + return p1->x == p2->x + && p1->y == p2->y; } /** diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index 04d7080c7..12114bbf2 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -1054,12 +1054,6 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); - /* This is required for robustness, see #6023 */ - if (p2d_same(seg1, pt)) - { - return LW_BOUNDARY; - } - /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: liblwgeom/lwalgorithm.c | 18 +++++++++--------- liblwgeom/ptarray.c | 6 ------ 2 files changed, 9 insertions(+), 15 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Jan 14 06:56:41 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 14:56:41 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.185b5807d810d7daaa49d9bc6a07e1a3@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: reopened Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"92a107c3ab7b53c4cdff3c749a11d854c30d4142/git" 92a107c/git]: {{{#!CommitTicketReference repository="git" revision="92a107c3ab7b53c4cdff3c749a11d854c30d4142" Stop using a tolerance for point-same functions References #6023 in 3.4 branch (3.4.5dev) This is partially reverting fdfffdb437bd937aa37c59ca9590d73882779c6e }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Jan 14 07:00:38 2026 From: git at osgeo.org (git at osgeo.org) Date: Wed, 14 Jan 2026 07:00:38 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.3 updated. 3.3.7-66-g5e9e9bbfc Message-ID: <20260114150038.4E09513446A@trac.osgeo.org> 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 5e9e9bbfcdd2f9857608580aaa6087cc0fa65006 (commit) from 29d977fa49f899bfe6533bd2fe8b14a13b1313d3 (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 5e9e9bbfcdd2f9857608580aaa6087cc0fa65006 Author: Sandro Santilli Date: Wed Jan 14 15:01:14 2026 +0100 Stop using a tolerance for point-same functions References #6023 in 3.4 branch (3.4.5dev) This is partially reverts previous commit diff --git a/liblwgeom/lwalgorithm.c b/liblwgeom/lwalgorithm.c index a9f68f084..3cf3a7d33 100644 --- a/liblwgeom/lwalgorithm.c +++ b/liblwgeom/lwalgorithm.c @@ -31,26 +31,25 @@ int p4d_same(const POINT4D *p1, const POINT4D *p2) { - if( FP_EQUALS(p1->x,p2->x) && FP_EQUALS(p1->y,p2->y) && FP_EQUALS(p1->z,p2->z) && FP_EQUALS(p1->m,p2->m) ) - return LW_TRUE; - else - return LW_FALSE; + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z + && p1->m == p2->m; } int p3d_same(const POINT3D *p1, const POINT3D *p2) { - if( FP_EQUALS(p1->x,p2->x) && FP_EQUALS(p1->y,p2->y) && FP_EQUALS(p1->z,p2->z) ) - return LW_TRUE; - else - return LW_FALSE; + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z; } int p2d_same(const POINT2D *p1, const POINT2D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y); + return p1->x == p2->x + && p1->y == p2->y; } /** diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index 4d822fb98..e106d2372 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -759,12 +759,6 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); - /* This is required for robustness, see #6023 */ - if (p2d_same(seg1, pt)) - { - return LW_BOUNDARY; - } - /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: liblwgeom/lwalgorithm.c | 19 +++++++++---------- liblwgeom/ptarray.c | 6 ------ 2 files changed, 9 insertions(+), 16 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Jan 14 07:00:41 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 15:00:41 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.9bc785a5986689e8e2dd96e10b0786d5@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: reopened Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: robustness --------------------------------+------------------------ Comment (by Sandro Santilli ): In [changeset:"5e9e9bbfcdd2f9857608580aaa6087cc0fa65006/git" 5e9e9bb/git]: {{{#!CommitTicketReference repository="git" revision="5e9e9bbfcdd2f9857608580aaa6087cc0fa65006" Stop using a tolerance for point-same functions References #6023 in 3.4 branch (3.4.5dev) This is partially reverts previous commit }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Jan 14 07:08:27 2026 From: git at osgeo.org (git at osgeo.org) Date: Wed, 14 Jan 2026 07:08:27 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.2 updated. 3.2.7-59-g8d8651f82 Message-ID: <20260114150828.20C66134BA3@trac.osgeo.org> 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.2 has been updated via 8d8651f823b5799f1385acf121de39261d5032dd (commit) from 79c591a8af5a19bb3b81c7f5ddbc540529c4086e (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 8d8651f823b5799f1385acf121de39261d5032dd Author: Sandro Santilli Date: Wed Jan 14 15:01:14 2026 +0100 Stop using a tolerance for point-same functions Closes #6023 again in 3.2 branch (3.2.9dev) This is partially reverts previous commit diff --git a/liblwgeom/lwalgorithm.c b/liblwgeom/lwalgorithm.c index a9f68f084..3cf3a7d33 100644 --- a/liblwgeom/lwalgorithm.c +++ b/liblwgeom/lwalgorithm.c @@ -31,26 +31,25 @@ int p4d_same(const POINT4D *p1, const POINT4D *p2) { - if( FP_EQUALS(p1->x,p2->x) && FP_EQUALS(p1->y,p2->y) && FP_EQUALS(p1->z,p2->z) && FP_EQUALS(p1->m,p2->m) ) - return LW_TRUE; - else - return LW_FALSE; + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z + && p1->m == p2->m; } int p3d_same(const POINT3D *p1, const POINT3D *p2) { - if( FP_EQUALS(p1->x,p2->x) && FP_EQUALS(p1->y,p2->y) && FP_EQUALS(p1->z,p2->z) ) - return LW_TRUE; - else - return LW_FALSE; + return p1->x == p2->x + && p1->y == p2->y + && p1->z == p2->z; } int p2d_same(const POINT2D *p1, const POINT2D *p2) { - return FP_EQUALS(p1->x, p2->x) - && FP_EQUALS(p1->y, p2->y); + return p1->x == p2->x + && p1->y == p2->y; } /** diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index 4d822fb98..e106d2372 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -759,12 +759,6 @@ ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) seg2 = getPoint2d_cp(pa, i); - /* This is required for robustness, see #6023 */ - if (p2d_same(seg1, pt)) - { - return LW_BOUNDARY; - } - /* Zero length segments are ignored. */ if (p2d_same(seg1, seg2)) { ----------------------------------------------------------------------- Summary of changes: liblwgeom/lwalgorithm.c | 19 +++++++++---------- liblwgeom/ptarray.c | 6 ------ 2 files changed, 9 insertions(+), 16 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Jan 14 07:08:29 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 15:08:29 -0000 Subject: [PostGIS] #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) In-Reply-To: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> References: <050.a31695a98e45a24f12d651112da5e1d1@osgeo.org> Message-ID: <065.07570cd79b1cd5935a58704972990f90@osgeo.org> #6023: Silent topology error in the result (face has multiple shells,mixed face labeling in ring) --------------------------------+------------------------ Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: closed Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: fixed | Keywords: robustness --------------------------------+------------------------ Changes (by Sandro Santilli ): * resolution: => fixed * status: reopened => closed Comment: In [changeset:"8d8651f823b5799f1385acf121de39261d5032dd/git" 8d8651f8/git]: {{{#!CommitTicketReference repository="git" revision="8d8651f823b5799f1385acf121de39261d5032dd" Stop using a tolerance for point-same functions Closes #6023 again in 3.2 branch (3.2.9dev) This is partially reverts previous commit }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Jan 14 09:18:20 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 14 Jan 2026 17:18:20 -0000 Subject: [PostGIS] #6035: shp2pgsql-gui Update Message-ID: <053.a11c22d3a984531304293d17b0d2eb5c@osgeo.org> #6035: shp2pgsql-gui Update -----------------------------+------------------ Reporter: Lo?c Bartoletti | Owner: robe Type: enhancement | Status: new Priority: low | Milestone: Component: utils/shp2pgsql | Version: Keywords: gtk | -----------------------------+------------------ Hello, If shp2pgsql-gui is still a thing, I would like to propose an update of it. GTK2 is now considered obsolete, and several Linux distributions are actively considering ? or have already started ? removing GTK2 packages from their repositories. Last in date https://lists.debian.org/debian- devel/2026/01/msg00090.html Regards, Lo?c -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Wed Jan 14 23:54:04 2026 From: git at osgeo.org (git at osgeo.org) Date: Wed, 14 Jan 2026 23:54:04 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-285-gc7e5cf9a2 Message-ID: <20260115075404.D013C219BC@trac.osgeo.org> 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 c7e5cf9a28d1c722da516b87cd033b846212721e (commit) from 013e9b0fd9c37f5d03e32231f81b8e8ba2c9f9dd (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 c7e5cf9a28d1c722da516b87cd033b846212721e Author: Sandro Santilli Date: Thu Jan 15 08:53:36 2026 +0100 Make ptarray_contains_point wrap ptarray_contains_point_partial diff --git a/liblwgeom/ptarray.c b/liblwgeom/ptarray.c index cce30d5b2..54cfe875e 100644 --- a/liblwgeom/ptarray.c +++ b/liblwgeom/ptarray.c @@ -754,73 +754,8 @@ ptarray_is_closed_z(const POINTARRAY *in) int ptarray_contains_point(const POINTARRAY *pa, const POINT2D *pt) { - const POINT2D *seg1, *seg2; int wn = 0; - - seg1 = getPoint2d_cp(pa, 0); - seg2 = getPoint2d_cp(pa, pa->npoints-1); - if (!p2d_same(seg1, seg2)) - lwerror("ptarray_contains_point called on unclosed ring"); - - for (uint32_t i = 1; i < pa->npoints; i++) - { - double side, ymin, ymax; - - seg2 = getPoint2d_cp(pa, i); - - /* Zero length segments are ignored. */ - if (p2d_same(seg1, seg2)) - { - seg1 = seg2; - continue; - } - - ymin = FP_MIN(seg1->y, seg2->y); - ymax = FP_MAX(seg1->y, seg2->y); - - /* Only test segments in our vertical range */ - if (pt->y > ymax || pt->y < ymin) - { - seg1 = seg2; - continue; - } - - side = lw_segment_side(seg1, seg2, pt); - - /* - * A point on the boundary of a ring is not contained. - * WAS: if (fabs(side) < 1e-12), see #852 - */ - if ((side == 0) && lw_pt_in_seg(pt, seg1, seg2)) - { - return LW_BOUNDARY; - } - - /* - * If the point is to the left of the line, and it's rising, - * then the line is to the right of the point and - * circling counter-clockwise, so increment. - */ - if ((side < 0) && (seg1->y <= pt->y) && (pt->y < seg2->y)) - { - wn++; - } - - /* - * If the point is to the right of the line, and it's falling, - * then the line is to the right of the point and circling - * clockwise, so decrement. - */ - else if ( (side > 0) && (seg2->y <= pt->y) && (pt->y < seg1->y) ) - { - wn--; - } - - seg1 = seg2; - } - - /* wn == 0 => Outside, wn != 0 => Inside */ - return wn == 0 ? LW_OUTSIDE : LW_INSIDE; + return ptarray_contains_point_partial(pa, pt, LW_TRUE, &wn); } int ----------------------------------------------------------------------- Summary of changes: liblwgeom/ptarray.c | 67 +---------------------------------------------------- 1 file changed, 1 insertion(+), 66 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Thu Jan 15 01:27:12 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 15 Jan 2026 09:27:12 -0000 Subject: [PostGIS] #5689: Set PostGIS windows bundle environment for service rather than machine. In-Reply-To: <050.340f0c3349b05513dc462f92a1f7bd5f@osgeo.org> References: <050.340f0c3349b05513dc462f92a1f7bd5f@osgeo.org> Message-ID: <065.e0266632860e061fcb56523f5318591b@osgeo.org> #5689: Set PostGIS windows bundle environment for service rather than machine. --------------------------+------------------------------- Reporter: slefranc | Owner: robe Type: enhancement | Status: new Priority: medium | Milestone: PostGIS Packaging Component: install | Version: 3.4.x Resolution: | Keywords: windows --------------------------+------------------------------- Comment (by groenebijgeo): Hi, this week I stumbeld upon this issue (or a similar issue). I have both QGIS and PostgreSQL (15.15) with PostGIS (3.6.1) installed on a Windows machine. I use the recommended EDB installer for PostgreSQl and PostGIS. I started experimenting with GDAL ogr2ogr in a terminal. The latest QGIS LTR (currently 3.40.14) comes with GDAL 3.12.1 and with PROJ 9.7.1 I noticed ogr2or had troubles with CRS, e.g. certain WFS conversions resulted in layers with CRS:99999. Running ogr2ogr from I got these errors: {{{ ERROR 1: PROJ: proj_create_from_database: C:\Program Files\PostgreSQL\15\share\contrib\postgis-3.6\proj\proj.db contains DATABASE.LAYOUT.VERSION.MINOR = 2 whereas a number >= 6 is expected. It comes from another PROJ installation. }}} {{{ ERROR 1: PROJ: proj_create: no database context specified ERROR 1: Cannot parse CRS http://www.opengis.net/def/crs/EPSG/0/5482 }}} I got multiple of these errors, al referring to different CRS numbers. Looking into this I noticed that windows has a system environment variable PROJ_LIB which points to a proj folder in the PostGIS installation. And PostGIS comes with PROJ 8.2.1 Then, running a Terminal from within QGIS it adds another variable PROJ_DATA pointing to the proj folder in QGIS. Running ogr2ogr in this terminal instance I don't get the CRS errors. This makes me assume the PROJ_LIB is causing errors (or PROJ 8.2.1 is?), but I also found somewhere that PROJ_LIB actually is no longer relevant for PROJ? I also saw ticket #5188 which mentions something similar. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 15 01:50:51 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 15 Jan 2026 09:50:51 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.df8ab9f8e4cda8f20d39b83193f8c710@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Description changed by strk: Old description: > When adding two lines with a overlapping parts like this. > > {{{ > SELECT topology.CreateTopology ('edge_test_01', 4258 , 1e-06); > SELECT * FROM > topology.TopoGeo_addLinestring('edge_test_01','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06); > SELECT * FROM > topology.TopoGeo_addLinestring('edge_test_01','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06); > > }}} > > We end with two completely separate edges. This is know problem yes but > we need to solve this in way. > > The problem is also a kind random for the user, because if we change > order it works OK. > > SELECT topology.CreateTopology ('edge_test_02', 4258 , 1e-06); > SELECT * FROM > topology.TopoGeo_addLinestring('edge_test_02','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06); > SELECT * FROM > topology.TopoGeo_addLinestring('edge_test_02','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06); > > it would be nice that result should not depend so much on the order of > adding lines. New description: When adding two lines with a overlapping parts like this. {{{ SELECT topology.CreateTopology ('edge_test_01', 4258 , 1e-06); SELECT * FROM topology.TopoGeo_addLinestring('edge_test_01','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06); SELECT * FROM topology.TopoGeo_addLinestring('edge_test_01','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06); }}} We end with two completely separate edges. This is know problem yes but we need to solve this in way. The problem is also a kind random for the user, because if we change order it works OK. {{{ SELECT topology.CreateTopology ('edge_test_02', 4258 , 1e-06); SELECT * FROM topology.TopoGeo_addLinestring('edge_test_02','0102000020A2100000030000004C570E7933102E402FF6A19D37D6504068327ABAA20F2E40E8A7839E37D6504068327ABAA20F2E40065043A442D65040',1e-06); SELECT * FROM topology.TopoGeo_addLinestring('edge_test_02','0102000020A21000001200000068327ABAA20F2E40065043A442D65040921E91F9370F2E40D919AF2C41D6504060224497020F2E4070FDC4B43FD65040D23D9393020F2E40CBFA843C3ED650402E8D07F1FA0E2E4062BC63223DD650407810A1AFEB0E2E40344261663CD650400A826F30CD0E2E4084E48E663CD65040D491F494880E2E40B8821B813DD65040149ACC0E6A0E2E40542DD1903AD650402F99B9F3C90D2E40B0A9B2913AD650400E6FB093940D2E400481E0D539D65040BC705590940D2E40C3DCA55D38D65040D87C88CCA30D2E40F4BE55E536D6504062934948C20D2E409527F06C35D65040EA83FD022D0E2E405BD339B034D65040B2B377793F0F2E40B939AFAE34D65040AE91F5FF5D0F2E4055D2EE9E37D650404C570E7933102E402FF6A19D37D65040',1e-06); }}} it would be nice that result should not depend so much on the order of adding lines. -- -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 15 02:00:36 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 15 Jan 2026 10:00:36 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.521d6916c5e14138aa647f467cf0cb7b@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Changes (by strk): * Attachment "screen01.png" added. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 15 02:01:15 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 15 Jan 2026 10:01:15 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.2ff5ab745d6c908c17c65451858aa732@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by strk): This is the kind of bug that might be fixed by using fixed-precision overlay operations available in GEOS since version 3.9 - a WIP pull request to do that is here: https://gitea.osgeo.org/postgis/postgis/pulls/243 I confirm that with the code in that branch we get the desired result: [[Image(screen01.png)]] -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 15 02:15:58 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 15 Jan 2026 10:15:58 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.b722fd5dfdae8c5c48e744dde379d7f8@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by Lars Aksel Opsahl): Very nice, how is affected for instance when using no tolerance ? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Thu Jan 15 02:53:08 2026 From: git at osgeo.org (git at osgeo.org) Date: Thu, 15 Jan 2026 02:53:08 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-286-g8c656a9bc Message-ID: <20260115105309.1ABB2236BA@trac.osgeo.org> 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 8c656a9bcefc6c41d61fa7bc9d2cea239ead8ccf (commit) from c7e5cf9a28d1c722da516b87cd033b846212721e (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 8c656a9bcefc6c41d61fa7bc9d2cea239ead8ccf Author: Sandro Santilli Date: Thu Jan 15 11:52:36 2026 +0100 Portable debug-printing of uint64_t types diff --git a/liblwgeom/topo/lwgeom_topo.c b/liblwgeom/topo/lwgeom_topo.c index 359ba1615..ae60d2132 100644 --- a/liblwgeom/topo/lwgeom_topo.c +++ b/liblwgeom/topo/lwgeom_topo.c @@ -688,7 +688,7 @@ _lwt_CheckEdgeCrossing( LWT_TOPOLOGY* topo, /* loop over each node within the edge's gbox */ nodes = lwt_be_getNodeWithinBox2D( topo, edgebox, &num_nodes, LWT_COL_NODE_ALL, 0 ); - LWDEBUGF(1, "lwt_be_getNodeWithinBox2D returned %llu nodes", num_nodes); + LWDEBUGF(1, "lwt_be_getNodeWithinBox2D returned %" PRIu64 " nodes", num_nodes); if (num_nodes == UINT64_MAX) { PGTOPO_BE_ERROR(); @@ -733,7 +733,7 @@ _lwt_CheckEdgeCrossing( LWT_TOPOLOGY* topo, /* loop over each edge within the edge's gbox */ edges = lwt_be_getEdgeWithinBox2D( topo, edgebox, &num_edges, LWT_COL_EDGE_ALL, 0 ); - LWDEBUGF(1, "lwt_be_getEdgeWithinBox2D returned %llu edges", num_edges); + LWDEBUGF(1, "lwt_be_getEdgeWithinBox2D returned %" PRIu64 " edges", num_edges); if (num_edges == UINT64_MAX) { GEOSGeom_destroy(edgegg); @@ -908,7 +908,7 @@ _lwt_CheckEdgeCrossing( LWT_TOPOLOGY* topo, GEOSFree(relate); GEOSGeom_destroy(eegg); } - LWDEBUGF(1, "No edge crossing detected among the %llu candidate edges", num_edges); + LWDEBUGF(1, "No edge crossing detected among the %" PRIu64 " candidate edges", num_edges); if ( edges ) _lwt_release_edges(edges, num_edges); /* would be NULL if num_edges was 0 */ @@ -1098,7 +1098,7 @@ _lwt_EdgeSplit( LWT_TOPOLOGY* topo, LWT_ELEMID edge, LWPOINT* pt, int skipISOChe LWDEBUGG(2, lwline_as_lwgeom(oldedge[0]->geom), "Edge to be split"); if ( ! *oldedge ) { - LWDEBUGF(1, "lwt_be_getEdgeById returned NULL and set i=%llu", i); + LWDEBUGF(1, "lwt_be_getEdgeById returned NULL and set i=%" PRIu64 "", i); if (i == UINT64_MAX) { PGTOPO_BE_ERROR(); @@ -1677,7 +1677,7 @@ _lwt_FindAdjacentEdges( LWT_TOPOLOGY* topo, LWT_ELEMID node, edgeend *data, return 0; } - LWDEBUGF(1, "getEdgeByNode returned %llu edges, minaz=%g, maxaz=%g", + LWDEBUGF(1, "getEdgeByNode returned %" PRIu64 " edges, minaz=%g, maxaz=%g", numedges, minaz, maxaz); /* For each incident edge-end (1 or 2): */ @@ -1943,7 +1943,7 @@ _lwt_MakeRingShell(LWT_TOPOLOGY *topo, LWT_ELEMID *signed_edge_ids, uint64_t num for ( i=0; ix, pt->y, splitNodeEdgeEnds[n].myaz); ret = _lwt_FindAdjacentEdges( topo, node->node_id, &(splitNodeEdgeEnds[n]), NULL, -1 ); if ( ! ret ) { @@ -5547,14 +5547,14 @@ _lwt_SnapEdgeToExistingNode( node->node_id, edge->edge_id); return -1; } - LWDEBUGF(1, "Component %llu of split edge %" LWTFMT_ELEMID + LWDEBUGF(1, "Component %" PRIu64 " of split edge %" LWTFMT_ELEMID " next CW is %" LWTFMT_ELEMID ", next CCW is %" LWTFMT_ELEMID, n, edge->edge_id, splitNodeEdgeEnds[n].nextCW, splitNodeEdgeEnds[n].nextCCW); } } else { - LWDEBUGF(1, "Split component %llu matches existing edge %" LWTFMT_ELEMID + LWDEBUGF(1, "Split component %" PRIu64 " matches existing edge %" LWTFMT_ELEMID " (%s)", n, existingEdgeId, forward ? "forward" : "backward" ); /* Get existing edge */ for ( uint64_t t=0; tnumEdges; t++ ) @@ -5774,7 +5774,7 @@ _lwt_SnapEdgeToExistingNode( LWDEBUGF(1, "Looking for next CCW edge of split edge %" LWTFMT_ELEMID " on common node %" LWTFMT_ELEMID - " having %llu attached edges", + " having %" PRIu64 " attached edges", edge->edge_id, commonNodeID, commonNodeEdges->numEdges ); @@ -6907,7 +6907,7 @@ _lwt_AddPoint(LWT_TOPOLOGY* topo, LWPOINT* point, double tol, int if ( num ) { - LWDEBUGF(1, "New point is within %.15g units of %llu nodes", tol, num); + LWDEBUGF(1, "New point is within %.15g units of %" PRIu64 " nodes", tol, num); /* Order by distance if there are more than a single return */ if ( num > 1 ) {{ @@ -6967,7 +6967,7 @@ _lwt_AddPoint(LWT_TOPOLOGY* topo, LWPOINT* point, double tol, int PGTOPO_BE_ERROR(); return -1; } - LWDEBUGF(1, "New point is within %.15g units of %llu edges", tol, num); + LWDEBUGF(1, "New point is within %.15g units of %" PRIu64 " edges", tol, num); if ( num ) { id = _lwt_SplitAllEdgesToNewNode(topo, edges, num, lwgeom_as_lwpoint(pt), tol, moved); @@ -7326,7 +7326,7 @@ _lwt_AddLine(LWT_TOPOLOGY* topo, LWLINE* line, double tol, int* nedges, PGTOPO_BE_ERROR(); return NULL; } - LWDEBUGF(1, "Line has %u points, its bbox intersects %llu edges bboxes", + LWDEBUGF(1, "Line has %u points, its bbox intersects %" PRIu64 " edges bboxes", line->points->npoints, numedges); if ( numedges ) {{ @@ -7370,7 +7370,7 @@ _lwt_AddLine(LWT_TOPOLOGY* topo, LWLINE* line, double tol, int* nedges, PGTOPO_BE_ERROR(); return NULL; } - LWDEBUGF(1, "Line bbox intersects %llu nodes bboxes", numnodes); + LWDEBUGF(1, "Line bbox intersects %" PRIu64 " nodes bboxes", numnodes); if ( numnodes ) {{ /* collect those whose distance from us is < tol */ @@ -7605,7 +7605,7 @@ _lwt_AddLine(LWT_TOPOLOGY* topo, LWLINE* line, double tol, int* nedges, { size_t sz; char *wkt1 = lwgeom_to_wkt(g, WKT_EXTENDED, 15, &sz); - LWDEBUGF(1, "Component %llu of split line is: %s", i, wkt1); + LWDEBUGF(1, "Component %" PRIu64 " of split line is: %s", i, wkt1); lwfree(wkt1); } #endif @@ -7639,11 +7639,11 @@ _lwt_AddLine(LWT_TOPOLOGY* topo, LWLINE* line, double tol, int* nedges, if ( ! id ) { - LWDEBUGF(1, "Component %llu of split line collapsed", i); + LWDEBUGF(1, "Component %" PRIu64 " of split line collapsed", i); continue; } - LWDEBUGF(1, "Component %llu of split line is %s edge %" LWTFMT_ELEMID, + LWDEBUGF(1, "Component %" PRIu64 " of split line is %s edge %" LWTFMT_ELEMID, i, forward ? "forward" : "backward", id); ids[num++] = forward ? id : -id; /* TODO: skip duplicates */ } ----------------------------------------------------------------------- Summary of changes: liblwgeom/topo/lwgeom_topo.c | 58 ++++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 29 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Thu Jan 15 08:30:55 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 15 Jan 2026 16:30:55 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.933465dd23d43156f09cc7df019ec8f5@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by strk): Replying to [comment:6 Lars Aksel Opsahl]: > Very nice, how is affected for instance when using no tolerance ? That's a part that needs more thinking, see last comment in the PR itself. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 15 16:17:30 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 00:17:30 -0000 Subject: [PostGIS] #6033: ERROR: operator is not unique: public.geometry = public.geometry In-Reply-To: <046.8b65a0696671f5b60448812d9e3003f2@osgeo.org> References: <046.8b65a0696671f5b60448812d9e3003f2@osgeo.org> Message-ID: <061.0a94654daeb6202d591551d76821db5c@osgeo.org> #6033: ERROR: operator is not unique: public.geometry = public.geometry ----------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: medium | Milestone: PostGIS 3.6.2 Component: postgis | Version: 3.5.x Resolution: | Keywords: ----------------------+--------------------------- Comment (by pramsey): Are you sure this is fixable? {{{ SELECT 'POINT(1 1)'::public.geometry OPERATOR(public.=) 'POINT(1 1)'::public.geometry; }}} Like, the example effectively admits that the extension is not in a known place, because it has to qualify the geometry type. Why would there be an expectation that the operator could also be unqualified? You might want to trace into Postgres itself, perhaps this is more of a "bad error message" situation? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 15 16:21:43 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 00:21:43 -0000 Subject: [PostGIS] #6036: Use PG_MODULE_MAGIC_EXT for Pg18+ Message-ID: <049.6adecd4bf112efbbbbeed81500caae1e@osgeo.org> #6036: Use PG_MODULE_MAGIC_EXT for Pg18+ -------------------------+---------------------- Reporter: pramsey | Owner: pramsey Type: enhancement | Status: assigned Priority: medium | Milestone: Component: postgis | Version: master Keywords: | -------------------------+---------------------- The new PG_MODULE_MAGIC_EXT macro supercedes the old PG_MODULE_MAGIC and allows the core server to read back the actual names and library versions of the modules that are run-time loaded into it. This in theory might allow it to do the same thing postgis has long done, comparing the "lib version" and "script version" of a given extension. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 15 16:21:54 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 00:21:54 -0000 Subject: [PostGIS] #6036: Use PG_MODULE_MAGIC_EXT for Pg18+ In-Reply-To: <049.6adecd4bf112efbbbbeed81500caae1e@osgeo.org> References: <049.6adecd4bf112efbbbbeed81500caae1e@osgeo.org> Message-ID: <064.79a29c4c4d6920727b0c922cc52c53c4@osgeo.org> #6036: Use PG_MODULE_MAGIC_EXT for Pg18+ --------------------------+--------------------------- Reporter: pramsey | Owner: pramsey Type: enhancement | Status: assigned Priority: medium | Milestone: PostGIS 3.7.0 Component: postgis | Version: master Resolution: | Keywords: --------------------------+--------------------------- Changes (by pramsey): * milestone: => PostGIS 3.7.0 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Thu Jan 15 22:10:43 2026 From: git at osgeo.org (git at osgeo.org) Date: Thu, 15 Jan 2026 22:10:43 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-287-g1c0c04fb5 Message-ID: <20260116061044.2915332FF9@trac.osgeo.org> 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 1c0c04fb517bbf910f465ed91688a82fc31fd9de (commit) from 8c656a9bcefc6c41d61fa7bc9d2cea239ead8ccf (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 1c0c04fb517bbf910f465ed91688a82fc31fd9de Author: Lo?c Bartoletti Date: Fri Jan 16 06:25:48 2026 +0100 test(sfcgal): Fix Buffer3D tests against SFCGAL 2.3.0 SFCGAL 2.3.0 improves sphere generation using icosahedron algorithm to avoid float issue. The geometry is slightly different and test must be adapted accordingly. diff --git a/sfcgal/regress/sfcgal_v2.sql b/sfcgal/regress/sfcgal_v2.sql index aedb60a49..49ba93a7b 100644 --- a/sfcgal/regress/sfcgal_v2.sql +++ b/sfcgal/regress/sfcgal_v2.sql @@ -11,7 +11,7 @@ SELECT 'CG_3DScaleAroundCenter', ST_AsText(ST_ReducePrecision(CG_3DScaleAroundCe SELECT 'CG_Translate', ST_AsText(CG_Translate('LINESTRING(1 1, 2 2)', 1, -1), 0); SELECT 'CG_3DTranslate', ST_AsText(CG_3DTranslate('POINT(1 1 1)', 1, -1, 2), 0); SELECT 'CG_StraightSkeletonPartition', ST_AsText(ST_Collect(dmp.geom), 2) FROM ST_Dump(CG_StraightSkeletonPartition('POLYGON((0 0, 4 0, 2 2, 0 0))', true)) as dmp; -SELECT 'CG_3DBuffer', ST_AsText(CG_3DBuffer('POINT(0 0 0)', 1, 8, 0), 2); +SELECT 'CG_3DBuffer', ST_GeometryType(CG_3DBuffer('POINT(0 0 0)', 1, 8, 0)); SELECT 'CG_Rotate', ST_AsText(ST_ReducePrecision(CG_Rotate('LINESTRING EMPTY', pi()/2), 0.1)); SELECT 'CG_2DRotate', ST_AsText(CG_2DRotate('POINT EMPTY', pi()/2, 1, 1), 0); SELECT 'CG_3DRotate', ST_AsText(ST_ReducePrecision(CG_3DRotate('POINT EMPTY', pi()/2, 0, 0, 1), 0.1)); diff --git a/sfcgal/regress/sfcgal_v2_expected b/sfcgal/regress/sfcgal_v2_expected index 4560a0926..7696edd07 100644 --- a/sfcgal/regress/sfcgal_v2_expected +++ b/sfcgal/regress/sfcgal_v2_expected @@ -10,7 +10,7 @@ CG_3DScaleAroundCenter|POINT Z (1.5 1.5 1.5) CG_Translate|LINESTRING(2 0,3 1) CG_3DTranslate|POINT Z (2 0 3) CG_StraightSkeletonPartition|MULTIPOLYGON(((0 0,2 0.83,2 2)),((4 0,2 0.83,0 0)),((2 2,2 0.83,4 0))) -CG_3DBuffer|POLYHEDRALSURFACE Z (((0 0 1,0.5 -0.5 0.71,0 -0.71 0.71,0 0 1)),((0 0 1,0.71 -4.33e-17 0.71,0.5 -0.5 0.71,0 0 1)),((0 0 1,0.5 0.5 0.71,0.71 -4.33e-17 0.71,0 0 1)),((0 0 1,8.66e-17 0.71 0.71,0.5 0.5 0.71,0 0 1)),((0 0 1,-0.5 0.5 0.71,8.66e-17 0.71 0.71,0 0 1)),((0 0 1,-0.71 1.3e-16 0.71,-0.5 0.5 0.71,0 0 1)),((0 0 1,-0.5 -0.5 0.71,-0.71 1.3e-16 0.71,0 0 1)),((0 0 1,0 -0.71 0.71,-0.5 -0.5 0.71,0 0 1)),((0 -0.71 0.71,0.5 -0.5 0.71,0.71 -0.71 6.12e-17,0 -0.71 0.71)),((0 -0.71 0.71,0.71 -0.71 6.12e-17,0 -1 6.12e-17,0 -0.71 0.71)),((0.5 -0.5 0.71,0.71 -4.33e-17 0.71,1 -6.12e-17 6.12e-17,0.5 -0.5 0.71)),((0.5 -0.5 0.71,1 -6.12e-17 6.12e-17,0.71 -0.71 6.12e-17,0.5 -0.5 0.71)),((0.71 -4.33e-17 0.71,0.5 0.5 0.71,0.71 0.71 6.12e-17,0.71 -4.33e-17 0.71)),((0.71 -4.33e-17 0.71,0.71 0.71 6.12e-17,1 -6.12e-17 6.12e-17,0.71 -4.33e-17 0.71)),((0.5 0.5 0.71,8.66e-17 0.71 0.71,1.22e-16 1 6.12e-17,0.5 0.5 0.71)),((0.5 0.5 0.71,1.22e-16 1 6.12e-17,0.71 0.71 6.12e-17,0.5 0.5 0.71)),((8.66e-17 0.71 0.71,-0.5 0.5 0.71,-0.71 0.71 6.12e-17,8.66e-17 0.71 0.71)),((8.66e-17 0.71 0.71,-0.71 0.71 6.12e-17,1.22e-16 1 6.12e-17,8.66e-17 0.71 0.71)),((-0.5 0.5 0.71,-0.71 1.3e-16 0.71,-1 1.84e-16 6.12e-17,-0.5 0.5 0.71)),((-0.5 0.5 0.71,-1 1.84e-16 6.12e-17,-0.71 0.71 6.12e-17,-0.5 0.5 0.71)),((-0.71 1.3e-16 0.71,-0.5 -0.5 0.71,-0.71 -0.71 6.12e-17,-0.71 1.3e-16 0.71)),((-0.71 1.3e-16 0.71,-0.71 -0.71 6.12e-17,-1 1.84e-16 6.12e-17,-0.71 1.3e-16 0.71)),((-0.5 -0.5 0.71,0 -0.71 0.71,0 -1 6.12e-17,-0.5 -0.5 0.71)),((-0.5 -0.5 0.71,0 -1 6.12e-17,-0.71 -0.71 6.12e-17,-0.5 -0.5 0.71)),((0 -1 6.12e-17,0.71 -0.71 6.12e-17,0.5 -0.5 -0.71,0 -1 6.12e-17)),((0 -1 6.12e-17,0.5 -0.5 -0.71,0 -0.71 -0.71,0 -1 6.12e-17)),((0.71 -0.71 6.12e-17,1 -6.12e-17 6.12e-17,0.71 -4.33e-17 -0.71,0.71 -0.71 6.12e-17)),((0.71 -0.71 6.12e-17,0.71 -4.33e-17 -0.71,0.5 -0.5 -0.71,0.71 -0.71 6.12e-17)),((1 -6.12e-17 6.12e-17,0.71 0.71 6.12e-17,0.5 0.5 -0.71,1 -6.12e-17 6.12e-17)),((1 -6.12e-17 6.12e-17,0.5 0.5 -0.71,0. 71 -4.33e-17 -0.71,1 -6.12e-17 6.12e-17)),((0.71 0.71 6.12e-17,1.22e-16 1 6.12e-17,8.66e-17 0.71 -0.71,0.71 0.71 6.12e-17)),((0.71 0.71 6.12e-17,8.66e-17 0.71 -0.71,0.5 0.5 -0.71,0.71 0.71 6.12e-17)),((1.22e-16 1 6.12e-17,-0.71 0.71 6.12e-17,-0.5 0.5 -0.71,1.22e-16 1 6.12e-17)),((1.22e-16 1 6.12e-17,-0.5 0.5 -0.71,8.66e-17 0.71 -0.71,1.22e-16 1 6.12e-17)),((-0.71 0.71 6.12e-17,-1 1.84e-16 6.12e-17,-0.71 1.3e-16 -0.71,-0.71 0.71 6.12e-17)),((-0.71 0.71 6.12e-17,-0.71 1.3e-16 -0.71,-0.5 0.5 -0.71,-0.71 0.71 6.12e-17)),((-1 1.84e-16 6.12e-17,-0.71 -0.71 6.12e-17,-0.5 -0.5 -0.71,-1 1.84e-16 6.12e-17)),((-1 1.84e-16 6.12e-17,-0.5 -0.5 -0.71,-0.71 1.3e-16 -0.71,-1 1.84e-16 6.12e-17)),((-0.71 -0.71 6.12e-17,0 -1 6.12e-17,0 -0.71 -0.71,-0.71 -0.71 6.12e-17)),((-0.71 -0.71 6.12e-17,0 -0.71 -0.71,-0.5 -0.5 -0.71,-0.71 -0.71 6.12e-17)),((0 0 -1,0 -0.71 -0.71,0.5 -0.5 -0.71,0 0 -1)),((0 0 -1,0.5 -0.5 -0.71,0.71 -4.33e-17 -0.71,0 0 -1)),((0 0 -1,0.71 -4.33e-17 -0.71,0.5 0.5 -0.71,0 0 -1)),((0 0 -1,0.5 0.5 -0.71,8.66e-17 0.71 -0.71,0 0 -1)),((0 0 -1,8.66e-17 0.71 -0.71,-0.5 0.5 -0.71,0 0 -1)),((0 0 -1,-0.5 0.5 -0.71,-0.71 1.3e-16 -0.71,0 0 -1)),((0 0 -1,-0.71 1.3e-16 -0.71,-0.5 -0.5 -0.71,0 0 -1)),((0 0 -1,-0.5 -0.5 -0.71,0 -0.71 -0.71,0 0 -1))) +CG_3DBuffer|ST_PolyhedralSurface CG_Rotate|LINESTRING EMPTY CG_2DRotate|POINT EMPTY CG_3DRotate|POINT Z EMPTY ----------------------------------------------------------------------- Summary of changes: sfcgal/regress/sfcgal_v2.sql | 2 +- sfcgal/regress/sfcgal_v2_expected | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Thu Jan 15 22:13:18 2026 From: git at osgeo.org (git at osgeo.org) Date: Thu, 15 Jan 2026 22:13:18 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-14-g928180043 Message-ID: <20260116061319.226DA3410B@trac.osgeo.org> 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.6 has been updated via 928180043ce24b69d35e9c1e8fc968b2adff0e41 (commit) from dff60191e1c48d4c1b50482fe8cd527284db9d9c (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 928180043ce24b69d35e9c1e8fc968b2adff0e41 Author: Lo?c Bartoletti Date: Fri Jan 16 06:25:48 2026 +0100 test(sfcgal): Fix Buffer3D tests against SFCGAL 2.3.0 SFCGAL 2.3.0 improves sphere generation using icosahedron algorithm to avoid float issue. The geometry is slightly different and test must be adapted accordingly. diff --git a/sfcgal/regress/sfcgal_v2.sql b/sfcgal/regress/sfcgal_v2.sql index aedb60a49..49ba93a7b 100644 --- a/sfcgal/regress/sfcgal_v2.sql +++ b/sfcgal/regress/sfcgal_v2.sql @@ -11,7 +11,7 @@ SELECT 'CG_3DScaleAroundCenter', ST_AsText(ST_ReducePrecision(CG_3DScaleAroundCe SELECT 'CG_Translate', ST_AsText(CG_Translate('LINESTRING(1 1, 2 2)', 1, -1), 0); SELECT 'CG_3DTranslate', ST_AsText(CG_3DTranslate('POINT(1 1 1)', 1, -1, 2), 0); SELECT 'CG_StraightSkeletonPartition', ST_AsText(ST_Collect(dmp.geom), 2) FROM ST_Dump(CG_StraightSkeletonPartition('POLYGON((0 0, 4 0, 2 2, 0 0))', true)) as dmp; -SELECT 'CG_3DBuffer', ST_AsText(CG_3DBuffer('POINT(0 0 0)', 1, 8, 0), 2); +SELECT 'CG_3DBuffer', ST_GeometryType(CG_3DBuffer('POINT(0 0 0)', 1, 8, 0)); SELECT 'CG_Rotate', ST_AsText(ST_ReducePrecision(CG_Rotate('LINESTRING EMPTY', pi()/2), 0.1)); SELECT 'CG_2DRotate', ST_AsText(CG_2DRotate('POINT EMPTY', pi()/2, 1, 1), 0); SELECT 'CG_3DRotate', ST_AsText(ST_ReducePrecision(CG_3DRotate('POINT EMPTY', pi()/2, 0, 0, 1), 0.1)); diff --git a/sfcgal/regress/sfcgal_v2_expected b/sfcgal/regress/sfcgal_v2_expected index 4560a0926..7696edd07 100644 --- a/sfcgal/regress/sfcgal_v2_expected +++ b/sfcgal/regress/sfcgal_v2_expected @@ -10,7 +10,7 @@ CG_3DScaleAroundCenter|POINT Z (1.5 1.5 1.5) CG_Translate|LINESTRING(2 0,3 1) CG_3DTranslate|POINT Z (2 0 3) CG_StraightSkeletonPartition|MULTIPOLYGON(((0 0,2 0.83,2 2)),((4 0,2 0.83,0 0)),((2 2,2 0.83,4 0))) -CG_3DBuffer|POLYHEDRALSURFACE Z (((0 0 1,0.5 -0.5 0.71,0 -0.71 0.71,0 0 1)),((0 0 1,0.71 -4.33e-17 0.71,0.5 -0.5 0.71,0 0 1)),((0 0 1,0.5 0.5 0.71,0.71 -4.33e-17 0.71,0 0 1)),((0 0 1,8.66e-17 0.71 0.71,0.5 0.5 0.71,0 0 1)),((0 0 1,-0.5 0.5 0.71,8.66e-17 0.71 0.71,0 0 1)),((0 0 1,-0.71 1.3e-16 0.71,-0.5 0.5 0.71,0 0 1)),((0 0 1,-0.5 -0.5 0.71,-0.71 1.3e-16 0.71,0 0 1)),((0 0 1,0 -0.71 0.71,-0.5 -0.5 0.71,0 0 1)),((0 -0.71 0.71,0.5 -0.5 0.71,0.71 -0.71 6.12e-17,0 -0.71 0.71)),((0 -0.71 0.71,0.71 -0.71 6.12e-17,0 -1 6.12e-17,0 -0.71 0.71)),((0.5 -0.5 0.71,0.71 -4.33e-17 0.71,1 -6.12e-17 6.12e-17,0.5 -0.5 0.71)),((0.5 -0.5 0.71,1 -6.12e-17 6.12e-17,0.71 -0.71 6.12e-17,0.5 -0.5 0.71)),((0.71 -4.33e-17 0.71,0.5 0.5 0.71,0.71 0.71 6.12e-17,0.71 -4.33e-17 0.71)),((0.71 -4.33e-17 0.71,0.71 0.71 6.12e-17,1 -6.12e-17 6.12e-17,0.71 -4.33e-17 0.71)),((0.5 0.5 0.71,8.66e-17 0.71 0.71,1.22e-16 1 6.12e-17,0.5 0.5 0.71)),((0.5 0.5 0.71,1.22e-16 1 6.12e-17,0.71 0.71 6.12e-17,0.5 0.5 0.71)),((8.66e-17 0.71 0.71,-0.5 0.5 0.71,-0.71 0.71 6.12e-17,8.66e-17 0.71 0.71)),((8.66e-17 0.71 0.71,-0.71 0.71 6.12e-17,1.22e-16 1 6.12e-17,8.66e-17 0.71 0.71)),((-0.5 0.5 0.71,-0.71 1.3e-16 0.71,-1 1.84e-16 6.12e-17,-0.5 0.5 0.71)),((-0.5 0.5 0.71,-1 1.84e-16 6.12e-17,-0.71 0.71 6.12e-17,-0.5 0.5 0.71)),((-0.71 1.3e-16 0.71,-0.5 -0.5 0.71,-0.71 -0.71 6.12e-17,-0.71 1.3e-16 0.71)),((-0.71 1.3e-16 0.71,-0.71 -0.71 6.12e-17,-1 1.84e-16 6.12e-17,-0.71 1.3e-16 0.71)),((-0.5 -0.5 0.71,0 -0.71 0.71,0 -1 6.12e-17,-0.5 -0.5 0.71)),((-0.5 -0.5 0.71,0 -1 6.12e-17,-0.71 -0.71 6.12e-17,-0.5 -0.5 0.71)),((0 -1 6.12e-17,0.71 -0.71 6.12e-17,0.5 -0.5 -0.71,0 -1 6.12e-17)),((0 -1 6.12e-17,0.5 -0.5 -0.71,0 -0.71 -0.71,0 -1 6.12e-17)),((0.71 -0.71 6.12e-17,1 -6.12e-17 6.12e-17,0.71 -4.33e-17 -0.71,0.71 -0.71 6.12e-17)),((0.71 -0.71 6.12e-17,0.71 -4.33e-17 -0.71,0.5 -0.5 -0.71,0.71 -0.71 6.12e-17)),((1 -6.12e-17 6.12e-17,0.71 0.71 6.12e-17,0.5 0.5 -0.71,1 -6.12e-17 6.12e-17)),((1 -6.12e-17 6.12e-17,0.5 0.5 -0.71,0. 71 -4.33e-17 -0.71,1 -6.12e-17 6.12e-17)),((0.71 0.71 6.12e-17,1.22e-16 1 6.12e-17,8.66e-17 0.71 -0.71,0.71 0.71 6.12e-17)),((0.71 0.71 6.12e-17,8.66e-17 0.71 -0.71,0.5 0.5 -0.71,0.71 0.71 6.12e-17)),((1.22e-16 1 6.12e-17,-0.71 0.71 6.12e-17,-0.5 0.5 -0.71,1.22e-16 1 6.12e-17)),((1.22e-16 1 6.12e-17,-0.5 0.5 -0.71,8.66e-17 0.71 -0.71,1.22e-16 1 6.12e-17)),((-0.71 0.71 6.12e-17,-1 1.84e-16 6.12e-17,-0.71 1.3e-16 -0.71,-0.71 0.71 6.12e-17)),((-0.71 0.71 6.12e-17,-0.71 1.3e-16 -0.71,-0.5 0.5 -0.71,-0.71 0.71 6.12e-17)),((-1 1.84e-16 6.12e-17,-0.71 -0.71 6.12e-17,-0.5 -0.5 -0.71,-1 1.84e-16 6.12e-17)),((-1 1.84e-16 6.12e-17,-0.5 -0.5 -0.71,-0.71 1.3e-16 -0.71,-1 1.84e-16 6.12e-17)),((-0.71 -0.71 6.12e-17,0 -1 6.12e-17,0 -0.71 -0.71,-0.71 -0.71 6.12e-17)),((-0.71 -0.71 6.12e-17,0 -0.71 -0.71,-0.5 -0.5 -0.71,-0.71 -0.71 6.12e-17)),((0 0 -1,0 -0.71 -0.71,0.5 -0.5 -0.71,0 0 -1)),((0 0 -1,0.5 -0.5 -0.71,0.71 -4.33e-17 -0.71,0 0 -1)),((0 0 -1,0.71 -4.33e-17 -0.71,0.5 0.5 -0.71,0 0 -1)),((0 0 -1,0.5 0.5 -0.71,8.66e-17 0.71 -0.71,0 0 -1)),((0 0 -1,8.66e-17 0.71 -0.71,-0.5 0.5 -0.71,0 0 -1)),((0 0 -1,-0.5 0.5 -0.71,-0.71 1.3e-16 -0.71,0 0 -1)),((0 0 -1,-0.71 1.3e-16 -0.71,-0.5 -0.5 -0.71,0 0 -1)),((0 0 -1,-0.5 -0.5 -0.71,0 -0.71 -0.71,0 0 -1))) +CG_3DBuffer|ST_PolyhedralSurface CG_Rotate|LINESTRING EMPTY CG_2DRotate|POINT EMPTY CG_3DRotate|POINT Z EMPTY ----------------------------------------------------------------------- Summary of changes: sfcgal/regress/sfcgal_v2.sql | 2 +- sfcgal/regress/sfcgal_v2_expected | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Fri Jan 16 02:41:39 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 10:41:39 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.9c3e8fa610c919afd95665097eb7dd54@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by strk): The rationale for the result being order-dependent is that by design we aim at keeping the existing topology as immutable as possible. The only reason why the existing topology changes is the limited space in which coordinates can be represented (floating point grid). What the mentioned PR does is using a controlled coordinate grid, but can only work if that grid is retained for all topology operations, so would require disabling the ability to pass a "tolerance" to topology population functions. An alternative implementation would be to support snapping incoming vertices to existing edges. That would still require slightly changing the existing topology, but at least we would reduce such change. The outcome would still be order dependent, in that you'd get the resulting node closer to the FIRST geometry that enters the topology. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Jan 16 03:32:19 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 11:32:19 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.f7d40292a31aa2b8522d4b67fae8c018@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by Lars Aksel Opsahl): Replying to [comment:8 strk]: > The rationale for the result being order-dependent is that by design we aim at keeping the existing topology as immutable as possible. The only reason why the existing topology changes is the limited space in which coordinates can be represented (floating point grid). > > What the mentioned PR does is using a controlled coordinate grid, but can only work if that grid is retained for all topology operations, so would require disabling the ability to pass a "tolerance" to topology population functions. > > An alternative implementation would be to support snapping incoming vertices to existing edges. That would still require slightly changing the existing topology, but at least we would reduce such change. The outcome would still be order dependent, in that you'd get the resulting node closer to the FIRST geometry that enters the topology. Makes sense and the result where 2 edges covers the same "space" would be solved. If the movement is less than the tolerance used it should not cause any problems for lines that should be connected to the line that is slightly moved. If easy to implement, maybe we should test it see how it works ? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Jan 16 04:30:34 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 12:30:34 -0000 Subject: [PostGIS] #6037: st_union with gridSize produces unexpected result Message-ID: <055.66fcb2bb2dfa7293cd8f6b12b8a210f3@osgeo.org> #6037: st_union with gridSize produces unexpected result ---------------------------+--------------------- Reporter: asgerpetersen | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: Component: postgis | Version: 3.6.x Keywords: | ---------------------------+--------------------- `ST_Union(a, b, gridSize)` can return a polygon that is smaller than both input polygons, even when one polygon is `st_within` the other, the geometries are fully noded and all input coordinates lie on the specified grid. `ST_Union(a, b)` produces the expected result. The documentation does not clearly state what st_union with gridSize is supposed to do except snapping result vertices to a grid, but I think this result is unexpected and hard to reason about. {{{ -- These polygons are fully noded and have cm precision (0.01). B is within A with geoms as ( select ST_GeometryFromText('POLYGON ((450329.74 6273269.32, 450329.79 6273269.33, 450330.65 6273269.56, 450331.07 6273269.67, 450380.84 6273282.58, 450390.92 6273278.05, 450398.23 6273274.76, 450558.14 6273202.85, 449681.36 6273101.1, 449997.83 6273183.21, 449997.84 6273183.21, 450289.26 6273258.82, 450317.49 6273266.14, 450329.74 6273269.32))', 25832) as a, ST_GeometryFromText('POLYGON ((450329.74 6273269.32, 450317.5 6273266.14, 450317.49 6273266.14, 450329.74 6273269.32))', 25832) as b ), unions as ( select st_union(a,b) as st_union, st_union(a,b, 0.01) as st_union_gridsize from geoms ) select st_area(a) area_a, st_within(b, a), -- B is within A! So st_union(A, B) == A st_equals(a, st_union) a_equals_union, -- A == st_union(A,B) st_equals(a, st_union_gridsize) a_equals_union_gridsize, -- Not equal! st_area(st_union_gridsize) area_union_gridsize -- Note that the unioned area is smaller than the area of A alone from geoms, unions; }}} Tested on `POSTGIS="3.6.1 0" [EXTENSION] PGSQL="180" GEOS="3.13.1-CAPI-1.19.2" PROJ="9.6.0 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/var/lib/postgresql/.local/share/proj DATABASE_PATH=/usr/share/proj/proj.db" (compiled against PROJ 9.6.0) LIBXML="2.13.9" LIBJSON="0.18" LIBPROTOBUF="1.5.2" WAGYU="0.5.0 (Internal)"` -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Jan 16 06:52:30 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 14:52:30 -0000 Subject: [PostGIS] #6037: st_union with gridSize produces unexpected result In-Reply-To: <055.66fcb2bb2dfa7293cd8f6b12b8a210f3@osgeo.org> References: <055.66fcb2bb2dfa7293cd8f6b12b8a210f3@osgeo.org> Message-ID: <070.8d26749526f5b30a7429a5e81faca842@osgeo.org> #6037: st_union with gridSize produces unexpected result ------------------------------------+--------------------- Reporter: Asger Skovbo Petersen | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: Component: postgis | Version: 3.6.x Resolution: | Keywords: ------------------------------------+--------------------- Comment (by strk): Geometry b (the second one, containing the first one) is not equal to its reduced-precision version: {{{ with inp as ( select 'POLYGON ((450329.74 6273269.32, 450317.5 6273266.14, 450317.49 6273266.14, 450329.74 6273269.32))'::geometry g ) select ST_Equals(g, ST_ReducePrecision(g, 0.01)) }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Jan 16 07:26:12 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 15:26:12 -0000 Subject: [PostGIS] #6037: st_union with gridSize produces unexpected result In-Reply-To: <055.66fcb2bb2dfa7293cd8f6b12b8a210f3@osgeo.org> References: <055.66fcb2bb2dfa7293cd8f6b12b8a210f3@osgeo.org> Message-ID: <070.c4d9aa6ef884bf3f4a73b629b0351845@osgeo.org> #6037: st_union with gridSize produces unexpected result ------------------------------------+--------------------- Reporter: Asger Skovbo Petersen | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: Component: postgis | Version: 3.6.x Resolution: | Keywords: ------------------------------------+--------------------- Comment (by Asger Skovbo Petersen): If the current behavior is intended, I think the documentation should be updated. Currently, it says: ?For the operation to give predictable results all the input vertices must fall already on the specified grid.? In practice, this is not sufficient. The input geometry needs to be precision-reduced with ST_ReducePrecision, because this function does more than just aligning vertices to a grid. In particular, it can also ?remove features below the tolerance? which is not further explained in the current documentation. Clarifying this distinction would help users understand why ST_Union with gridSize may give unexpected results even when inputs appear grid-aligned. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Jan 16 11:14:38 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 19:14:38 -0000 Subject: [PostGIS] #6037: st_union with gridSize produces unexpected result In-Reply-To: <055.66fcb2bb2dfa7293cd8f6b12b8a210f3@osgeo.org> References: <055.66fcb2bb2dfa7293cd8f6b12b8a210f3@osgeo.org> Message-ID: <070.b788630f018a14c73f8012e42f5b493f@osgeo.org> #6037: st_union with gridSize produces unexpected result ------------------------------------+--------------------- Reporter: Asger Skovbo Petersen | Owner: pramsey Type: defect | Status: new Priority: medium | Milestone: Component: postgis | Version: 3.6.x Resolution: | Keywords: ------------------------------------+--------------------- Comment (by mdavis): Replying to [comment:2 Asger Skovbo Petersen]: > If the current behavior is intended, I think the documentation should be updated. Currently, it says: > > ?For the operation to give predictable results all the input vertices must fall already on the specified grid.? Agreed. It would be more accurate to say: "For the operation to give predictable results the inputs should be snap- rounded to the specified grid.? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Fri Jan 16 14:52:24 2026 From: git at osgeo.org (git at osgeo.org) Date: Fri, 16 Jan 2026 14:52:24 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-288-gc460d6928 Message-ID: <20260116225224.D6EC93A2C4@trac.osgeo.org> 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 c460d6928c131cc0ae973200afacfa8c47cc4953 (commit) from 1c0c04fb517bbf910f465ed91688a82fc31fd9de (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 c460d6928c131cc0ae973200afacfa8c47cc4953 Author: Paul Ramsey Date: Fri Jan 16 14:51:16 2026 -0800 Add use of PG_MODULE_MAGIC_EXT for pg>=18 Allows server to poll the version and extension name from the dynamically loaded library. Potentially could perform the same scripts-vs-libs version check we do, but on all extensions. Automatic update, could we have? Closes #6036 diff --git a/extensions/address_standardizer/address_standardizer.c b/extensions/address_standardizer/address_standardizer.c index 9c2c99cdc..f4170b4a7 100644 --- a/extensions/address_standardizer/address_standardizer.c +++ b/extensions/address_standardizer/address_standardizer.c @@ -14,8 +14,13 @@ #include "std_pg_hash.h" #include "parseaddress-api.h" -#ifdef PG_MODULE_MAGIC -PG_MODULE_MAGIC; +#include "../../postgis_config.h" + +#ifdef PG_MODULE_MAGIC_EXT +PG_MODULE_MAGIC_EXT( + .name = "address_standardizer", + .version = POSTGIS_LIB_VERSION + ); #endif Datum debug_standardize_address(PG_FUNCTION_ARGS); diff --git a/postgis/postgis_module.c b/postgis/postgis_module.c index 8f7bb312e..8c420ac53 100644 --- a/postgis/postgis_module.c +++ b/postgis/postgis_module.c @@ -43,7 +43,14 @@ /* * This is required for builds against pgsql */ +#ifdef PG_MODULE_MAGIC_EXT +PG_MODULE_MAGIC_EXT( + .name = "postgis", + .version = POSTGIS_LIB_VERSION + ); +#else PG_MODULE_MAGIC; +#endif static void interrupt_geos_callback() diff --git a/raster/rt_pg/rtpostgis.c b/raster/rt_pg/rtpostgis.c index 228717f36..49089b70e 100644 --- a/raster/rt_pg/rtpostgis.c +++ b/raster/rt_pg/rtpostgis.c @@ -157,7 +157,14 @@ /* * This is required for builds against pgsql */ +#ifdef PG_MODULE_MAGIC_EXT +PG_MODULE_MAGIC_EXT( + .name = "postgis_raster", + .version = POSTGIS_LIB_VERSION + ); +#else PG_MODULE_MAGIC; +#endif /* Module load callback */ void _PG_init(void); diff --git a/sfcgal/lwgeom_sfcgal.c b/sfcgal/lwgeom_sfcgal.c index cec862018..083ba081a 100644 --- a/sfcgal/lwgeom_sfcgal.c +++ b/sfcgal/lwgeom_sfcgal.c @@ -39,7 +39,15 @@ /* * This is required for builds against pgsql */ +#ifdef PG_MODULE_MAGIC_EXT +PG_MODULE_MAGIC_EXT( + .name = "postgis_sfcgal", + .version = POSTGIS_LIB_VERSION + ); +#else PG_MODULE_MAGIC; +#endif + /* Prototypes */ #if POSTGIS_SFCGAL_VERSION >= 10400 diff --git a/topology/postgis_topology.c b/topology/postgis_topology.c index ad2b6d918..f6bd71a5c 100644 --- a/topology/postgis_topology.c +++ b/topology/postgis_topology.c @@ -50,7 +50,14 @@ /* * This is required for builds against pgsql */ +#ifdef PG_MODULE_MAGIC_EXT +PG_MODULE_MAGIC_EXT( + .name = "postgis_topology", + .version = POSTGIS_LIB_VERSION + ); +#else PG_MODULE_MAGIC; +#endif static LWT_BE_IFACE* be_iface; ----------------------------------------------------------------------- Summary of changes: extensions/address_standardizer/address_standardizer.c | 9 +++++++-- postgis/postgis_module.c | 7 +++++++ raster/rt_pg/rtpostgis.c | 7 +++++++ sfcgal/lwgeom_sfcgal.c | 8 ++++++++ topology/postgis_topology.c | 7 +++++++ 5 files changed, 36 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Fri Jan 16 14:52:32 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 16 Jan 2026 22:52:32 -0000 Subject: [PostGIS] #6036: Use PG_MODULE_MAGIC_EXT for Pg18+ In-Reply-To: <049.6adecd4bf112efbbbbeed81500caae1e@osgeo.org> References: <049.6adecd4bf112efbbbbeed81500caae1e@osgeo.org> Message-ID: <064.2c51ff702dfd75deeaa33ff9ab04d85c@osgeo.org> #6036: Use PG_MODULE_MAGIC_EXT for Pg18+ --------------------------+--------------------------- Reporter: pramsey | Owner: pramsey Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS 3.7.0 Component: postgis | Version: master Resolution: fixed | Keywords: --------------------------+--------------------------- Changes (by Paul Ramsey ): * resolution: => fixed * status: assigned => closed Comment: In [changeset:"c460d6928c131cc0ae973200afacfa8c47cc4953/git" c460d69/git]: {{{#!CommitTicketReference repository="git" revision="c460d6928c131cc0ae973200afacfa8c47cc4953" Add use of PG_MODULE_MAGIC_EXT for pg>=18 Allows server to poll the version and extension name from the dynamically loaded library. Potentially could perform the same scripts-vs-libs version check we do, but on all extensions. Automatic update, could we have? Closes #6036 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Jan 20 03:11:36 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 20 Jan 2026 11:11:36 -0000 Subject: [PostGIS] #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables Message-ID: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables -------------------------------+--------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: defect | Status: new Priority: blocker | Milestone: Component: postgis | Version: master Keywords: | -------------------------------+--------------------- I import the attached file to at database with postgis topology installed {{{ pgtopo_import -f /tmp/test_data.gz gsk_utdata_25_784|psql t1 }}} Then I create a new topology (may not be needed) {{{ SELECT topology.createtopology('t1',4258); -- check that you have this the database SELECT * from topology.topology; id | name | srid | precision | hasz | useslargeids ----+-------------------+------+-----------+------+-------------- 3 | gsk_utdata_25_784 | 4258 | 0 | f | f 4 | t1 | 4258 | 0 | f | f (2 rows) }}} The I close all sessions to database and start two new session and starts two transactions. Session 1 {{{ [local] lop at t1=# BEGIN; BEGIN [local] lop at t1=# }}} Session 2 {{{ [local] lop at t1=# BEGIN; BEGIN [local] lop at t1=# }}} Then in session one drop the imported topology schema {{{ [local] lop at t1=# SELECT topology.droptopology('gsk_utdata_25_784'); NOTICE: 00000: Dropping all layers from topology 'gsk_utdata_25_784' (3) LOCATION: exec_stmt_raise, pl_exec.c:3925 NOTICE: 00000: drop cascades to 8 other objects DETAIL: drop cascades to table gsk_utdata_25_784.face drop cascades to table gsk_utdata_25_784.node drop cascades to table gsk_utdata_25_784.edge_data drop cascades to view gsk_utdata_25_784.edge drop cascades to sequence gsk_utdata_25_784.layer_id_seq drop cascades to table gsk_utdata_25_784.relation drop cascades to table gsk_utdata_25_784.edge_attributes drop cascades to table gsk_utdata_25_784.face_attributes LOCATION: reportDependentObjects, dependency.c:1227 droptopology -------------------------------------- Topology 'gsk_utdata_25_784' dropped (1 row) }}} In session two run this command inside the transaction and this hangs for ever. {{{ select SRID from public.geometry_columns where (f_table_schema = 't1') and f_table_name = 'edge_data' and f_geometry_column = 'geom'; }}} Go back two session one run commit {{{ [local] lop at t1=# commit; COMMIT [local] lop at t1=# }}} Go back to session two and you see this error message {{{ ERROR: XX000: could not open relation with OID 188955003 LOCATION: relation_open, relation.c:62 }}} This is tested on different servers with configs {{{ PostgreSQL 16.10 (Homebrew) on aarch64-apple-darwin23.6.0, compiled by Apple clang version 16.0.0 (clang-1600.0.26.6), 64-bit POSTGIS="3.7.0dev 3.6.0rc2-152-g19e25a659" [EXTENSION] PGSQL="160" GEOS="3.14.0-CAPI-1.20.4" PROJ="9.7.0 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/Users/lop/Library/Application Support/proj DATABASE_PATH=/opt/homebrew/Cellar/proj/9.7.0/sharpr PostgreSQL 16.4 (Ubuntu 16.4-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, 64-bit POSTGIS="3.7.0dev 3.6.0rc2-284-g013e9b0fd" [EXTENSION] PGSQL="160" GEOS="3.14.0-CAPI-1.20.4" (compiled against GEOS 3.13.1) PROJ="8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/var/lib/postgresql/.local/share/proj DATABASE_PATH=/usr/share/oj }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Jan 20 03:12:30 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 20 Jan 2026 11:12:30 -0000 Subject: [PostGIS] #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables In-Reply-To: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> References: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> Message-ID: <065.077e066e0b84f616f1ef8188d2cf9c3a@osgeo.org> #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables --------------------------------+--------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: defect | Status: new Priority: blocker | Milestone: Component: postgis | Version: master Resolution: | Keywords: --------------------------------+--------------------- Changes (by Lars Aksel Opsahl): * Attachment "test_data.gz" added. db setup file. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Jan 20 03:24:51 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 20 Jan 2026 11:24:51 -0000 Subject: [PostGIS] #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables In-Reply-To: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> References: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> Message-ID: <065.bf204caf13333a6d6dfe39c9229ec7bd@osgeo.org> #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables --------------------------------+--------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: defect | Status: new Priority: blocker | Milestone: Component: postgis | Version: master Resolution: | Keywords: --------------------------------+--------------------- Old description: > I import the attached file to at database with postgis topology installed > > {{{ > pgtopo_import -f /tmp/test_data.gz gsk_utdata_25_784|psql t1 > }}} > > Then I create a new topology (may not be needed) > > {{{ > SELECT topology.createtopology('t1',4258); > > -- check that you have this the database > > SELECT * from topology.topology; > id | name | srid | precision | hasz | useslargeids > ----+-------------------+------+-----------+------+-------------- > 3 | gsk_utdata_25_784 | 4258 | 0 | f | f > 4 | t1 | 4258 | 0 | f | f > (2 rows) > > }}} > > The I close all sessions to database and start two new session and starts > two transactions. > > Session 1 > > {{{ > [local] lop at t1=# BEGIN; > BEGIN > [local] lop at t1=# > }}} > > Session 2 > > {{{ > [local] lop at t1=# BEGIN; > BEGIN > [local] lop at t1=# > }}} > > Then in session one drop the imported topology schema > > {{{ > > [local] lop at t1=# SELECT topology.droptopology('gsk_utdata_25_784'); > NOTICE: 00000: Dropping all layers from topology 'gsk_utdata_25_784' (3) > LOCATION: exec_stmt_raise, pl_exec.c:3925 > NOTICE: 00000: drop cascades to 8 other objects > DETAIL: drop cascades to table gsk_utdata_25_784.face > drop cascades to table gsk_utdata_25_784.node > drop cascades to table gsk_utdata_25_784.edge_data > drop cascades to view gsk_utdata_25_784.edge > drop cascades to sequence gsk_utdata_25_784.layer_id_seq > drop cascades to table gsk_utdata_25_784.relation > drop cascades to table gsk_utdata_25_784.edge_attributes > drop cascades to table gsk_utdata_25_784.face_attributes > LOCATION: reportDependentObjects, dependency.c:1227 > droptopology > -------------------------------------- > Topology 'gsk_utdata_25_784' dropped > (1 row) > > }}} > > In session two run this command inside the transaction and this hangs for > ever. > > {{{ > select SRID from public.geometry_columns where (f_table_schema = 't1') > and f_table_name = 'edge_data' and f_geometry_column = 'geom'; > > }}} > > Go back two session one run commit > > {{{ > [local] lop at t1=# commit; > COMMIT > [local] lop at t1=# > > }}} > > Go back to session two and you see this error message > > {{{ > ERROR: XX000: could not open relation with OID 188955003 > LOCATION: relation_open, relation.c:62 > > }}} > > This is tested on different servers with configs > > {{{ > PostgreSQL 16.10 (Homebrew) on aarch64-apple-darwin23.6.0, compiled by > Apple clang version 16.0.0 (clang-1600.0.26.6), 64-bit > POSTGIS="3.7.0dev 3.6.0rc2-152-g19e25a659" [EXTENSION] PGSQL="160" > GEOS="3.14.0-CAPI-1.20.4" PROJ="9.7.0 NETWORK_ENABLED=OFF > URL_ENDPOINT=https://cdn.proj.org > USER_WRITABLE_DIRECTORY=/Users/lop/Library/Application Support/proj > DATABASE_PATH=/opt/homebrew/Cellar/proj/9.7.0/sharpr > > PostgreSQL 16.4 (Ubuntu 16.4-1.pgdg20.04+1) on x86_64-pc-linux-gnu, > compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, 64-bit > > POSTGIS="3.7.0dev 3.6.0rc2-284-g013e9b0fd" [EXTENSION] PGSQL="160" > GEOS="3.14.0-CAPI-1.20.4" (compiled against GEOS 3.13.1) PROJ="8.2.1 > NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org > USER_WRITABLE_DIRECTORY=/var/lib/postgresql/.local/share/proj > DATABASE_PATH=/usr/share/oj > > }}} New description: I import the attached file to at database with postgis topology installed {{{ pgtopo_import -f /tmp/test_data.gz gsk_utdata_25_784|psql t1 }}} Then I create a new topology (may not be needed) {{{ SELECT topology.createtopology('t1',4258); -- check that you have this the database SELECT * from topology.topology; id | name | srid | precision | hasz | useslargeids ----+-------------------+------+-----------+------+-------------- 3 | gsk_utdata_25_784 | 4258 | 0 | f | f 4 | t1 | 4258 | 0 | f | f (2 rows) }}} The I close all sessions to database and start two new session and starts two transactions. Session 1 {{{ [local] lop at t1=# BEGIN; BEGIN [local] lop at t1=# }}} Session 2 {{{ [local] lop at t1=# BEGIN; BEGIN [local] lop at t1=# }}} Then in session one drop the imported topology schema {{{ [local] lop at t1=# SELECT topology.droptopology('gsk_utdata_25_784'); NOTICE: 00000: Dropping all layers from topology 'gsk_utdata_25_784' (3) LOCATION: exec_stmt_raise, pl_exec.c:3925 NOTICE: 00000: drop cascades to 8 other objects DETAIL: drop cascades to table gsk_utdata_25_784.face drop cascades to table gsk_utdata_25_784.node drop cascades to table gsk_utdata_25_784.edge_data drop cascades to view gsk_utdata_25_784.edge drop cascades to sequence gsk_utdata_25_784.layer_id_seq drop cascades to table gsk_utdata_25_784.relation drop cascades to table gsk_utdata_25_784.edge_attributes drop cascades to table gsk_utdata_25_784.face_attributes LOCATION: reportDependentObjects, dependency.c:1227 droptopology -------------------------------------- Topology 'gsk_utdata_25_784' dropped (1 row) }}} In session two run this command inside the transaction and this hangs for ever. {{{ select SRID from public.geometry_columns where (f_table_schema = 't1') and f_table_name = 'edge_data' and f_geometry_column = 'geom'; }}} Go back two session one run commit {{{ [local] lop at t1=# commit; COMMIT [local] lop at t1=# }}} Go back to session two and you see this error message {{{ ERROR: XX000: could not open relation with OID 188955003 LOCATION: relation_open, relation.c:62 }}} This is tested on different servers with configs {{{ PostgreSQL 16.10 (Homebrew) on aarch64-apple-darwin23.6.0, compiled by Apple clang version 16.0.0 (clang-1600.0.26.6), 64-bit POSTGIS="3.7.0dev 3.6.0rc2-152-g19e25a659" [EXTENSION] PGSQL="160" GEOS="3.14.0-CAPI-1.20.4" PROJ="9.7.0 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/Users/lop/Library/Application Support/proj DATABASE_PATH=/opt/homebrew/Cellar/proj/9.7.0/sharpr PostgreSQL 16.4 (Ubuntu 16.4-1.pgdg20.04+1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0, 64-bit POSTGIS="3.7.0dev 3.6.0rc2-284-g013e9b0fd" [EXTENSION] PGSQL="160" GEOS="3.14.0-CAPI-1.20.4" (compiled against GEOS 3.13.1) PROJ="8.2.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/var/lib/postgresql/.local/share/proj DATABASE_PATH=/usr/share/oj }}} -- Comment (by Lars Aksel Opsahl): And after commit in session I have to run a new select to the data and then works OK again {{{ select SRID from public.geometry_columns where (f_table_schema = 't1') and f_table_name = 'edge_data' and f_geometry_column = 'geom'; srid ------ 4258 (1 row) }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Jan 20 03:43:07 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 20 Jan 2026 11:43:07 -0000 Subject: [PostGIS] #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables In-Reply-To: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> References: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> Message-ID: <065.2877f8cfbe210273a3835da36b588c96@osgeo.org> #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables --------------------------------+--------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: defect | Status: new Priority: blocker | Milestone: Component: postgis | Version: master Resolution: | Keywords: --------------------------------+--------------------- Comment (by Lars Aksel Opsahl): This seems to have no effect {{{ set transaction isolation level repeatable read; }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Jan 20 03:47:38 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 20 Jan 2026 11:47:38 -0000 Subject: [PostGIS] #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables In-Reply-To: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> References: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> Message-ID: <065.f58e3edb64c3ca2a59e29d2b6e376c82@osgeo.org> #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables --------------------------------+--------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: defect | Status: new Priority: blocker | Milestone: Component: postgis | Version: master Resolution: | Keywords: --------------------------------+--------------------- Comment (by Lars Aksel Opsahl): What caused this problem in the first case was that I used the function find_srid in another thread which again depend on public.geometry_columns -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Jan 20 04:11:35 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 20 Jan 2026 12:11:35 -0000 Subject: [PostGIS] #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables In-Reply-To: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> References: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> Message-ID: <065.e44ccef37012e8f85fa0b712de74e214@osgeo.org> #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables --------------------------------+--------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: defect | Status: new Priority: blocker | Milestone: Component: postgis | Version: master Resolution: | Keywords: --------------------------------+--------------------- Comment (by Lars Aksel Opsahl): If this is expected I will be forced to do try catch around functions like find_srid, but that causes a lot problems related to subtrans locks and that often kills the performance. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Jan 20 05:15:54 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 20 Jan 2026 13:15:54 -0000 Subject: [PostGIS] #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables In-Reply-To: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> References: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> Message-ID: <065.fe85195714d8bf0248e71df36165e503@osgeo.org> #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables --------------------------------+--------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: defect | Status: new Priority: blocker | Milestone: Component: postgis | Version: master Resolution: | Keywords: --------------------------------+--------------------- Comment (by Lars Aksel Opsahl): This problems seems NOT be related topology.droptopology. You get the same problem if you use "drop SCHEMA gsk_utdata_25_784 CASCADE;" and not "SELECT topology.createtopology('t1',4258);" -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 20 10:21:53 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 10:21:53 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-16-gba50bdfaa Message-ID: <20260120182153.CB0FF33409@trac.osgeo.org> 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.6 has been updated via ba50bdfaa929b9bef44024a941fdf2472b10e9d6 (commit) via 680639af5bc6e3926c5e89a13814a0a7a73b3250 (commit) from 928180043ce24b69d35e9c1e8fc968b2adff0e41 (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 ba50bdfaa929b9bef44024a941fdf2472b10e9d6 Author: Paul Ramsey Date: Tue Jan 20 10:21:38 2026 -0800 News item for 680639af5 diff --git a/NEWS b/NEWS index 0486c2c46..ee38ad634 100644 --- a/NEWS +++ b/NEWS @@ -23,6 +23,7 @@ topogeometry corruption: (Bas Couwenberg) - #6020, schema qualify call in ST_MPointFromText (Paul Ramsey) - #6028, crash indexing malformed empty polygon (Paul Ramsey) +- GH-841, small memory leak in address_standardizer (Maxim Korotkov) PostGIS 3.6.1 commit 680639af5bc6e3926c5e89a13814a0a7a73b3250 Author: Maksim Korotkov Date: Tue Jan 20 17:51:57 2026 +0300 Avoid potential NULL dereference in std_free() After check against NULL the pointer std -> pagc_p was used unsafely. Found by PostgresPro with Svace Static Analyzer. Fixes: c6091a4bb ("Prep to move address_standardizer into extensions folder") Signed-off-by: Maksim Korotkov diff --git a/extensions/address_standardizer/standard.c b/extensions/address_standardizer/standard.c index 4fe63e3ed..9fed23411 100644 --- a/extensions/address_standardizer/standard.c +++ b/extensions/address_standardizer/standard.c @@ -379,13 +379,15 @@ void std_free(STANDARDIZER *std) { if ( std == NULL ) return; DBG("Calling close_stand_process"); - if ( std -> pagc_p != NULL ) close_stand_process( std -> pagc_p ) ; - if ( std -> pagc_p -> process_errors != NULL ) { - DBG("Calling close_errors"); - close_errors( std -> pagc_p -> process_errors ); - DBG("Calling FREE_AND_NULL"); - FREE_AND_NULL( std -> pagc_p ) ; - } + if ( std -> pagc_p != NULL ) { + close_stand_process( std -> pagc_p ) ; + if ( std -> pagc_p -> process_errors != NULL ) { + DBG("Calling close_errors"); + close_errors( std -> pagc_p -> process_errors ); + } + DBG("Calling FREE_AND_NULL"); + FREE_AND_NULL( std -> pagc_p ); + } DBG("Calling close_stand_context"); close_stand_context( std -> misc_stand ); DBG("Calling free"); ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + extensions/address_standardizer/standard.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 20 10:22:01 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 10:22:01 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-289-g0a5d1263b Message-ID: <20260120182201.7CD2C3340A@trac.osgeo.org> 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 0a5d1263b5b75114b15e8915e4ecce2827c08476 (commit) from c460d6928c131cc0ae973200afacfa8c47cc4953 (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 0a5d1263b5b75114b15e8915e4ecce2827c08476 Author: Maksim Korotkov Date: Tue Jan 20 17:51:57 2026 +0300 Avoid potential NULL dereference in std_free() After check against NULL the pointer std -> pagc_p was used unsafely. Found by PostgresPro with Svace Static Analyzer. Fixes: c6091a4bb ("Prep to move address_standardizer into extensions folder") Signed-off-by: Maksim Korotkov diff --git a/extensions/address_standardizer/standard.c b/extensions/address_standardizer/standard.c index 4fe63e3ed..9fed23411 100644 --- a/extensions/address_standardizer/standard.c +++ b/extensions/address_standardizer/standard.c @@ -379,13 +379,15 @@ void std_free(STANDARDIZER *std) { if ( std == NULL ) return; DBG("Calling close_stand_process"); - if ( std -> pagc_p != NULL ) close_stand_process( std -> pagc_p ) ; - if ( std -> pagc_p -> process_errors != NULL ) { - DBG("Calling close_errors"); - close_errors( std -> pagc_p -> process_errors ); - DBG("Calling FREE_AND_NULL"); - FREE_AND_NULL( std -> pagc_p ) ; - } + if ( std -> pagc_p != NULL ) { + close_stand_process( std -> pagc_p ) ; + if ( std -> pagc_p -> process_errors != NULL ) { + DBG("Calling close_errors"); + close_errors( std -> pagc_p -> process_errors ); + } + DBG("Calling FREE_AND_NULL"); + FREE_AND_NULL( std -> pagc_p ); + } DBG("Calling close_stand_context"); close_stand_context( std -> misc_stand ); DBG("Calling free"); ----------------------------------------------------------------------- Summary of changes: extensions/address_standardizer/standard.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 20 10:44:28 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 10:44:28 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.2 updated. 3.2.7-61-g1eee9c10d Message-ID: <20260120184428.942E233AF7@trac.osgeo.org> 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.2 has been updated via 1eee9c10d84fcddbe737692f34fa1ab80dc84771 (commit) via b34235de6704518e88aaa9266cc3bec81ff34a15 (commit) from 8d8651f823b5799f1385acf121de39261d5032dd (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 1eee9c10d84fcddbe737692f34fa1ab80dc84771 Author: Paul Ramsey Date: Tue Jan 20 10:44:21 2026 -0800 News item for 680639af5 diff --git a/NEWS b/NEWS index 8e80e68f4..8b5dbf815 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,7 @@ Proj 4.9+ required. - #5962, Consistent clipping of MULTI/POINT (Paul Ramsey) - #5989, CurvePolygon distance error (Paul Ramsey) - #6028, Crash indexing malformed empty polygon (Paul Ramsey) + - GH-841, small memory leak in address_standardizer (Maxim Korotkov) PostGIS 3.2.8 commit b34235de6704518e88aaa9266cc3bec81ff34a15 Author: Maksim Korotkov Date: Tue Jan 20 17:51:57 2026 +0300 Avoid potential NULL dereference in std_free() After check against NULL the pointer std -> pagc_p was used unsafely. Found by PostgresPro with Svace Static Analyzer. Fixes: c6091a4bb ("Prep to move address_standardizer into extensions folder") Signed-off-by: Maksim Korotkov diff --git a/extensions/address_standardizer/standard.c b/extensions/address_standardizer/standard.c index 4fe63e3ed..9fed23411 100644 --- a/extensions/address_standardizer/standard.c +++ b/extensions/address_standardizer/standard.c @@ -379,13 +379,15 @@ void std_free(STANDARDIZER *std) { if ( std == NULL ) return; DBG("Calling close_stand_process"); - if ( std -> pagc_p != NULL ) close_stand_process( std -> pagc_p ) ; - if ( std -> pagc_p -> process_errors != NULL ) { - DBG("Calling close_errors"); - close_errors( std -> pagc_p -> process_errors ); - DBG("Calling FREE_AND_NULL"); - FREE_AND_NULL( std -> pagc_p ) ; - } + if ( std -> pagc_p != NULL ) { + close_stand_process( std -> pagc_p ) ; + if ( std -> pagc_p -> process_errors != NULL ) { + DBG("Calling close_errors"); + close_errors( std -> pagc_p -> process_errors ); + } + DBG("Calling FREE_AND_NULL"); + FREE_AND_NULL( std -> pagc_p ); + } DBG("Calling close_stand_context"); close_stand_context( std -> misc_stand ); DBG("Calling free"); ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + extensions/address_standardizer/standard.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 20 10:44:34 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 10:44:34 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.3 updated. 3.3.7-68-g95797619c Message-ID: <20260120184434.51FF4340B3@trac.osgeo.org> 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 95797619c8c48b93f2d88c680852ea66d122a8f7 (commit) via b6c4d156347d9b8204b0dae8ce01796c23207703 (commit) from 5e9e9bbfcdd2f9857608580aaa6087cc0fa65006 (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 95797619c8c48b93f2d88c680852ea66d122a8f7 Author: Paul Ramsey Date: Tue Jan 20 10:44:19 2026 -0800 News item for 680639af5 diff --git a/NEWS b/NEWS index a2005d6a9..b23c7db50 100644 --- a/NEWS +++ b/NEWS @@ -29,6 +29,7 @@ Proj 4.9+ required. - #6023, Fix robustness issue in ptarray_contains_point (Sandro Santilli) - #6027, Fix RemoveUnusedPrimitives without topology in search_path (Sandro Santilli) - #6028, crash indexing malformed empty polygon (Paul Ramsey) + - GH-841, small memory leak in address_standardizer (Maxim Korotkov) PostGIS 3.3.8 commit b6c4d156347d9b8204b0dae8ce01796c23207703 Author: Maksim Korotkov Date: Tue Jan 20 17:51:57 2026 +0300 Avoid potential NULL dereference in std_free() After check against NULL the pointer std -> pagc_p was used unsafely. Found by PostgresPro with Svace Static Analyzer. Fixes: c6091a4bb ("Prep to move address_standardizer into extensions folder") Signed-off-by: Maksim Korotkov diff --git a/extensions/address_standardizer/standard.c b/extensions/address_standardizer/standard.c index 4fe63e3ed..9fed23411 100644 --- a/extensions/address_standardizer/standard.c +++ b/extensions/address_standardizer/standard.c @@ -379,13 +379,15 @@ void std_free(STANDARDIZER *std) { if ( std == NULL ) return; DBG("Calling close_stand_process"); - if ( std -> pagc_p != NULL ) close_stand_process( std -> pagc_p ) ; - if ( std -> pagc_p -> process_errors != NULL ) { - DBG("Calling close_errors"); - close_errors( std -> pagc_p -> process_errors ); - DBG("Calling FREE_AND_NULL"); - FREE_AND_NULL( std -> pagc_p ) ; - } + if ( std -> pagc_p != NULL ) { + close_stand_process( std -> pagc_p ) ; + if ( std -> pagc_p -> process_errors != NULL ) { + DBG("Calling close_errors"); + close_errors( std -> pagc_p -> process_errors ); + } + DBG("Calling FREE_AND_NULL"); + FREE_AND_NULL( std -> pagc_p ); + } DBG("Calling close_stand_context"); close_stand_context( std -> misc_stand ); DBG("Calling free"); ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + extensions/address_standardizer/standard.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 20 10:44:36 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 10:44:36 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.4 updated. 3.4.4-70-g41069cc79 Message-ID: <20260120184437.1017833F16@trac.osgeo.org> 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.4 has been updated via 41069cc791b504b91872af598557576d561d8935 (commit) via 64c2c66e5f15d92dc105bef53591be239601efbe (commit) from 92a107c3ab7b53c4cdff3c749a11d854c30d4142 (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 41069cc791b504b91872af598557576d561d8935 Author: Paul Ramsey Date: Tue Jan 20 10:44:18 2026 -0800 News item for 680639af5 diff --git a/NEWS b/NEWS index 3d0347ef7..023a91dce 100644 --- a/NEWS +++ b/NEWS @@ -39,6 +39,7 @@ Proj 6.1+ required. - #5754, ST_ForcePolygonCCW reverses lines (Paul Ramsey) - #6020, schema qualify call in ST_MPointFromText (Paul Ramsey) - #6028, crash indexing malformed empty polygon (Paul Ramsey) + - GH-841, small memory leak in address_standardizer (Maxim Korotkov) PostGIS 3.4.4 commit 64c2c66e5f15d92dc105bef53591be239601efbe Author: Maksim Korotkov Date: Tue Jan 20 17:51:57 2026 +0300 Avoid potential NULL dereference in std_free() After check against NULL the pointer std -> pagc_p was used unsafely. Found by PostgresPro with Svace Static Analyzer. Fixes: c6091a4bb ("Prep to move address_standardizer into extensions folder") Signed-off-by: Maksim Korotkov diff --git a/extensions/address_standardizer/standard.c b/extensions/address_standardizer/standard.c index 4fe63e3ed..9fed23411 100644 --- a/extensions/address_standardizer/standard.c +++ b/extensions/address_standardizer/standard.c @@ -379,13 +379,15 @@ void std_free(STANDARDIZER *std) { if ( std == NULL ) return; DBG("Calling close_stand_process"); - if ( std -> pagc_p != NULL ) close_stand_process( std -> pagc_p ) ; - if ( std -> pagc_p -> process_errors != NULL ) { - DBG("Calling close_errors"); - close_errors( std -> pagc_p -> process_errors ); - DBG("Calling FREE_AND_NULL"); - FREE_AND_NULL( std -> pagc_p ) ; - } + if ( std -> pagc_p != NULL ) { + close_stand_process( std -> pagc_p ) ; + if ( std -> pagc_p -> process_errors != NULL ) { + DBG("Calling close_errors"); + close_errors( std -> pagc_p -> process_errors ); + } + DBG("Calling FREE_AND_NULL"); + FREE_AND_NULL( std -> pagc_p ); + } DBG("Calling close_stand_context"); close_stand_context( std -> misc_stand ); DBG("Calling free"); ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + extensions/address_standardizer/standard.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 20 10:44:39 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 10:44:39 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.5 updated. 3.5.4-15-g515ce9944 Message-ID: <20260120184440.2DA13340E8@trac.osgeo.org> 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.5 has been updated via 515ce9944e7bc2d4ab07ae32bab7859e74506cbc (commit) via ea1b534ed831da8122e5b82db5dc7b63f34217c3 (commit) from 815ad50377488ef366470696d15e2a9e9e923080 (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 515ce9944e7bc2d4ab07ae32bab7859e74506cbc Author: Paul Ramsey Date: Tue Jan 20 10:44:16 2026 -0800 News item for 680639af5 diff --git a/NEWS b/NEWS index 3acc169ad..fc3dc793a 100644 --- a/NEWS +++ b/NEWS @@ -11,6 +11,7 @@ PostgreSQL 12-18 required. GEOS 3.8+ required. Proj 6.1+ required. - #6023, Fix robustness issue in ptarray_contains_point (Sandro Santilli) - #6027, Fix RemoveUnusedPrimitives without topology in search_path (Sandro Santilli) - #6028, crash indexing malformed empty polygon (Paul Ramsey) + - GH-841, small memory leak in address_standardizer (Maxim Korotkov) PostGIS 3.5.4 commit ea1b534ed831da8122e5b82db5dc7b63f34217c3 Author: Maksim Korotkov Date: Tue Jan 20 17:51:57 2026 +0300 Avoid potential NULL dereference in std_free() After check against NULL the pointer std -> pagc_p was used unsafely. Found by PostgresPro with Svace Static Analyzer. Fixes: c6091a4bb ("Prep to move address_standardizer into extensions folder") Signed-off-by: Maksim Korotkov diff --git a/extensions/address_standardizer/standard.c b/extensions/address_standardizer/standard.c index 4fe63e3ed..9fed23411 100644 --- a/extensions/address_standardizer/standard.c +++ b/extensions/address_standardizer/standard.c @@ -379,13 +379,15 @@ void std_free(STANDARDIZER *std) { if ( std == NULL ) return; DBG("Calling close_stand_process"); - if ( std -> pagc_p != NULL ) close_stand_process( std -> pagc_p ) ; - if ( std -> pagc_p -> process_errors != NULL ) { - DBG("Calling close_errors"); - close_errors( std -> pagc_p -> process_errors ); - DBG("Calling FREE_AND_NULL"); - FREE_AND_NULL( std -> pagc_p ) ; - } + if ( std -> pagc_p != NULL ) { + close_stand_process( std -> pagc_p ) ; + if ( std -> pagc_p -> process_errors != NULL ) { + DBG("Calling close_errors"); + close_errors( std -> pagc_p -> process_errors ); + } + DBG("Calling FREE_AND_NULL"); + FREE_AND_NULL( std -> pagc_p ); + } DBG("Calling close_stand_context"); close_stand_context( std -> misc_stand ); DBG("Calling free"); ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + extensions/address_standardizer/standard.c | 16 +++++++++------- 2 files changed, 10 insertions(+), 7 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 20 12:29:58 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 20 Jan 2026 20:29:58 -0000 Subject: [PostGIS] #6033: ERROR: operator is not unique: public.geometry = public.geometry In-Reply-To: <046.8b65a0696671f5b60448812d9e3003f2@osgeo.org> References: <046.8b65a0696671f5b60448812d9e3003f2@osgeo.org> Message-ID: <061.70aa01a8c7dcb42325fc4b9606d19b26@osgeo.org> #6033: ERROR: operator is not unique: public.geometry = public.geometry ----------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: closed Priority: medium | Milestone: PostGIS 3.6.2 Component: postgis | Version: 3.5.x Resolution: invalid | Keywords: ----------------------+--------------------------- Changes (by robe): * resolution: => invalid * status: new => closed Comment: Duh you are right, this is not fixable. This works fine: {{{ set search_path='pg_catalog'; SELECT 'POINT(1 1)'::public.geometry OPERATOR(public.=) 'POINT(1 1)'::public.geometry; }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 20 12:34:05 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 12:34:05 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-290-g6388f5be6 Message-ID: <20260120203406.0FAC73438E@trac.osgeo.org> 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 6388f5be621ac58fb49b39ab098ed49d7d826fec (commit) from 0a5d1263b5b75114b15e8915e4ecce2827c08476 (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 6388f5be621ac58fb49b39ab098ed49d7d826fec Author: Lo?c Bartoletti Date: Fri Dec 19 07:30:24 2025 +0100 Convert PolyhedralSurface/TIN to MultiPolygon diff --git a/liblwgeom/lwgeom.c b/liblwgeom/lwgeom.c index a2d65dc0f..c6562b5fa 100644 --- a/liblwgeom/lwgeom.c +++ b/liblwgeom/lwgeom.c @@ -414,6 +414,43 @@ lwgeom_as_multi(const LWGEOM *lwgeom) type = lwgeom->type; + /* + * PolyhedralSurface and MultiPolygon have identical structures + * (both are collections of LWPOLY). Convert PolyhedralSurface + * to MultiPolygon by cloning and changing the type. + */ + if (type == POLYHEDRALSURFACETYPE) + { + ogeom = (LWGEOM *)lwcollection_clone((LWCOLLECTION *)lwgeom); + ogeom->type = MULTIPOLYGONTYPE; + return ogeom; + } + + /* + * TIN to MultiPolygon: convert each triangle to a polygon. + * LWTRIANGLE and LWLINE have compatible memory layouts, + * so we can use lwpoly_from_lwlines to create polygons. + */ + if (type == TINTYPE) + { + uint32_t i; + LWCOLLECTION *col = (LWCOLLECTION *)lwgeom; + LWMPOLY *mpoly = lwmpoly_construct_empty(lwgeom->srid, + FLAGS_GET_Z(lwgeom->flags), + FLAGS_GET_M(lwgeom->flags)); + + for (i = 0; i < col->ngeoms; i++) + { + LWPOLY *poly = lwpoly_from_lwlines((LWLINE *)col->geoms[i], 0, NULL); + lwmpoly_add_lwpoly(mpoly, poly); + } + + if (lwgeom->bbox) + mpoly->bbox = gbox_clone(lwgeom->bbox); + + return lwmpoly_as_lwgeom(mpoly); + } + if ( ! MULTITYPE[type] ) return lwgeom_clone(lwgeom); if( lwgeom_is_empty(lwgeom) ) diff --git a/postgis/lwgeom_functions_basic.c b/postgis/lwgeom_functions_basic.c index ed5f076f2..0cfa08da7 100644 --- a/postgis/lwgeom_functions_basic.c +++ b/postgis/lwgeom_functions_basic.c @@ -532,7 +532,6 @@ Datum LWGEOM_force_multi(PG_FUNCTION_ARGS) case COLLECTIONTYPE: case MULTICURVETYPE: case MULTISURFACETYPE: - case TINTYPE: PG_RETURN_POINTER(geom); default: break; diff --git a/regress/core/tickets.sql b/regress/core/tickets.sql index eec195810..4c1fcb862 100644 --- a/regress/core/tickets.sql +++ b/regress/core/tickets.sql @@ -67,6 +67,14 @@ SELECT '#80', ST_AsText(ST_Multi('MULTILINESTRING((0 0,1 1))')); -- #83 -- SELECT '#83', ST_AsText(ST_Multi(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'))); +-- ST_Multi with PolyhedralSurface -> MultiPolygon +SELECT 'ST_Multi_psurface', ST_GeometryType(ST_Multi('POLYHEDRALSURFACE Z(((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)),((0 0 0,0 1 0,0 1 1,0 0 1,0 0 0)))'::geometry)); +SELECT 'ST_Multi_psurface_empty', ST_GeometryType(ST_Multi('POLYHEDRALSURFACE EMPTY'::geometry)); + +-- ST_Multi with TIN -> MultiPolygon +SELECT 'ST_Multi_tin', ST_GeometryType(ST_Multi('TIN Z(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 1 0,0 0 0)))'::geometry)); +SELECT 'ST_Multi_tin_empty', ST_GeometryType(ST_Multi('TIN EMPTY'::geometry)); + -- #85 -- SELECT '#85', ST_Distance(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'), ST_Point(220268, 150415)); diff --git a/regress/core/tickets_expected b/regress/core/tickets_expected index d8f7f5cf5..76ea65e71 100644 --- a/regress/core/tickets_expected +++ b/regress/core/tickets_expected @@ -14,6 +14,10 @@ ERROR: lwgeom_longitude_shift: unsupported geom type: CircularString #73|GEOMETRYCOLLECTION(CIRCULARSTRING(1 1,2 3,4 5,6 7,5 6)) #80|MULTILINESTRING((0 0,1 1)) #83|MULTICURVE(CIRCULARSTRING(220268 150415,220227 150505,220227 150406)) +ST_Multi_psurface|ST_MultiPolygon +ST_Multi_psurface_empty|ST_MultiPolygon +ST_Multi_tin|ST_MultiPolygon +ST_Multi_tin_empty|ST_MultiPolygon #85|0 #112|GEOMETRYCOLLECTION(POINT(-10 50)) ERROR: Input geometry does not have a measure dimension ----------------------------------------------------------------------- Summary of changes: liblwgeom/lwgeom.c | 37 +++++++++++++++++++++++++++++++++++++ postgis/lwgeom_functions_basic.c | 1 - regress/core/tickets.sql | 8 ++++++++ regress/core/tickets_expected | 4 ++++ 4 files changed, 49 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 20 12:35:20 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 12:35:20 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-291-gc7b62c4e4 Message-ID: <20260120203521.3026C34E14@trac.osgeo.org> 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 c7b62c4e42c93d74a9c6890bdfe644db05e10350 (commit) from 6388f5be621ac58fb49b39ab098ed49d7d826fec (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 c7b62c4e42c93d74a9c6890bdfe644db05e10350 Author: Paul Ramsey Date: Tue Jan 20 12:35:16 2026 -0800 NEWS entry for GH-839 diff --git a/NEWS b/NEWS index 9e96fdbe3..43c732569 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,7 @@ xxxx/xx/xx - #5109, Document the meaning of topology.next_left_edge and topology.next_right_edge links (Darafei Praliaskouski) - #5889, [topology] Include representative locations in topology build errors (Darafei Praliaskouski) - #2614, Use GEOSPreparedDistance and caching to accelerate ST_DWithin (Paul Ramsey) + - GH-839, ST_Multi support for TIN and surfaces (Luca Bartoletti) * Bug Fixes * ----------------------------------------------------------------------- Summary of changes: NEWS | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 20 13:02:28 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 13:02:28 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-293-g35d31a02d Message-ID: <20260120210229.BA3AA358B2@trac.osgeo.org> 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 35d31a02d394a2ba5394b1116f78676a286e8d17 (commit) via 3098a7b687668c767fe7d057306c9078cbd807b3 (commit) from c7b62c4e42c93d74a9c6890bdfe644db05e10350 (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 35d31a02d394a2ba5394b1116f78676a286e8d17 Merge: c7b62c4e4 3098a7b68 Author: pramsey Date: Tue Jan 20 13:02:25 2026 -0800 Merge pull request 'Improve error message from libproj failures' (!207) from strk/postgis:proj-improved-error into master Reviewed-on: https://gitea.osgeo.org/postgis/postgis/pulls/207 commit 3098a7b687668c767fe7d057306c9078cbd807b3 Author: Sandro Santilli Date: Fri Feb 4 21:43:45 2022 +0100 Improve error message from libproj failures diff --git a/libpgcommon/lwgeom_transform.c b/libpgcommon/lwgeom_transform.c index c2b22085a..f5547738b 100644 --- a/libpgcommon/lwgeom_transform.c +++ b/libpgcommon/lwgeom_transform.c @@ -390,7 +390,6 @@ AddToPROJSRSCache(PROJSRSCache *PROJCache, int32_t srid_from, int32_t srid_to) oldContext = MemoryContextSwitchTo(PROJCache->PROJSRSCacheContext); - LWPROJ *projection = NULL; /* Try combinations of AUTH_NAME:AUTH_SRID/SRTEXT/PROJ4TEXT until we find */ /* one that gives us a usable transform. Note that we prefer */ @@ -410,7 +409,13 @@ AddToPROJSRSCache(PROJSRSCache *PROJCache, int32_t srid_from, int32_t srid_to) } if (!projection) { - elog(ERROR, "could not form projection (LWPROJ) from 'srid=%d' to 'srid=%d'", srid_from, srid_to); + elog(ERROR, + "could not form projection (LWPROJ) from srid %d ('%s') to srid %d ('%s')", + srid_from, + ( pj_from_str ? pj_from_str : "(null)" ), + srid_to, + ( pj_to_str ? pj_to_str : "(null)" ) + ); return NULL; } ----------------------------------------------------------------------- Summary of changes: libpgcommon/lwgeom_transform.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 20 13:50:19 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 20 Jan 2026 13:50:19 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-295-gda86ae2c0 Message-ID: <20260120215022.C66FD3803D@trac.osgeo.org> 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 da86ae2c0914287fe2914e28aea5360dc8af0131 (commit) via 6ba2fd5a2f84409fd7ee069411113db562b6ddd2 (commit) from 35d31a02d394a2ba5394b1116f78676a286e8d17 (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 da86ae2c0914287fe2914e28aea5360dc8af0131 Author: Lo?c Bartoletti Date: Thu Jun 5 10:30:15 2025 +0200 fix(TriangulatedSurface): TIN can be closed as PolyhedralSurface diff --git a/liblwgeom/lwgeom.c b/liblwgeom/lwgeom.c index c6562b5fa..b1a557feb 100644 --- a/liblwgeom/lwgeom.c +++ b/liblwgeom/lwgeom.c @@ -1451,8 +1451,13 @@ int lwgeom_dimension(const LWGEOM *geom) case CURVEPOLYTYPE: case MULTISURFACETYPE: case MULTIPOLYGONTYPE: - case TINTYPE: return 2; + case TINTYPE: + { + /* A closed tin surface contains a volume. */ + int closed = lwtin_is_closed((LWTIN*)geom); + return ( closed ? 3 : 2 ); + } case POLYHEDRALSURFACETYPE: { /* A closed polyhedral surface contains a volume. */ commit 6ba2fd5a2f84409fd7ee069411113db562b6ddd2 Author: Lo?c Bartoletti Date: Thu Jun 5 10:29:41 2025 +0200 test(TriangulatedSurface): Add tests diff --git a/regress/core/tests.mk.in b/regress/core/tests.mk.in index a959ad92f..a89b77bfc 100644 --- a/regress/core/tests.mk.in +++ b/regress/core/tests.mk.in @@ -119,6 +119,7 @@ TESTS += \ $(top_srcdir)/regress/core/temporal \ $(top_srcdir)/regress/core/temporal_knn \ $(top_srcdir)/regress/core/tickets \ + $(top_srcdir)/regress/core/triangulatedsurface \ $(top_srcdir)/regress/core/twkb \ $(top_srcdir)/regress/core/typmod \ $(top_srcdir)/regress/core/wkb \ diff --git a/regress/core/triangulatedsurface.sql b/regress/core/triangulatedsurface.sql new file mode 100644 index 000000000..cf0892e49 --- /dev/null +++ b/regress/core/triangulatedsurface.sql @@ -0,0 +1,40 @@ +-- ST_Dimension on 2D: not closed +SELECT 'dimension_01', ST_Dimension('TIN(((0 0,1 1,0 1,0 0)))'::geometry); +SELECT 'dimension_02', ST_Dimension('GEOMETRYCOLLECTION(TIN(((0 0,1 1,0 1,0 0))))'::geometry); + +-- ST_Dimension on 3D: closed +SELECT 'dimension_03', ST_Dimension('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry); +SELECT 'dimension_04', ST_Dimension('GEOMETRYCOLLECTION(TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0))))'::geometry); + +-- ST_Dimension on 4D: closed +SELECT 'dimension_05', ST_Dimension('TIN(((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))'::geometry); +SELECT 'dimension_06', ST_Dimension('GEOMETRYCOLLECTION(TIN(((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0))))'::geometry); + +-- ST_Dimension on 3D: invalid polyedron (a single edge is shared 3 times) +SELECT 'dimension_07', ST_Dimension('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,0 1 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry); + +-- ST_Dimension on 3D: invalid polyedron (redundant point inside each face) +SELECT 'dimension_08', ST_Dimension('TIN(((0 0 0,1 0 0,1 0 0,0 0 0)),((0 0 1,1 0 1,1 0 1,0 0 1)),((0 0 2,1 0 2,1 0 2,0 0 2)),((0 0 3,1 0 3,1 0 3,0 0 3)))'::geometry); + +-- ST_NumPatches +SELECT 'numpatches_01', ST_NumPatches('TIN EMPTY'::geometry); +SELECT 'numpatches_02', ST_NumPatches('TIN(((0 0,0 0,0 1,0 0)))'::geometry); +SELECT 'numpatches_03', ST_NumPatches('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry); + +-- ST_PatchN +SELECT 'patchN_01', ST_AsEWKT(ST_patchN('TIN EMPTY'::geometry, 1)); +SELECT 'patchN_02', ST_AsEWKT(ST_patchN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 1)); +SELECT 'patchN_03', ST_AsEWKT(ST_patchN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 0)); +SELECT 'patchN_04', ST_AsEWKT(ST_patchN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 2)); +SELECT 'patchN_05', ST_AsEWKT(ST_patchN('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry, 2)); + +-- ST_NumGeometries +SELECT 'numgeometries_01', ST_NumGeometries('TIN EMPTY'::geometry); +SELECT 'numgeometries_02', ST_NumGeometries('TIN(((0 0,0 0,0 1,0 0)))'::geometry); +SELECT 'numgeometries_03', ST_NumGeometries('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry); + +-- ST_GeometryN +SELECT 'geometryN_01', ST_AsEWKT(ST_GeometryN('TIN EMPTY'::geometry, 1)); +SELECT 'geometryN_02', ST_AsEWKT(ST_GeometryN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 1)); +SELECT 'geometryN_03', ST_AsEWKT(ST_GeometryN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 0)); +SELECT 'geometryN_04', ST_AsEWKT(ST_GeometryN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 2)); diff --git a/regress/core/triangulatedsurface_expected b/regress/core/triangulatedsurface_expected new file mode 100644 index 000000000..ab5d737f8 --- /dev/null +++ b/regress/core/triangulatedsurface_expected @@ -0,0 +1,23 @@ +dimension_01|2 +dimension_02|2 +dimension_03|3 +dimension_04|3 +dimension_05|3 +dimension_06|3 +dimension_07|2 +dimension_08|2 +numpatches_01|0 +numpatches_02|1 +numpatches_03|4 +patchN_01| +patchN_02|TRIANGLE((0 0,0 0,0 1,0 0)) +patchN_03| +patchN_04| +patchN_05|TRIANGLE((0 0 0,0 1 0,1 0 0,0 0 0)) +numgeometries_01|0 +numgeometries_02|1 +numgeometries_03|1 +geometryN_01| +geometryN_02|TIN(((0 0,0 0,0 1,0 0))) +geometryN_03| +geometryN_04| ----------------------------------------------------------------------- Summary of changes: liblwgeom/lwgeom.c | 7 +++- regress/core/tests.mk.in | 1 + regress/core/triangulatedsurface.sql | 40 ++++++++++++++++++++++ ...rface_expected => triangulatedsurface_expected} | 6 ++-- 4 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 regress/core/triangulatedsurface.sql copy regress/core/{polyhedralsurface_expected => triangulatedsurface_expected} (69%) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Jan 21 05:28:38 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 21 Jan 2026 13:28:38 -0000 Subject: [PostGIS] #5989: ST_Distance error on CurvePolygon In-Reply-To: <049.160f5b03509401c2e12090c58b6e5840@osgeo.org> References: <049.160f5b03509401c2e12090c58b6e5840@osgeo.org> Message-ID: <064.a9fc2a074c30eb4c0bf741e8f2e12048@osgeo.org> #5989: ST_Distance error on CurvePolygon ----------------------+--------------------------- Reporter: pramsey | Owner: pramsey Type: defect | Status: reopened Priority: high | Milestone: PostGIS 3.3.9 Component: postgis | Version: 3.3.x Resolution: | Keywords: ----------------------+--------------------------- Changes (by tiiipponen): * resolution: fixed => * status: closed => reopened Comment: Continuation of ticket #5989 ST_Distance error on CurvePolygon The following query should give a distance of about 14.5 m, but the result is 0 m. There is also another, much more complicated example, but hopefully it will also be solved if this one is solved. SELECT ST_Distance( ST_GeomFromText('MULTISURFACE(CURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(25493681.3085 6678739.6419,25493637.8256 6678776.2541,25493599.9716 6678818.6604),(25493599.9716 6678818.6604,25493583.8816 6678839.494,25493590.9591 6678844.9594,25493566.9698 6678851.9051,25493526.5793 6678861.0985,25493487.3853 6678868.2546,25493447.392 6678871.7846,25493429.5033 6678876.6846,25493435.0147 6678857.4594,25493454.9254 6678821.6192,25493452.4867 6678816.1292,25493402.3226 6678828.2153,25493354.7526 6678837.8291,25493349.0217 6678838.9873,25493310.914 6678843.6926,25493306.3784 6678859.9295,25493294.1011 6678858.7864,25493169.9028 6678847.2212,25493127.549 6678843.2773,25493057.8888 6678834.6763,25493017.4547 6678826.7261,25492928.2395 6678821.5524,25492909.1067 6678795.0681,25492946.9544 6678794.8193,25492967.1292 6678794.6866,25493010.8878 6678795.9163,25493111.5564 6678804.3109,25493113.4069 6678799.5694,25493134.2375 6678806.0729),CIRCULARSTRING(25493134.2375 6678806.0729,25493223.038 6678812.0533,25493311.4919 6678802.1948,25493317.3589 6678800.9679,25493323.2107 6678799.6707),(25493323.2107 6678799.6707,25493362.6615 6678792.3924,25493364.6948 6678785.173,25493375.0512 6678781.6008,25493404.9736 6678771.2798),CIRCULARSTRING(25493404.9736 6678771.2798,25493486.8049 6678737.6728,25493566.8862 6678700.0859),(25493566.8862 6678700.0859,25493574.903 6678714.0761,25493600.2214 6678702.8803,25493654.1114 6678670.2493,25493669.7219 6678659.2147,25493677.0288 6678653.353,25493684.6468 6678648.4119,25493724.0447 6678623.7638,25493800.1925 6678583.5847,25493805.6261 6678586.1292,25493811.9258 6678582.3016,25493812.8413 6678583.0522,25493846.581 6678558.6541,25493884.2653 6678531.6272,25493900.9168 6678580.1258,25493830.7852 6678630.9518,25493789.0848 6678661.2736,25493746.1612 6678692.485,25493686.5413 6678735.8369,25493681.3085 6678739.6419))))', 3879) ,ST_GeomFromText('POLYGON ((25492929.752797972 6678919.124091367,25493008.675235115 6678876.783133076,25493098.02917443 6678854.33589699,25493139.669701554 6678977.913508233,25493122.946292613 6679011.427315322,25493050.53388224 6679068.791126598,25493140.33593199 6679140.958135231,25492931.688606273 6679401.2946243705,25492799.289171 6679295.949040241,25492651.5177725 6679115.144800108,25492929.752797972 6678919.124091367))', 3879) ) AS dist -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Wed Jan 21 13:44:58 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 21 Jan 2026 21:44:58 -0000 Subject: [PostGIS] #5998: Ensure postgis_tiger_geocoder packaged tables are created by the extension In-Reply-To: <046.5656718946f98b4130c49108ab22f1a5@osgeo.org> References: <046.5656718946f98b4130c49108ab22f1a5@osgeo.org> Message-ID: <061.087cfe799f35eaac009d235838130d26@osgeo.org> #5998: Ensure postgis_tiger_geocoder packaged tables are created by the extension -----------------------------+---------------------------- Reporter: robe | Owner: robe Type: patch | Status: reopened Priority: medium | Milestone: PostGIS 3.0.12 Component: tiger geocoder | Version: 3.5.x Resolution: | Keywords: -----------------------------+---------------------------- Comment (by evsi): Hi, out of curiosity, is there a reason this fix was not applied to the 3.5 branches? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 22 05:30:39 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 22 Jan 2026 13:30:39 -0000 Subject: [PostGIS] #6031: CG_Extrude /ST_Extrude fails on MULITPOLYGON that has an Empty ring In-Reply-To: <046.ee2c46e94bdcad27088d996cf7d91582@osgeo.org> References: <046.ee2c46e94bdcad27088d996cf7d91582@osgeo.org> Message-ID: <061.77fbd4cc644aa09726ced53d1b4968b4@osgeo.org> #6031: CG_Extrude /ST_Extrude fails on MULITPOLYGON that has an Empty ring ----------------------+----------------------------- Reporter: robe | Owner: Lo?c Bartoletti Type: defect | Status: new Priority: blocker | Milestone: PostGIS SFCGAL Component: sfcgal | Version: 3.5.x Resolution: | Keywords: ----------------------+----------------------------- Comment (by Lo?c Bartoletti): for reference (using SFCGAL master): {{{ SELECT CG_Extrude(ST_GeomFromText('MULTIPOLYGON (((9 9, 9 1, 1 1, 2 4, 7 7, 9 9)), EMPTY)', 4326), 20.1, 20.1, 20.1) As result; ERREUR: lwcollection_construct: mixed dimension geometries: 2/0 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Thu Jan 22 09:22:03 2026 From: git at osgeo.org (git at osgeo.org) Date: Thu, 22 Jan 2026 09:22:03 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-303-g41d995e10 Message-ID: <20260122172205.1F70E1157FA@trac.osgeo.org> 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 41d995e10a9450f5e31e1b2030d64df16c6135cd (commit) via f590847fb9d74a893c8a153cb316fd9d540a1f1e (commit) via 72b446cf811528a5d5972a65a58ab0f76a57a876 (commit) via 01838882f3397befd7c18bdd43659280d8a93637 (commit) via 0349d9a62afb5b9eb88b84480ed96b8fc2256793 (commit) via 19d0109fcea53b479beb9f4303e2f3ebca201e47 (commit) via bdbcdf420959d21840004f5137540660d30663c2 (commit) via 63c8eb031b3dd2a6cb85d3a9d6208167c8d2648d (commit) from da86ae2c0914287fe2914e28aea5360dc8af0131 (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 41d995e10a9450f5e31e1b2030d64df16c6135cd Merge: da86ae2c0 f590847fb Author: Paul Ramsey Date: Thu Jan 22 09:21:43 2026 -0800 Merge branch 'ProjectMutilation-shp2pgsql-core-fix-memleak' commit f590847fb9d74a893c8a153cb316fd9d540a1f1e Author: Lo?c Bartoletti Date: Thu Jun 5 10:30:15 2025 +0200 fix(TriangulatedSurface): TIN can be closed as PolyhedralSurface diff --git a/liblwgeom/lwgeom.c b/liblwgeom/lwgeom.c index c6562b5fa..b1a557feb 100644 --- a/liblwgeom/lwgeom.c +++ b/liblwgeom/lwgeom.c @@ -1451,8 +1451,13 @@ int lwgeom_dimension(const LWGEOM *geom) case CURVEPOLYTYPE: case MULTISURFACETYPE: case MULTIPOLYGONTYPE: - case TINTYPE: return 2; + case TINTYPE: + { + /* A closed tin surface contains a volume. */ + int closed = lwtin_is_closed((LWTIN*)geom); + return ( closed ? 3 : 2 ); + } case POLYHEDRALSURFACETYPE: { /* A closed polyhedral surface contains a volume. */ commit 72b446cf811528a5d5972a65a58ab0f76a57a876 Author: Lo?c Bartoletti Date: Thu Jun 5 10:29:41 2025 +0200 test(TriangulatedSurface): Add tests diff --git a/regress/core/tests.mk.in b/regress/core/tests.mk.in index a959ad92f..a89b77bfc 100644 --- a/regress/core/tests.mk.in +++ b/regress/core/tests.mk.in @@ -119,6 +119,7 @@ TESTS += \ $(top_srcdir)/regress/core/temporal \ $(top_srcdir)/regress/core/temporal_knn \ $(top_srcdir)/regress/core/tickets \ + $(top_srcdir)/regress/core/triangulatedsurface \ $(top_srcdir)/regress/core/twkb \ $(top_srcdir)/regress/core/typmod \ $(top_srcdir)/regress/core/wkb \ diff --git a/regress/core/triangulatedsurface.sql b/regress/core/triangulatedsurface.sql new file mode 100644 index 000000000..cf0892e49 --- /dev/null +++ b/regress/core/triangulatedsurface.sql @@ -0,0 +1,40 @@ +-- ST_Dimension on 2D: not closed +SELECT 'dimension_01', ST_Dimension('TIN(((0 0,1 1,0 1,0 0)))'::geometry); +SELECT 'dimension_02', ST_Dimension('GEOMETRYCOLLECTION(TIN(((0 0,1 1,0 1,0 0))))'::geometry); + +-- ST_Dimension on 3D: closed +SELECT 'dimension_03', ST_Dimension('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry); +SELECT 'dimension_04', ST_Dimension('GEOMETRYCOLLECTION(TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0))))'::geometry); + +-- ST_Dimension on 4D: closed +SELECT 'dimension_05', ST_Dimension('TIN(((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))'::geometry); +SELECT 'dimension_06', ST_Dimension('GEOMETRYCOLLECTION(TIN(((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0))))'::geometry); + +-- ST_Dimension on 3D: invalid polyedron (a single edge is shared 3 times) +SELECT 'dimension_07', ST_Dimension('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,0 1 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry); + +-- ST_Dimension on 3D: invalid polyedron (redundant point inside each face) +SELECT 'dimension_08', ST_Dimension('TIN(((0 0 0,1 0 0,1 0 0,0 0 0)),((0 0 1,1 0 1,1 0 1,0 0 1)),((0 0 2,1 0 2,1 0 2,0 0 2)),((0 0 3,1 0 3,1 0 3,0 0 3)))'::geometry); + +-- ST_NumPatches +SELECT 'numpatches_01', ST_NumPatches('TIN EMPTY'::geometry); +SELECT 'numpatches_02', ST_NumPatches('TIN(((0 0,0 0,0 1,0 0)))'::geometry); +SELECT 'numpatches_03', ST_NumPatches('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry); + +-- ST_PatchN +SELECT 'patchN_01', ST_AsEWKT(ST_patchN('TIN EMPTY'::geometry, 1)); +SELECT 'patchN_02', ST_AsEWKT(ST_patchN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 1)); +SELECT 'patchN_03', ST_AsEWKT(ST_patchN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 0)); +SELECT 'patchN_04', ST_AsEWKT(ST_patchN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 2)); +SELECT 'patchN_05', ST_AsEWKT(ST_patchN('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry, 2)); + +-- ST_NumGeometries +SELECT 'numgeometries_01', ST_NumGeometries('TIN EMPTY'::geometry); +SELECT 'numgeometries_02', ST_NumGeometries('TIN(((0 0,0 0,0 1,0 0)))'::geometry); +SELECT 'numgeometries_03', ST_NumGeometries('TIN(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))'::geometry); + +-- ST_GeometryN +SELECT 'geometryN_01', ST_AsEWKT(ST_GeometryN('TIN EMPTY'::geometry, 1)); +SELECT 'geometryN_02', ST_AsEWKT(ST_GeometryN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 1)); +SELECT 'geometryN_03', ST_AsEWKT(ST_GeometryN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 0)); +SELECT 'geometryN_04', ST_AsEWKT(ST_GeometryN('TIN(((0 0,0 0,0 1,0 0)))'::geometry, 2)); diff --git a/regress/core/triangulatedsurface_expected b/regress/core/triangulatedsurface_expected new file mode 100644 index 000000000..ab5d737f8 --- /dev/null +++ b/regress/core/triangulatedsurface_expected @@ -0,0 +1,23 @@ +dimension_01|2 +dimension_02|2 +dimension_03|3 +dimension_04|3 +dimension_05|3 +dimension_06|3 +dimension_07|2 +dimension_08|2 +numpatches_01|0 +numpatches_02|1 +numpatches_03|4 +patchN_01| +patchN_02|TRIANGLE((0 0,0 0,0 1,0 0)) +patchN_03| +patchN_04| +patchN_05|TRIANGLE((0 0 0,0 1 0,1 0 0,0 0 0)) +numgeometries_01|0 +numgeometries_02|1 +numgeometries_03|1 +geometryN_01| +geometryN_02|TIN(((0 0,0 0,0 1,0 0))) +geometryN_03| +geometryN_04| commit 01838882f3397befd7c18bdd43659280d8a93637 Author: Sandro Santilli Date: Fri Feb 4 21:43:45 2022 +0100 Improve error message from libproj failures diff --git a/libpgcommon/lwgeom_transform.c b/libpgcommon/lwgeom_transform.c index 1fe21fa16..61975dc0f 100644 --- a/libpgcommon/lwgeom_transform.c +++ b/libpgcommon/lwgeom_transform.c @@ -390,7 +390,6 @@ AddToPROJSRSCache(PROJSRSCache *PROJCache, int32_t srid_from, int32_t srid_to) oldContext = MemoryContextSwitchTo(PROJCache->PROJSRSCacheContext); - LWPROJ *projection = NULL; /* Try combinations of AUTH_NAME:AUTH_SRID/SRTEXT/PROJ4TEXT until we find */ /* one that gives us a usable transform. Note that we prefer */ @@ -410,7 +409,13 @@ AddToPROJSRSCache(PROJSRSCache *PROJCache, int32_t srid_from, int32_t srid_to) } if (!projection) { - elog(ERROR, "could not form projection (LWPROJ) from 'srid=%d' to 'srid=%d'", srid_from, srid_to); + elog(ERROR, + "could not form projection (LWPROJ) from srid %d ('%s') to srid %d ('%s')", + srid_from, + ( pj_from_str ? pj_from_str : "(null)" ), + srid_to, + ( pj_to_str ? pj_to_str : "(null)" ) + ); return NULL; } commit 0349d9a62afb5b9eb88b84480ed96b8fc2256793 Author: Paul Ramsey Date: Tue Jan 20 12:35:16 2026 -0800 NEWS entry for GH-839 diff --git a/NEWS b/NEWS index 9e96fdbe3..43c732569 100644 --- a/NEWS +++ b/NEWS @@ -25,6 +25,7 @@ xxxx/xx/xx - #5109, Document the meaning of topology.next_left_edge and topology.next_right_edge links (Darafei Praliaskouski) - #5889, [topology] Include representative locations in topology build errors (Darafei Praliaskouski) - #2614, Use GEOSPreparedDistance and caching to accelerate ST_DWithin (Paul Ramsey) + - GH-839, ST_Multi support for TIN and surfaces (Luca Bartoletti) * Bug Fixes * commit 19d0109fcea53b479beb9f4303e2f3ebca201e47 Author: Lo?c Bartoletti Date: Fri Dec 19 07:30:24 2025 +0100 Convert PolyhedralSurface/TIN to MultiPolygon diff --git a/liblwgeom/lwgeom.c b/liblwgeom/lwgeom.c index a2d65dc0f..c6562b5fa 100644 --- a/liblwgeom/lwgeom.c +++ b/liblwgeom/lwgeom.c @@ -414,6 +414,43 @@ lwgeom_as_multi(const LWGEOM *lwgeom) type = lwgeom->type; + /* + * PolyhedralSurface and MultiPolygon have identical structures + * (both are collections of LWPOLY). Convert PolyhedralSurface + * to MultiPolygon by cloning and changing the type. + */ + if (type == POLYHEDRALSURFACETYPE) + { + ogeom = (LWGEOM *)lwcollection_clone((LWCOLLECTION *)lwgeom); + ogeom->type = MULTIPOLYGONTYPE; + return ogeom; + } + + /* + * TIN to MultiPolygon: convert each triangle to a polygon. + * LWTRIANGLE and LWLINE have compatible memory layouts, + * so we can use lwpoly_from_lwlines to create polygons. + */ + if (type == TINTYPE) + { + uint32_t i; + LWCOLLECTION *col = (LWCOLLECTION *)lwgeom; + LWMPOLY *mpoly = lwmpoly_construct_empty(lwgeom->srid, + FLAGS_GET_Z(lwgeom->flags), + FLAGS_GET_M(lwgeom->flags)); + + for (i = 0; i < col->ngeoms; i++) + { + LWPOLY *poly = lwpoly_from_lwlines((LWLINE *)col->geoms[i], 0, NULL); + lwmpoly_add_lwpoly(mpoly, poly); + } + + if (lwgeom->bbox) + mpoly->bbox = gbox_clone(lwgeom->bbox); + + return lwmpoly_as_lwgeom(mpoly); + } + if ( ! MULTITYPE[type] ) return lwgeom_clone(lwgeom); if( lwgeom_is_empty(lwgeom) ) diff --git a/postgis/lwgeom_functions_basic.c b/postgis/lwgeom_functions_basic.c index ed5f076f2..0cfa08da7 100644 --- a/postgis/lwgeom_functions_basic.c +++ b/postgis/lwgeom_functions_basic.c @@ -532,7 +532,6 @@ Datum LWGEOM_force_multi(PG_FUNCTION_ARGS) case COLLECTIONTYPE: case MULTICURVETYPE: case MULTISURFACETYPE: - case TINTYPE: PG_RETURN_POINTER(geom); default: break; diff --git a/regress/core/tickets.sql b/regress/core/tickets.sql index eec195810..4c1fcb862 100644 --- a/regress/core/tickets.sql +++ b/regress/core/tickets.sql @@ -67,6 +67,14 @@ SELECT '#80', ST_AsText(ST_Multi('MULTILINESTRING((0 0,1 1))')); -- #83 -- SELECT '#83', ST_AsText(ST_Multi(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'))); +-- ST_Multi with PolyhedralSurface -> MultiPolygon +SELECT 'ST_Multi_psurface', ST_GeometryType(ST_Multi('POLYHEDRALSURFACE Z(((0 0 0,0 1 0,1 1 0,1 0 0,0 0 0)),((0 0 0,0 1 0,0 1 1,0 0 1,0 0 0)))'::geometry)); +SELECT 'ST_Multi_psurface_empty', ST_GeometryType(ST_Multi('POLYHEDRALSURFACE EMPTY'::geometry)); + +-- ST_Multi with TIN -> MultiPolygon +SELECT 'ST_Multi_tin', ST_GeometryType(ST_Multi('TIN Z(((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 1 0,0 0 0)))'::geometry)); +SELECT 'ST_Multi_tin_empty', ST_GeometryType(ST_Multi('TIN EMPTY'::geometry)); + -- #85 -- SELECT '#85', ST_Distance(ST_GeomFromText('CIRCULARSTRING(220268 150415,220227 150505,220227 150406)'), ST_Point(220268, 150415)); diff --git a/regress/core/tickets_expected b/regress/core/tickets_expected index d8f7f5cf5..76ea65e71 100644 --- a/regress/core/tickets_expected +++ b/regress/core/tickets_expected @@ -14,6 +14,10 @@ ERROR: lwgeom_longitude_shift: unsupported geom type: CircularString #73|GEOMETRYCOLLECTION(CIRCULARSTRING(1 1,2 3,4 5,6 7,5 6)) #80|MULTILINESTRING((0 0,1 1)) #83|MULTICURVE(CIRCULARSTRING(220268 150415,220227 150505,220227 150406)) +ST_Multi_psurface|ST_MultiPolygon +ST_Multi_psurface_empty|ST_MultiPolygon +ST_Multi_tin|ST_MultiPolygon +ST_Multi_tin_empty|ST_MultiPolygon #85|0 #112|GEOMETRYCOLLECTION(POINT(-10 50)) ERROR: Input geometry does not have a measure dimension commit bdbcdf420959d21840004f5137540660d30663c2 Author: Maksim Korotkov Date: Tue Jan 20 17:51:57 2026 +0300 Avoid potential NULL dereference in std_free() After check against NULL the pointer std -> pagc_p was used unsafely. Found by PostgresPro with Svace Static Analyzer. Fixes: c6091a4bb ("Prep to move address_standardizer into extensions folder") Signed-off-by: Maksim Korotkov diff --git a/extensions/address_standardizer/standard.c b/extensions/address_standardizer/standard.c index 4fe63e3ed..9fed23411 100644 --- a/extensions/address_standardizer/standard.c +++ b/extensions/address_standardizer/standard.c @@ -379,13 +379,15 @@ void std_free(STANDARDIZER *std) { if ( std == NULL ) return; DBG("Calling close_stand_process"); - if ( std -> pagc_p != NULL ) close_stand_process( std -> pagc_p ) ; - if ( std -> pagc_p -> process_errors != NULL ) { - DBG("Calling close_errors"); - close_errors( std -> pagc_p -> process_errors ); - DBG("Calling FREE_AND_NULL"); - FREE_AND_NULL( std -> pagc_p ) ; - } + if ( std -> pagc_p != NULL ) { + close_stand_process( std -> pagc_p ) ; + if ( std -> pagc_p -> process_errors != NULL ) { + DBG("Calling close_errors"); + close_errors( std -> pagc_p -> process_errors ); + } + DBG("Calling FREE_AND_NULL"); + FREE_AND_NULL( std -> pagc_p ); + } DBG("Calling close_stand_context"); close_stand_context( std -> misc_stand ); DBG("Calling free"); commit 63c8eb031b3dd2a6cb85d3a9d6208167c8d2648d Author: Maksim Korotkov Date: Thu Jan 22 13:39:09 2026 +0300 Add missed deallocation in GeneratePointGeometry() In error handling return error code without freeing the lwgeom pointer. Found by PostgresPro. Fixes: 1ae5b8f68 ("ptarray_free now frees the serialized_ptlist, unless FLAGS_GET_READONLY is set.") Signed-off-by: Maksim Korotkov diff --git a/loader/shp2pgsql-core.c b/loader/shp2pgsql-core.c index d13f52451..8db842117 100644 --- a/loader/shp2pgsql-core.c +++ b/loader/shp2pgsql-core.c @@ -300,6 +300,7 @@ GeneratePointGeometry(SHPLOADERSTATE *state, SHPObject *obj, char **geometry, in if ( !mem ) { snprintf(state->message, SHPLOADERMSGLEN, "unable to write geometry"); + lwgeom_free(lwgeom); return SHPLOADERERR; } ----------------------------------------------------------------------- Summary of changes: loader/shp2pgsql-core.c | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- PostGIS From trac at osgeo.org Fri Jan 23 03:36:13 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 23 Jan 2026 11:36:13 -0000 Subject: [PostGIS] #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables In-Reply-To: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> References: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> Message-ID: <065.407d19d04d439763caee6a5c76d17272@osgeo.org> #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables --------------------------------+--------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: defect | Status: new Priority: blocker | Milestone: Component: postgis | Version: master Resolution: | Keywords: --------------------------------+--------------------- Comment (by Lars Aksel Opsahl): The problem seems not to be related to public.geometry_columns changing OID {{{ [local] lop at t1=# SELECT 'public.geometry_columns'::regclass::oid; oid ----------- 188950672 (1 row) [local] lop at t1=# select SRID from public.geometry_columns where (f_table_schema = 't1') and f_table_name = 'edge_data' and f_geometry_column = 'geom'; ERROR: XX000: could not open relation with OID 188967127 LOCATION: relation_open, relation.c:62 [local] lop at t1=# SELECT 'public.geometry_columns'::regclass::oid; ERROR: 25P02: current transaction is aborted, commands ignored until end of transaction block LOCATION: exec_simple_query, postgres.c:1144 [local] lop at t1=# \q lop at Larss-MacBook-Pro-2 rmp_ws_03 % psql t1 Null display is "[NULL]". Expanded display is used automatically. psql (16.10 (Homebrew)) Type "help" for help. [local] lop at t1=# SELECT 'public.geometry_columns'::regclass::oid; oid ----------- 188950672 (1 row) }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Jan 23 04:00:13 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 23 Jan 2026 12:00:13 -0000 Subject: [PostGIS] #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables In-Reply-To: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> References: <050.410b70db9c436ac53a1e23f89f1c69ff@osgeo.org> Message-ID: <065.62a87737c6ea052ae927dc674ee31dfb@osgeo.org> #6038: Using public.geometry_columns causes 'could not open relation with OID 188954716' after drop geometry tables --------------------------------+--------------------- Reporter: Lars Aksel Opsahl | Owner: pramsey Type: defect | Status: new Priority: blocker | Milestone: Component: postgis | Version: master Resolution: | Keywords: --------------------------------+--------------------- Comment (by Lars Aksel Opsahl): I picked out the values of oid's before running ERROR: XX000: could not open relation with OID 188967326 and that OID was connected to "gsk_utdata_25_784.edge_attributes" table . {{{ \d gsk_utdata_25_784.edge_attributes Unlogged table "gsk_utdata_25_784.edge_attributes" Column | Type | Collation | Nullable | Default ---------+-----------------------+-----------+----------+--------------------------------------------------------------- id | integer | | not null | nextval('gsk_utdata_25_784.edge_attributes_id_seq'::regclass) id_test | integer | | | geo | topology.topogeometry | | | Indexes: "edge_attributes_pkey" PRIMARY KEY, btree (id) Check constraints: "check_topogeom_geo" CHECK ((geo).topology_id = 3 AND (geo).layer_id = 1 AND (geo).type = 2) }}} To reproduce the error it was enought to drop this table. {{{ DROP TABLE gsk_utdata_25_784.edge_attributes CASCADE ; }}} And the command in session did hang {{{ select SRID from public.geometry_columns where (f_table_schema = 't1') and f_table_name = 'edge_data' and f_geometry_column = 'geom'; }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Fri Jan 23 11:40:14 2026 From: git at osgeo.org (git at osgeo.org) Date: Fri, 23 Jan 2026 11:40:14 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-305-g3b3488ddf Message-ID: <20260123194015.4965D11746D@trac.osgeo.org> 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 3b3488ddf4699a527092417067408b85f84d9e6c (commit) via 19f776855f7487527c129ef96ca413dc5492b222 (commit) from 41d995e10a9450f5e31e1b2030d64df16c6135cd (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 3b3488ddf4699a527092417067408b85f84d9e6c Merge: 41d995e10 19f776855 Author: Paul Ramsey Date: Fri Jan 23 11:40:09 2026 -0800 Merge branch 'ProjectMutilation-gml_is_srs_axis_order_gis_friendly-add-malloc-res-check' commit 19f776855f7487527c129ef96ca413dc5492b222 Author: Maksim Korotkov Date: Fri Jan 23 22:00:56 2026 +0300 Add malloc handling in gml_is_srs_axis_order_gis_friendly() If malloc fails, srtext_horizontal is NULL. This is an unlikely event but it can lead to a dereference of a null pointer. Signed-off-by: Maksim Korotkov diff --git a/postgis/lwgeom_in_gml.c b/postgis/lwgeom_in_gml.c index ae0b96411..5f3a5acb6 100644 --- a/postgis/lwgeom_in_gml.c +++ b/postgis/lwgeom_in_gml.c @@ -405,6 +405,12 @@ gml_is_srs_axis_order_gis_friendly(int32_t srid) { char* ptr; char* srtext_horizontal = (char*) malloc(strlen(srtext) + 1); + + if (!srtext_horizontal) + { + SPI_finish(); + lwpgerror("gml_is_srs_axis_order_gis_friendly: could not allocate memory"); + } strcpy(srtext_horizontal, srtext); /* Remove the VERT_CS part if we are in a COMPD_CS */ ----------------------------------------------------------------------- Summary of changes: postgis/lwgeom_in_gml.c | 6 ++++++ 1 file changed, 6 insertions(+) hooks/post-receive -- PostGIS From trac at osgeo.org Sun Jan 25 23:32:20 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 07:32:20 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.f218181bed68533a2df27ca9ebc20b3f@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by Lars Aksel Opsahl): Should this case be marked as a Topology error when running ValidateTopology ? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Sun Jan 25 23:35:34 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 07:35:34 -0000 Subject: [PostGIS] #6039: address_standardizer PG_MODULE_MAGIC macro is missing Message-ID: <046.110a179bdbba141d17313efe6f687e6e@osgeo.org> #6039: address_standardizer PG_MODULE_MAGIC macro is missing ---------------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: new Priority: blocker | Milestone: PostGIS 3.7.0 Component: pagc_address_parser | Version: 3.5.x Keywords: | ---------------------------------+--------------------------- I'm seeing an error on winnie when testing address_standardizer and also on my local machine when testing pg14. {{{ ERROR: incompatible library "C:/ming64/projects/postgresql/rel/pg14w64/lib/address_standardizer-3.7.dll": missing magic block HINT: Extension libraries are required to use the PG_MODULE_MAGIC macro. }}} I haven't tested on pg16 and above to see if it's the same issue. Seems to be only address standardizer with this issue. I assume it's related to #6036 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Sun Jan 25 23:53:54 2026 From: git at osgeo.org (git at osgeo.org) Date: Sun, 25 Jan 2026 23:53:54 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-306-gac06bce19 Message-ID: <20260126075354.A5A3618CFE0@trac.osgeo.org> 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 ac06bce19b443a65eeda3eb14734804373cb1773 (commit) from 3b3488ddf4699a527092417067408b85f84d9e6c (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 ac06bce19b443a65eeda3eb14734804373cb1773 Author: Regina Obe Date: Mon Jan 26 02:53:22 2026 -0500 Put in PG_MODULE_MAGIC in address_standardizer for PG < 18 Closes #6039 for PostGIS 3.7.0 diff --git a/extensions/address_standardizer/address_standardizer.c b/extensions/address_standardizer/address_standardizer.c index f4170b4a7..5d4483d32 100644 --- a/extensions/address_standardizer/address_standardizer.c +++ b/extensions/address_standardizer/address_standardizer.c @@ -21,6 +21,8 @@ PG_MODULE_MAGIC_EXT( .name = "address_standardizer", .version = POSTGIS_LIB_VERSION ); +#else + PG_MODULE_MAGIC; #endif Datum debug_standardize_address(PG_FUNCTION_ARGS); ----------------------------------------------------------------------- Summary of changes: extensions/address_standardizer/address_standardizer.c | 2 ++ 1 file changed, 2 insertions(+) hooks/post-receive -- PostGIS From trac at osgeo.org Sun Jan 25 23:54:03 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 07:54:03 -0000 Subject: [PostGIS] #6039: address_standardizer PG_MODULE_MAGIC macro is missing In-Reply-To: <046.110a179bdbba141d17313efe6f687e6e@osgeo.org> References: <046.110a179bdbba141d17313efe6f687e6e@osgeo.org> Message-ID: <061.30f39498e03189a00342c4bd2f26feea@osgeo.org> #6039: address_standardizer PG_MODULE_MAGIC macro is missing ----------------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: closed Priority: blocker | Milestone: PostGIS 3.7.0 Component: pagc_address_parser | Version: 3.5.x Resolution: fixed | Keywords: ----------------------------------+--------------------------- Changes (by Regina Obe ): * resolution: => fixed * status: new => closed Comment: In [changeset:"ac06bce19b443a65eeda3eb14734804373cb1773/git" ac06bce1/git]: {{{#!CommitTicketReference repository="git" revision="ac06bce19b443a65eeda3eb14734804373cb1773" Put in PG_MODULE_MAGIC in address_standardizer for PG < 18 Closes #6039 for PostGIS 3.7.0 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 26 07:21:49 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 15:21:49 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.ca0f376773e04588dfab0fb66b47acaa@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by strk): Replying to [comment:10 Lars Aksel Opsahl]: > Should this case be marked as a Topology error when running ValidateTopology ? I don't think so, no. The topology is valid, only it doesn't have the characteristics you'd like it to have. Having a function to find these unwanted characteristics would probably be useful, like the one suggested in #5274 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 26 11:20:23 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 19:20:23 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.94a9e9da7c1265fb02b190f0bed74dd9@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by strk): It's interesting to note that calling TopoGeo_addPoint with that close-by vertex does already implement the edge-snapping and merge: > select TopoGeo_addPoint('t6034', ( select ST_PointN(geom, 2) from t6034.edge_data where edge_id = 2 ) ); So another implementation could be to inspect all vertices of the newly added edges and create a node there if they are within tolerance from edges NOT having them as vertices. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 26 11:32:19 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 19:32:19 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.2fda35224e805788ca298381ae0b873d@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by strk): Simplified test, with less vertices: {{{ SELECT topology.CreateTopology ('t6034', 0 , 1e-06); -- Add edge 1 SELECT * FROM topology.TopoGeo_addLinestring('t6034', 'LINESTRING(15.030538394371618 67.34781748364921,15.026524176871614 67.34727999614921,15.030014036871616 67.3471448261492,15.031642706871615 67.34714451614921)' ); -- Add edge 2 SELECT * FROM topology.TopoGeo_addLinestring('t6034', 'LINESTRING(15.031642706871615 67.34714451614921,15.030538394371618 67.34714472634334,15.030538394371618 67.34781748364921)' ); -- This would "snap" edge 1 --select TopoGeo_addPoint('t6034', ( select ST_PointN(geom, 2) from t6034.edge_data where edge_id = 2 ) ); }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 26 11:34:12 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 19:34:12 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.756c04c906fc07b26866e2eb3e8298b9@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by strk): The distance between the second vertex of edge 2 and edge 1 is smaller than the tolerance: {{{ strk at strk=# select ST_Distance(ST_PointN(e2.geom, 2), e1.geom) from t6034.edge e1, t6034.edge e2 where e1.edge_id = 1 and e2.edge_id = 2; st_distance ------------------------ 6.4494739390198825e-15 (1 row) }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Jan 26 12:28:04 2026 From: git at osgeo.org (git at osgeo.org) Date: Mon, 26 Jan 2026 12:28:04 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-309-g2861e6f49 Message-ID: <20260126202804.89A46225AF@trac.osgeo.org> 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 2861e6f495ce37385f33b43abd75212cfee8126a (commit) via 18c011f890ca8083b88783892278d57dbc34e8fc (commit) via b04c70aeb8fd672042024a10e476855c8a32892f (commit) from ac06bce19b443a65eeda3eb14734804373cb1773 (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 2861e6f495ce37385f33b43abd75212cfee8126a Merge: ac06bce19 18c011f89 Author: Paul Ramsey Date: Mon Jan 26 12:27:56 2026 -0800 Merge branch 'ProjectMutilation-sgp2pgsql-gui-fix-use-after-free' commit 18c011f890ca8083b88783892278d57dbc34e8fc Author: Regina Obe Date: Mon Jan 26 02:53:22 2026 -0500 Put in PG_MODULE_MAGIC in address_standardizer for PG < 18 Closes #6039 for PostGIS 3.7.0 diff --git a/extensions/address_standardizer/address_standardizer.c b/extensions/address_standardizer/address_standardizer.c index f4170b4a7..5d4483d32 100644 --- a/extensions/address_standardizer/address_standardizer.c +++ b/extensions/address_standardizer/address_standardizer.c @@ -21,6 +21,8 @@ PG_MODULE_MAGIC_EXT( .name = "address_standardizer", .version = POSTGIS_LIB_VERSION ); +#else + PG_MODULE_MAGIC; #endif Datum debug_standardize_address(PG_FUNCTION_ARGS); commit b04c70aeb8fd672042024a10e476855c8a32892f Author: Maksim Korotkov Date: Mon Jan 26 12:30:55 2026 +0300 shp2pgsql-gui: fix use after free The ShpLoaderDestroy() free the pointer state, that was dereferenced later. Found by PostgresPro with Svace Static Analyzer. Fixes: 4daaecbc8 ("Commit reworked version of shp2pgsql-gui to the repository.") Signed-off-by: Maksim Korotkov diff --git a/loader/shp2pgsql-gui.c b/loader/shp2pgsql-gui.c index 847e69af7..00ffda526 100644 --- a/loader/shp2pgsql-gui.c +++ b/loader/shp2pgsql-gui.c @@ -1215,6 +1215,7 @@ validate_remote_loader_columns(SHPLOADERCONFIG *config, PGresult *result) { pgui_logf(_("Warning: Could not load shapefile %s"), config->shp_file); ShpLoaderDestroy(state); + return SHPLOADERERR; } /* Find each column based upon its name and then validate type separately... */ ----------------------------------------------------------------------- Summary of changes: loader/shp2pgsql-gui.c | 1 + 1 file changed, 1 insertion(+) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Jan 26 12:28:17 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 20:28:17 -0000 Subject: [PostGIS] #6039: address_standardizer PG_MODULE_MAGIC macro is missing In-Reply-To: <046.110a179bdbba141d17313efe6f687e6e@osgeo.org> References: <046.110a179bdbba141d17313efe6f687e6e@osgeo.org> Message-ID: <061.22509e0eb2bfef5b5e9f6d3e54f6bef8@osgeo.org> #6039: address_standardizer PG_MODULE_MAGIC macro is missing ----------------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: closed Priority: blocker | Milestone: PostGIS 3.7.0 Component: pagc_address_parser | Version: 3.5.x Resolution: fixed | Keywords: ----------------------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"18c011f890ca8083b88783892278d57dbc34e8fc/git" 18c011f8/git]: {{{#!CommitTicketReference repository="git" revision="18c011f890ca8083b88783892278d57dbc34e8fc" Put in PG_MODULE_MAGIC in address_standardizer for PG < 18 Closes #6039 for PostGIS 3.7.0 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Jan 26 12:35:08 2026 From: git at osgeo.org (git at osgeo.org) Date: Mon, 26 Jan 2026 12:35:08 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-313-ga499e6aad Message-ID: <20260126203508.90B9922A63@trac.osgeo.org> 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 a499e6aad103ecd73be69eca090ab50db9d6bd4f (commit) via ccf2a8ae4a1c40316f8096ca339a25abb59be9bc (commit) via 18d4a506c2ab4048b8421dd92f4fc30083ea84be (commit) via f07827d46867580713eff4d4bc3be8e0fbd85dab (commit) from 2861e6f495ce37385f33b43abd75212cfee8126a (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 a499e6aad103ecd73be69eca090ab50db9d6bd4f Merge: 2861e6f49 ccf2a8ae4 Author: Paul Ramsey Date: Mon Jan 26 12:34:51 2026 -0800 Merge branch 'ProjectMutilation-geography_centroid-replace-null-check' commit ccf2a8ae4a1c40316f8096ca339a25abb59be9bc Author: Maksim Korotkov Date: Mon Jan 26 12:30:55 2026 +0300 shp2pgsql-gui: fix use after free The ShpLoaderDestroy() free the pointer state, that was dereferenced later. Found by PostgresPro with Svace Static Analyzer. Fixes: 4daaecbc8 ("Commit reworked version of shp2pgsql-gui to the repository.") Signed-off-by: Maksim Korotkov diff --git a/loader/shp2pgsql-gui.c b/loader/shp2pgsql-gui.c index 847e69af7..00ffda526 100644 --- a/loader/shp2pgsql-gui.c +++ b/loader/shp2pgsql-gui.c @@ -1215,6 +1215,7 @@ validate_remote_loader_columns(SHPLOADERCONFIG *config, PGresult *result) { pgui_logf(_("Warning: Could not load shapefile %s"), config->shp_file); ShpLoaderDestroy(state); + return SHPLOADERERR; } /* Find each column based upon its name and then validate type separately... */ commit 18d4a506c2ab4048b8421dd92f4fc30083ea84be Author: Regina Obe Date: Mon Jan 26 02:53:22 2026 -0500 Put in PG_MODULE_MAGIC in address_standardizer for PG < 18 Closes #6039 for PostGIS 3.7.0 diff --git a/extensions/address_standardizer/address_standardizer.c b/extensions/address_standardizer/address_standardizer.c index f4170b4a7..5d4483d32 100644 --- a/extensions/address_standardizer/address_standardizer.c +++ b/extensions/address_standardizer/address_standardizer.c @@ -21,6 +21,8 @@ PG_MODULE_MAGIC_EXT( .name = "address_standardizer", .version = POSTGIS_LIB_VERSION ); +#else + PG_MODULE_MAGIC; #endif Datum debug_standardize_address(PG_FUNCTION_ARGS); commit f07827d46867580713eff4d4bc3be8e0fbd85dab Author: Maksim Korotkov Date: Mon Jan 26 17:41:52 2026 +0300 Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov diff --git a/postgis/geography_centroid.c b/postgis/geography_centroid.c index 386e029ba..8a4881671 100644 --- a/postgis/geography_centroid.c +++ b/postgis/geography_centroid.c @@ -63,13 +63,13 @@ Datum geography_centroid(PG_FUNCTION_ARGS) /* Get our geometry object loaded into memory. */ g = PG_GETARG_GSERIALIZED_P(0); - lwgeom = lwgeom_from_gserialized(g); if (g == NULL) { PG_RETURN_NULL(); } + lwgeom = lwgeom_from_gserialized(g); srid = lwgeom_get_srid(lwgeom); /* on empty input, return empty output */ ----------------------------------------------------------------------- Summary of changes: postgis/geography_centroid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Jan 26 12:35:11 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 20:35:11 -0000 Subject: [PostGIS] #2951: ST_Centroid for geography In-Reply-To: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> References: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> Message-ID: <064.c284fd75f408b975889dc18027a1d305@osgeo.org> #2951: ST_Centroid for geography --------------------------+--------------------------- Reporter: Mike Taves | Owner: robe Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS 2.4.0 Component: liblwgeom | Version: Resolution: fixed | Keywords: --------------------------+--------------------------- Comment (by Maksim Korotkov ): In [changeset:"f07827d46867580713eff4d4bc3be8e0fbd85dab/git" f07827d4/git]: {{{#!CommitTicketReference repository="git" revision="f07827d46867580713eff4d4bc3be8e0fbd85dab" Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Mon Jan 26 12:35:11 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 20:35:11 -0000 Subject: [PostGIS] #6039: address_standardizer PG_MODULE_MAGIC macro is missing In-Reply-To: <046.110a179bdbba141d17313efe6f687e6e@osgeo.org> References: <046.110a179bdbba141d17313efe6f687e6e@osgeo.org> Message-ID: <061.6dac38718beb15e7fe7ce424eeed48dc@osgeo.org> #6039: address_standardizer PG_MODULE_MAGIC macro is missing ----------------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: closed Priority: blocker | Milestone: PostGIS 3.7.0 Component: pagc_address_parser | Version: 3.5.x Resolution: fixed | Keywords: ----------------------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"18d4a506c2ab4048b8421dd92f4fc30083ea84be/git" 18d4a506/git]: {{{#!CommitTicketReference repository="git" revision="18d4a506c2ab4048b8421dd92f4fc30083ea84be" Put in PG_MODULE_MAGIC in address_standardizer for PG < 18 Closes #6039 for PostGIS 3.7.0 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Jan 26 12:38:44 2026 From: git at osgeo.org (git at osgeo.org) Date: Mon, 26 Jan 2026 12:38:44 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-17-gd063e2a19 Message-ID: <20260126203845.0133F2341B@trac.osgeo.org> 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.6 has been updated via d063e2a19fa045818bdc226ec8da6dbf155d6310 (commit) from ba50bdfaa929b9bef44024a941fdf2472b10e9d6 (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 d063e2a19fa045818bdc226ec8da6dbf155d6310 Author: Maksim Korotkov Date: Mon Jan 26 17:41:52 2026 +0300 Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov diff --git a/postgis/geography_centroid.c b/postgis/geography_centroid.c index 386e029ba..8a4881671 100644 --- a/postgis/geography_centroid.c +++ b/postgis/geography_centroid.c @@ -63,13 +63,13 @@ Datum geography_centroid(PG_FUNCTION_ARGS) /* Get our geometry object loaded into memory. */ g = PG_GETARG_GSERIALIZED_P(0); - lwgeom = lwgeom_from_gserialized(g); if (g == NULL) { PG_RETURN_NULL(); } + lwgeom = lwgeom_from_gserialized(g); srid = lwgeom_get_srid(lwgeom); /* on empty input, return empty output */ ----------------------------------------------------------------------- Summary of changes: postgis/geography_centroid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Jan 26 12:38:47 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 20:38:47 -0000 Subject: [PostGIS] #2951: ST_Centroid for geography In-Reply-To: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> References: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> Message-ID: <064.6431ba6943c8adb73ef1b0b650a6283a@osgeo.org> #2951: ST_Centroid for geography --------------------------+--------------------------- Reporter: Mike Taves | Owner: robe Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS 2.4.0 Component: liblwgeom | Version: Resolution: fixed | Keywords: --------------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"d063e2a19fa045818bdc226ec8da6dbf155d6310/git" d063e2a/git]: {{{#!CommitTicketReference repository="git" revision="d063e2a19fa045818bdc226ec8da6dbf155d6310" Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Jan 26 12:39:11 2026 From: git at osgeo.org (git at osgeo.org) Date: Mon, 26 Jan 2026 12:39:11 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.5 updated. 3.5.4-16-g7cdf70f78 Message-ID: <20260126203912.295282389C@trac.osgeo.org> 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.5 has been updated via 7cdf70f7811c43df1220f823cd7cd59a9aedffb3 (commit) from 515ce9944e7bc2d4ab07ae32bab7859e74506cbc (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 7cdf70f7811c43df1220f823cd7cd59a9aedffb3 Author: Maksim Korotkov Date: Mon Jan 26 17:41:52 2026 +0300 Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov diff --git a/postgis/geography_centroid.c b/postgis/geography_centroid.c index 386e029ba..8a4881671 100644 --- a/postgis/geography_centroid.c +++ b/postgis/geography_centroid.c @@ -63,13 +63,13 @@ Datum geography_centroid(PG_FUNCTION_ARGS) /* Get our geometry object loaded into memory. */ g = PG_GETARG_GSERIALIZED_P(0); - lwgeom = lwgeom_from_gserialized(g); if (g == NULL) { PG_RETURN_NULL(); } + lwgeom = lwgeom_from_gserialized(g); srid = lwgeom_get_srid(lwgeom); /* on empty input, return empty output */ ----------------------------------------------------------------------- Summary of changes: postgis/geography_centroid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Jan 26 12:39:13 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 20:39:13 -0000 Subject: [PostGIS] #2951: ST_Centroid for geography In-Reply-To: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> References: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> Message-ID: <064.3ff638c5c94d67179903400f39d0ad43@osgeo.org> #2951: ST_Centroid for geography --------------------------+--------------------------- Reporter: Mike Taves | Owner: robe Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS 2.4.0 Component: liblwgeom | Version: Resolution: fixed | Keywords: --------------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"7cdf70f7811c43df1220f823cd7cd59a9aedffb3/git" 7cdf70f/git]: {{{#!CommitTicketReference repository="git" revision="7cdf70f7811c43df1220f823cd7cd59a9aedffb3" Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Jan 26 12:39:28 2026 From: git at osgeo.org (git at osgeo.org) Date: Mon, 26 Jan 2026 12:39:28 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.4 updated. 3.4.4-71-ga2c1de0da Message-ID: <20260126203928.9D3BE23723@trac.osgeo.org> 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.4 has been updated via a2c1de0dadf3e913e3827454e31791e597b3b833 (commit) from 41069cc791b504b91872af598557576d561d8935 (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 a2c1de0dadf3e913e3827454e31791e597b3b833 Author: Maksim Korotkov Date: Mon Jan 26 17:41:52 2026 +0300 Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov diff --git a/postgis/geography_centroid.c b/postgis/geography_centroid.c index 386e029ba..8a4881671 100644 --- a/postgis/geography_centroid.c +++ b/postgis/geography_centroid.c @@ -63,13 +63,13 @@ Datum geography_centroid(PG_FUNCTION_ARGS) /* Get our geometry object loaded into memory. */ g = PG_GETARG_GSERIALIZED_P(0); - lwgeom = lwgeom_from_gserialized(g); if (g == NULL) { PG_RETURN_NULL(); } + lwgeom = lwgeom_from_gserialized(g); srid = lwgeom_get_srid(lwgeom); /* on empty input, return empty output */ ----------------------------------------------------------------------- Summary of changes: postgis/geography_centroid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Jan 26 12:39:30 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 20:39:30 -0000 Subject: [PostGIS] #2951: ST_Centroid for geography In-Reply-To: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> References: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> Message-ID: <064.ae1fc821a81807b926df14256bfdad14@osgeo.org> #2951: ST_Centroid for geography --------------------------+--------------------------- Reporter: Mike Taves | Owner: robe Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS 2.4.0 Component: liblwgeom | Version: Resolution: fixed | Keywords: --------------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"a2c1de0dadf3e913e3827454e31791e597b3b833/git" a2c1de0/git]: {{{#!CommitTicketReference repository="git" revision="a2c1de0dadf3e913e3827454e31791e597b3b833" Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Mon Jan 26 12:39:47 2026 From: git at osgeo.org (git at osgeo.org) Date: Mon, 26 Jan 2026 12:39:47 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.3 updated. 3.3.7-69-gd5bd43604 Message-ID: <20260126203947.390032389E@trac.osgeo.org> 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 d5bd4360404cee5cd6b033551b75fa67407904b5 (commit) from 95797619c8c48b93f2d88c680852ea66d122a8f7 (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 d5bd4360404cee5cd6b033551b75fa67407904b5 Author: Maksim Korotkov Date: Mon Jan 26 17:41:52 2026 +0300 Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov diff --git a/postgis/geography_centroid.c b/postgis/geography_centroid.c index 386e029ba..8a4881671 100644 --- a/postgis/geography_centroid.c +++ b/postgis/geography_centroid.c @@ -63,13 +63,13 @@ Datum geography_centroid(PG_FUNCTION_ARGS) /* Get our geometry object loaded into memory. */ g = PG_GETARG_GSERIALIZED_P(0); - lwgeom = lwgeom_from_gserialized(g); if (g == NULL) { PG_RETURN_NULL(); } + lwgeom = lwgeom_from_gserialized(g); srid = lwgeom_get_srid(lwgeom); /* on empty input, return empty output */ ----------------------------------------------------------------------- Summary of changes: postgis/geography_centroid.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Mon Jan 26 12:39:49 2026 From: trac at osgeo.org (PostGIS) Date: Mon, 26 Jan 2026 20:39:49 -0000 Subject: [PostGIS] #2951: ST_Centroid for geography In-Reply-To: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> References: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> Message-ID: <064.508e134dc2426932a8c102dddf57ce9d@osgeo.org> #2951: ST_Centroid for geography --------------------------+--------------------------- Reporter: Mike Taves | Owner: robe Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS 2.4.0 Component: liblwgeom | Version: Resolution: fixed | Keywords: --------------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"d5bd4360404cee5cd6b033551b75fa67407904b5/git" d5bd436/git]: {{{#!CommitTicketReference repository="git" revision="d5bd4360404cee5cd6b033551b75fa67407904b5" Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 27 01:14:47 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 01:14:47 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-314-gc46ac9518 Message-ID: <20260127091447.E774726042@trac.osgeo.org> 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 c46ac95186fe924b99f75c750afdcf75c6885496 (commit) from a499e6aad103ecd73be69eca090ab50db9d6bd4f (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 c46ac95186fe924b99f75c750afdcf75c6885496 Author: Sandro Santilli Date: Tue Jan 27 10:14:37 2026 +0100 Fix URL in comment diff --git a/topology/test/regress/topogeo_addlinestring.sql b/topology/test/regress/topogeo_addlinestring.sql index 50c716b6b..c7ba53e90 100644 --- a/topology/test/regress/topogeo_addlinestring.sql +++ b/topology/test/regress/topogeo_addlinestring.sql @@ -390,7 +390,7 @@ SELECT 't4757.1', topology.TopoGeo_addLinestring('bug4757', 'LINESTRING(0 -0.1,1 0,1 1,0 1,0 -0.1)', 1); SELECT 't4757.end', topology.DropTopology('bug4757'); --- See https://trac.osgeo.org/postgis/ticket/t4758 +-- See https://trac.osgeo.org/postgis/ticket/4758 select 't4758.start', topology.CreateTopology ('t4758', 0, 1e-06) > 0; select 't4758.0', topology.TopoGeo_addLinestring('t4758', 'LINESTRING(11.38327215 60.4081942, 11.3826176 60.4089484)'); ----------------------------------------------------------------------- Summary of changes: topology/test/regress/topogeo_addlinestring.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 27 03:06:00 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 27 Jan 2026 11:06:00 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.c2552ff89266f67895cdeb56e22fb67c@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by strk): Just to be clear: the absence of the node is not an invalidity because those 2 edges don't really cover the same "space", they have an endpoint in common but they do not have the same direction, only have a very very small angle between them. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 27 08:39:18 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 08:39:18 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-320-gc6e7bc8e4 Message-ID: <20260127163918.A0F3916E2AE@trac.osgeo.org> 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 c6e7bc8e4381194f3bac5b7cc0a30e30b7cd346c (commit) via 977e9151311cad1d00fecd01a7e77f22ae73c1b6 (commit) via b28bc35beca31f80c452e2c6847812560127c045 (commit) via f8358f8cf2e7c4a01de151418d26d7604d74b6d4 (commit) via e4b6aeec9317a7e577e202257edcb18917ee2853 (commit) via 236a082d028ff1301488693aa8c0b0307b037243 (commit) from c46ac95186fe924b99f75c750afdcf75c6885496 (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 c6e7bc8e4381194f3bac5b7cc0a30e30b7cd346c Merge: c46ac9518 977e91513 Author: Paul Ramsey Date: Tue Jan 27 08:39:14 2026 -0800 Merge branch 'ProjectMutilation-sgp2pgsql-gui-fix-double-free' commit 977e9151311cad1d00fecd01a7e77f22ae73c1b6 Author: Sandro Santilli Date: Tue Jan 27 10:14:37 2026 +0100 Fix URL in comment diff --git a/topology/test/regress/topogeo_addlinestring.sql b/topology/test/regress/topogeo_addlinestring.sql index 50c716b6b..c7ba53e90 100644 --- a/topology/test/regress/topogeo_addlinestring.sql +++ b/topology/test/regress/topogeo_addlinestring.sql @@ -390,7 +390,7 @@ SELECT 't4757.1', topology.TopoGeo_addLinestring('bug4757', 'LINESTRING(0 -0.1,1 0,1 1,0 1,0 -0.1)', 1); SELECT 't4757.end', topology.DropTopology('bug4757'); --- See https://trac.osgeo.org/postgis/ticket/t4758 +-- See https://trac.osgeo.org/postgis/ticket/4758 select 't4758.start', topology.CreateTopology ('t4758', 0, 1e-06) > 0; select 't4758.0', topology.TopoGeo_addLinestring('t4758', 'LINESTRING(11.38327215 60.4081942, 11.3826176 60.4089484)'); commit b28bc35beca31f80c452e2c6847812560127c045 Author: Maksim Korotkov Date: Mon Jan 26 17:41:52 2026 +0300 Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov diff --git a/postgis/geography_centroid.c b/postgis/geography_centroid.c index 386e029ba..8a4881671 100644 --- a/postgis/geography_centroid.c +++ b/postgis/geography_centroid.c @@ -63,13 +63,13 @@ Datum geography_centroid(PG_FUNCTION_ARGS) /* Get our geometry object loaded into memory. */ g = PG_GETARG_GSERIALIZED_P(0); - lwgeom = lwgeom_from_gserialized(g); if (g == NULL) { PG_RETURN_NULL(); } + lwgeom = lwgeom_from_gserialized(g); srid = lwgeom_get_srid(lwgeom); /* on empty input, return empty output */ commit f8358f8cf2e7c4a01de151418d26d7604d74b6d4 Author: Maksim Korotkov Date: Mon Jan 26 12:30:55 2026 +0300 shp2pgsql-gui: fix use after free The ShpLoaderDestroy() free the pointer state, that was dereferenced later. Found by PostgresPro with Svace Static Analyzer. Fixes: 4daaecbc8 ("Commit reworked version of shp2pgsql-gui to the repository.") Signed-off-by: Maksim Korotkov diff --git a/loader/shp2pgsql-gui.c b/loader/shp2pgsql-gui.c index 5efa670b8..bfc301f50 100644 --- a/loader/shp2pgsql-gui.c +++ b/loader/shp2pgsql-gui.c @@ -1215,6 +1215,7 @@ validate_remote_loader_columns(SHPLOADERCONFIG *config, PGresult *result) { pgui_logf(_("Warning: Could not load shapefile %s"), config->shp_file); ShpLoaderDestroy(state); + return SHPLOADERERR; } /* Find each column based upon its name and then validate type separately... */ commit e4b6aeec9317a7e577e202257edcb18917ee2853 Author: Regina Obe Date: Mon Jan 26 02:53:22 2026 -0500 Put in PG_MODULE_MAGIC in address_standardizer for PG < 18 Closes #6039 for PostGIS 3.7.0 diff --git a/extensions/address_standardizer/address_standardizer.c b/extensions/address_standardizer/address_standardizer.c index f4170b4a7..5d4483d32 100644 --- a/extensions/address_standardizer/address_standardizer.c +++ b/extensions/address_standardizer/address_standardizer.c @@ -21,6 +21,8 @@ PG_MODULE_MAGIC_EXT( .name = "address_standardizer", .version = POSTGIS_LIB_VERSION ); +#else + PG_MODULE_MAGIC; #endif Datum debug_standardize_address(PG_FUNCTION_ARGS); commit 236a082d028ff1301488693aa8c0b0307b037243 Author: Maksim Korotkov Date: Mon Jan 26 13:10:44 2026 +0300 shp2pgsql-gui: avoid potential double free If we enter `import_cleanup` before allocating new memory, `progress_shapefile` will be freed twice on the next iteration. Also removed redundant check against NULL, free(NULL) is No Operation per the C standard. Found by PostgresPro Fixes: 4daaecbc8 ("Commit reworked version of shp2pgsql-gui to the repository.") Signed-off-by: Maksim Korotkov diff --git a/loader/shp2pgsql-gui.c b/loader/shp2pgsql-gui.c index 847e69af7..5efa670b8 100644 --- a/loader/shp2pgsql-gui.c +++ b/loader/shp2pgsql-gui.c @@ -1755,8 +1755,8 @@ import_cleanup: ShpLoaderDestroy(state); /* Tidy up */ - if (progress_shapefile) - free(progress_shapefile); + free(progress_shapefile); + progress_shapefile = NULL; /* Get next entry */ is_valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(import_file_list_store), &iter); ----------------------------------------------------------------------- Summary of changes: loader/shp2pgsql-gui.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) hooks/post-receive -- PostGIS From trac at osgeo.org Tue Jan 27 08:39:26 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 27 Jan 2026 16:39:26 -0000 Subject: [PostGIS] #6039: address_standardizer PG_MODULE_MAGIC macro is missing In-Reply-To: <046.110a179bdbba141d17313efe6f687e6e@osgeo.org> References: <046.110a179bdbba141d17313efe6f687e6e@osgeo.org> Message-ID: <061.899e257de1fcd6cc977e32e8ca1014b7@osgeo.org> #6039: address_standardizer PG_MODULE_MAGIC macro is missing ----------------------------------+--------------------------- Reporter: robe | Owner: robe Type: defect | Status: closed Priority: blocker | Milestone: PostGIS 3.7.0 Component: pagc_address_parser | Version: 3.5.x Resolution: fixed | Keywords: ----------------------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"e4b6aeec9317a7e577e202257edcb18917ee2853/git" e4b6aee/git]: {{{#!CommitTicketReference repository="git" revision="e4b6aeec9317a7e577e202257edcb18917ee2853" Put in PG_MODULE_MAGIC in address_standardizer for PG < 18 Closes #6039 for PostGIS 3.7.0 }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Tue Jan 27 08:39:26 2026 From: trac at osgeo.org (PostGIS) Date: Tue, 27 Jan 2026 16:39:26 -0000 Subject: [PostGIS] #2951: ST_Centroid for geography In-Reply-To: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> References: <049.430e20037884a64cfe61b89cd793b21e@osgeo.org> Message-ID: <064.1c7e00bd6bc1c0c29b6a488f562fb84f@osgeo.org> #2951: ST_Centroid for geography --------------------------+--------------------------- Reporter: Mike Taves | Owner: robe Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS 2.4.0 Component: liblwgeom | Version: Resolution: fixed | Keywords: --------------------------+--------------------------- Comment (by Paul Ramsey ): In [changeset:"b28bc35beca31f80c452e2c6847812560127c045/git" b28bc35/git]: {{{#!CommitTicketReference repository="git" revision="b28bc35beca31f80c452e2c6847812560127c045" Replace check for avoiding NULL dereference Fixes: 9726c4770 ("missed file commit for ST_Centroid Geography support references #2951") Signed-off-by: Maksim Korotkov }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Tue Jan 27 13:24:11 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 13:24:11 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-321-g46bf88378 Message-ID: <20260127212411.2F61016FDBE@trac.osgeo.org> 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 46bf883788e74c678f6eaa13df7e63e04d790165 (commit) from c6e7bc8e4381194f3bac5b7cc0a30e30b7cd346c (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 46bf883788e74c678f6eaa13df7e63e04d790165 Author: bdreiss Date: Tue Jan 27 12:39:28 2026 -0800 The geodetic flag was queried after gser has been freed ################################################### BUG REPORT ################################################## ### DESCRITPION ### The geodetic flag was queried after gser has been freed in line 143, leading to a use-after-free bug. This means the behaviour is undefined and it is not clear, which branch will be taken (and therefor, whether geometry or geography is returned). Below you find the output from gdb can be seen, that confirms that a) the point is indeed inserted with the wrong flag and b) also after selecting the point from the table remains unset. Issues when using SQL could not be produced. ### SETUP IN PG ### CREATE EXTENSION postgis; CREATE TABLE test_geog (id SERIAL PRIMARY KEY, geog geography(POINT, 4326)); INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;POINT(-77.0092 38.889588)')); ### GDB OUPUT AND STEPS TO REPRODUCE ### postgres at localhost:~$ gdb --args /usr/local/pgsql/bin/postgres --single -D $PGDATA postgres (gdb) break gserialized_typmod.c:143 (gdb) break gserialized_typmod.c:150 (gdb) break geography_out (gdb) run backend> INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;MULTIPOINT EMPTY')); Breakpoint 1, postgis_valid_typmod (gser=0x58f991a3f378, typmod=1107460) at gserialized_typmod.c:143 143 gserialized_typmod.c: No such file or directory. (gdb) call gserialized_is_geodetic(gser) $1 = 1 (gdb) c Continuing. Breakpoint 2, postgis_valid_typmod (gser=0x58f991a8e150, typmod=1107460) at gserialized_typmod.c:151 151 in gserialized_typmod.c (gdb) call gserialized_is_geodetic(gser) $2 = 0 (gdb) c Continuing. backend> backend> INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;POINT(-77.0092 38.889588)')); Breakpoint 2, postgis_valid_typmod (gser=0x58f991a3dca8, typmod=1107460) at gserialized_typmod.c:151 151 in gserialized_typmod.c (gdb) call gserialized_is_geodetic(gser) $4 = 1 (gdb) c Continuing. backend> backend> select geog from test_geog where id=1; 1: geog (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- Breakpoint 3, geography_out (fcinfo=0x7ffe871b40e0) at /usr/local/pgsql/include/server/postgres.h:319 319 return (Pointer) X; (gdb) set $gser = (GSERIALIZED *) pg_detoast_datum((void *) fcinfo->args[0].value) (gdb) call gserialized_is_geodetic($gser) $7 = 0 (gdb) c Continuing. 1: geog = "0101000020E6100000000000000000F87F000000000000F87F" (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- backend> select geog from test_geog where id=2; 1: geog (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- Breakpoint 3, geography_out (fcinfo=0x7ffe871b40e0) at /usr/local/pgsql/include/server/postgres.h:319 319 return (Pointer) X; (gdb) set $gser = (GSERIALIZED *) pg_detoast_datum((void *) fcinfo->args[0].value) (gdb) call gserialized_is_geodetic($gser) $8 = 1 (gdb) c Continuing. 1: geog = "0101000020E6100000E3C798BB964053C000750305DE714340" (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- backend> ### INFO ### postgres=# SELECT version(); version --------------------------------------------------------------------------------------------------- PostgreSQL 18.1 on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit (1 row) postgres=# SELECT postgis_full_version(); postgis_full_version ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------- POSTGIS="3.6.1 f533623" [EXTENSION] PGSQL="180" GEOS="3.11.1-CAPI-1.17.1" PROJ="9.1.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/home/postgres/.loc al/share/proj DATABASE_PATH=/usr/share/proj/proj.db" (compiled against PROJ 9.1.1) LIBXML="2.9.14" LIBJSON="0.16" LIBPROTOBUF="1.4.1" WAGYU="0.5.0 (Internal)" (1 row) COMPILE FLAGS USED: CC=clang ./configure --with-pgconfig=/usr/bin/pg_config CFLAGS="-O0 -g -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-fsanitize=address" ############################################################################################################### diff --git a/postgis/gserialized_typmod.c b/postgis/gserialized_typmod.c index 308297fa7..9f7b46f5f 100644 --- a/postgis/gserialized_typmod.c +++ b/postgis/gserialized_typmod.c @@ -140,8 +140,9 @@ GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod) { LWPOINT *empty_point = lwpoint_construct_empty(geom_srid, geom_z, geom_m); geom_type = POINTTYPE; + bool is_geodetic = gserialized_is_geodetic(gser); pfree(gser); - if ( gserialized_is_geodetic(gser) ) + if ( is_geodetic ) gser = geography_serialize(lwpoint_as_lwgeom(empty_point)); else gser = geometry_serialize(lwpoint_as_lwgeom(empty_point)); ----------------------------------------------------------------------- Summary of changes: postgis/gserialized_typmod.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 27 13:25:13 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 13:25:13 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-18-g4abcddfda Message-ID: <20260127212514.212AA18A904@trac.osgeo.org> 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.6 has been updated via 4abcddfda4c8bbb6055b4489624b561613a855f3 (commit) from d063e2a19fa045818bdc226ec8da6dbf155d6310 (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 4abcddfda4c8bbb6055b4489624b561613a855f3 Author: bdreiss Date: Tue Jan 27 12:39:28 2026 -0800 The geodetic flag was queried after gser has been freed ################################################### BUG REPORT ################################################## ### DESCRITPION ### The geodetic flag was queried after gser has been freed in line 143, leading to a use-after-free bug. This means the behaviour is undefined and it is not clear, which branch will be taken (and therefor, whether geometry or geography is returned). Below you find the output from gdb can be seen, that confirms that a) the point is indeed inserted with the wrong flag and b) also after selecting the point from the table remains unset. Issues when using SQL could not be produced. ### SETUP IN PG ### CREATE EXTENSION postgis; CREATE TABLE test_geog (id SERIAL PRIMARY KEY, geog geography(POINT, 4326)); INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;POINT(-77.0092 38.889588)')); ### GDB OUPUT AND STEPS TO REPRODUCE ### postgres at localhost:~$ gdb --args /usr/local/pgsql/bin/postgres --single -D $PGDATA postgres (gdb) break gserialized_typmod.c:143 (gdb) break gserialized_typmod.c:150 (gdb) break geography_out (gdb) run backend> INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;MULTIPOINT EMPTY')); Breakpoint 1, postgis_valid_typmod (gser=0x58f991a3f378, typmod=1107460) at gserialized_typmod.c:143 143 gserialized_typmod.c: No such file or directory. (gdb) call gserialized_is_geodetic(gser) $1 = 1 (gdb) c Continuing. Breakpoint 2, postgis_valid_typmod (gser=0x58f991a8e150, typmod=1107460) at gserialized_typmod.c:151 151 in gserialized_typmod.c (gdb) call gserialized_is_geodetic(gser) $2 = 0 (gdb) c Continuing. backend> backend> INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;POINT(-77.0092 38.889588)')); Breakpoint 2, postgis_valid_typmod (gser=0x58f991a3dca8, typmod=1107460) at gserialized_typmod.c:151 151 in gserialized_typmod.c (gdb) call gserialized_is_geodetic(gser) $4 = 1 (gdb) c Continuing. backend> backend> select geog from test_geog where id=1; 1: geog (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- Breakpoint 3, geography_out (fcinfo=0x7ffe871b40e0) at /usr/local/pgsql/include/server/postgres.h:319 319 return (Pointer) X; (gdb) set $gser = (GSERIALIZED *) pg_detoast_datum((void *) fcinfo->args[0].value) (gdb) call gserialized_is_geodetic($gser) $7 = 0 (gdb) c Continuing. 1: geog = "0101000020E6100000000000000000F87F000000000000F87F" (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- backend> select geog from test_geog where id=2; 1: geog (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- Breakpoint 3, geography_out (fcinfo=0x7ffe871b40e0) at /usr/local/pgsql/include/server/postgres.h:319 319 return (Pointer) X; (gdb) set $gser = (GSERIALIZED *) pg_detoast_datum((void *) fcinfo->args[0].value) (gdb) call gserialized_is_geodetic($gser) $8 = 1 (gdb) c Continuing. 1: geog = "0101000020E6100000E3C798BB964053C000750305DE714340" (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- backend> ### INFO ### postgres=# SELECT version(); version --------------------------------------------------------------------------------------------------- PostgreSQL 18.1 on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit (1 row) postgres=# SELECT postgis_full_version(); postgis_full_version ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------- POSTGIS="3.6.1 f533623" [EXTENSION] PGSQL="180" GEOS="3.11.1-CAPI-1.17.1" PROJ="9.1.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/home/postgres/.loc al/share/proj DATABASE_PATH=/usr/share/proj/proj.db" (compiled against PROJ 9.1.1) LIBXML="2.9.14" LIBJSON="0.16" LIBPROTOBUF="1.4.1" WAGYU="0.5.0 (Internal)" (1 row) COMPILE FLAGS USED: CC=clang ./configure --with-pgconfig=/usr/bin/pg_config CFLAGS="-O0 -g -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-fsanitize=address" ############################################################################################################### diff --git a/postgis/gserialized_typmod.c b/postgis/gserialized_typmod.c index b07ad9343..7ecd8617e 100644 --- a/postgis/gserialized_typmod.c +++ b/postgis/gserialized_typmod.c @@ -140,8 +140,9 @@ GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod) { LWPOINT *empty_point = lwpoint_construct_empty(geom_srid, geom_z, geom_m); geom_type = POINTTYPE; + bool is_geodetic = gserialized_is_geodetic(gser); pfree(gser); - if ( gserialized_is_geodetic(gser) ) + if ( is_geodetic ) gser = geography_serialize(lwpoint_as_lwgeom(empty_point)); else gser = geometry_serialize(lwpoint_as_lwgeom(empty_point)); ----------------------------------------------------------------------- Summary of changes: postgis/gserialized_typmod.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 27 13:25:39 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 13:25:39 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.5 updated. 3.5.4-17-g248bfa21a Message-ID: <20260127212539.ED86E18A6CD@trac.osgeo.org> 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.5 has been updated via 248bfa21a0fd0091eaa883455d5c7732b5ef882d (commit) from 7cdf70f7811c43df1220f823cd7cd59a9aedffb3 (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 248bfa21a0fd0091eaa883455d5c7732b5ef882d Author: bdreiss Date: Tue Jan 27 12:39:28 2026 -0800 The geodetic flag was queried after gser has been freed ################################################### BUG REPORT ################################################## ### DESCRITPION ### The geodetic flag was queried after gser has been freed in line 143, leading to a use-after-free bug. This means the behaviour is undefined and it is not clear, which branch will be taken (and therefor, whether geometry or geography is returned). Below you find the output from gdb can be seen, that confirms that a) the point is indeed inserted with the wrong flag and b) also after selecting the point from the table remains unset. Issues when using SQL could not be produced. ### SETUP IN PG ### CREATE EXTENSION postgis; CREATE TABLE test_geog (id SERIAL PRIMARY KEY, geog geography(POINT, 4326)); INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;POINT(-77.0092 38.889588)')); ### GDB OUPUT AND STEPS TO REPRODUCE ### postgres at localhost:~$ gdb --args /usr/local/pgsql/bin/postgres --single -D $PGDATA postgres (gdb) break gserialized_typmod.c:143 (gdb) break gserialized_typmod.c:150 (gdb) break geography_out (gdb) run backend> INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;MULTIPOINT EMPTY')); Breakpoint 1, postgis_valid_typmod (gser=0x58f991a3f378, typmod=1107460) at gserialized_typmod.c:143 143 gserialized_typmod.c: No such file or directory. (gdb) call gserialized_is_geodetic(gser) $1 = 1 (gdb) c Continuing. Breakpoint 2, postgis_valid_typmod (gser=0x58f991a8e150, typmod=1107460) at gserialized_typmod.c:151 151 in gserialized_typmod.c (gdb) call gserialized_is_geodetic(gser) $2 = 0 (gdb) c Continuing. backend> backend> INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;POINT(-77.0092 38.889588)')); Breakpoint 2, postgis_valid_typmod (gser=0x58f991a3dca8, typmod=1107460) at gserialized_typmod.c:151 151 in gserialized_typmod.c (gdb) call gserialized_is_geodetic(gser) $4 = 1 (gdb) c Continuing. backend> backend> select geog from test_geog where id=1; 1: geog (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- Breakpoint 3, geography_out (fcinfo=0x7ffe871b40e0) at /usr/local/pgsql/include/server/postgres.h:319 319 return (Pointer) X; (gdb) set $gser = (GSERIALIZED *) pg_detoast_datum((void *) fcinfo->args[0].value) (gdb) call gserialized_is_geodetic($gser) $7 = 0 (gdb) c Continuing. 1: geog = "0101000020E6100000000000000000F87F000000000000F87F" (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- backend> select geog from test_geog where id=2; 1: geog (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- Breakpoint 3, geography_out (fcinfo=0x7ffe871b40e0) at /usr/local/pgsql/include/server/postgres.h:319 319 return (Pointer) X; (gdb) set $gser = (GSERIALIZED *) pg_detoast_datum((void *) fcinfo->args[0].value) (gdb) call gserialized_is_geodetic($gser) $8 = 1 (gdb) c Continuing. 1: geog = "0101000020E6100000E3C798BB964053C000750305DE714340" (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- backend> ### INFO ### postgres=# SELECT version(); version --------------------------------------------------------------------------------------------------- PostgreSQL 18.1 on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit (1 row) postgres=# SELECT postgis_full_version(); postgis_full_version ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------- POSTGIS="3.6.1 f533623" [EXTENSION] PGSQL="180" GEOS="3.11.1-CAPI-1.17.1" PROJ="9.1.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/home/postgres/.loc al/share/proj DATABASE_PATH=/usr/share/proj/proj.db" (compiled against PROJ 9.1.1) LIBXML="2.9.14" LIBJSON="0.16" LIBPROTOBUF="1.4.1" WAGYU="0.5.0 (Internal)" (1 row) COMPILE FLAGS USED: CC=clang ./configure --with-pgconfig=/usr/bin/pg_config CFLAGS="-O0 -g -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-fsanitize=address" ############################################################################################################### diff --git a/postgis/gserialized_typmod.c b/postgis/gserialized_typmod.c index b07ad9343..7ecd8617e 100644 --- a/postgis/gserialized_typmod.c +++ b/postgis/gserialized_typmod.c @@ -140,8 +140,9 @@ GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod) { LWPOINT *empty_point = lwpoint_construct_empty(geom_srid, geom_z, geom_m); geom_type = POINTTYPE; + bool is_geodetic = gserialized_is_geodetic(gser); pfree(gser); - if ( gserialized_is_geodetic(gser) ) + if ( is_geodetic ) gser = geography_serialize(lwpoint_as_lwgeom(empty_point)); else gser = geometry_serialize(lwpoint_as_lwgeom(empty_point)); ----------------------------------------------------------------------- Summary of changes: postgis/gserialized_typmod.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 27 13:25:55 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 13:25:55 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.4 updated. 3.4.4-72-g097b5d747 Message-ID: <20260127212555.8B396189E3D@trac.osgeo.org> 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.4 has been updated via 097b5d7470487e53be58fcb21982329f1b69e5e6 (commit) from a2c1de0dadf3e913e3827454e31791e597b3b833 (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 097b5d7470487e53be58fcb21982329f1b69e5e6 Author: bdreiss Date: Tue Jan 27 12:39:28 2026 -0800 The geodetic flag was queried after gser has been freed ################################################### BUG REPORT ################################################## ### DESCRITPION ### The geodetic flag was queried after gser has been freed in line 143, leading to a use-after-free bug. This means the behaviour is undefined and it is not clear, which branch will be taken (and therefor, whether geometry or geography is returned). Below you find the output from gdb can be seen, that confirms that a) the point is indeed inserted with the wrong flag and b) also after selecting the point from the table remains unset. Issues when using SQL could not be produced. ### SETUP IN PG ### CREATE EXTENSION postgis; CREATE TABLE test_geog (id SERIAL PRIMARY KEY, geog geography(POINT, 4326)); INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;POINT(-77.0092 38.889588)')); ### GDB OUPUT AND STEPS TO REPRODUCE ### postgres at localhost:~$ gdb --args /usr/local/pgsql/bin/postgres --single -D $PGDATA postgres (gdb) break gserialized_typmod.c:143 (gdb) break gserialized_typmod.c:150 (gdb) break geography_out (gdb) run backend> INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;MULTIPOINT EMPTY')); Breakpoint 1, postgis_valid_typmod (gser=0x58f991a3f378, typmod=1107460) at gserialized_typmod.c:143 143 gserialized_typmod.c: No such file or directory. (gdb) call gserialized_is_geodetic(gser) $1 = 1 (gdb) c Continuing. Breakpoint 2, postgis_valid_typmod (gser=0x58f991a8e150, typmod=1107460) at gserialized_typmod.c:151 151 in gserialized_typmod.c (gdb) call gserialized_is_geodetic(gser) $2 = 0 (gdb) c Continuing. backend> backend> INSERT INTO test_geog (geog) VALUES (ST_GeogFromText('SRID=4326;POINT(-77.0092 38.889588)')); Breakpoint 2, postgis_valid_typmod (gser=0x58f991a3dca8, typmod=1107460) at gserialized_typmod.c:151 151 in gserialized_typmod.c (gdb) call gserialized_is_geodetic(gser) $4 = 1 (gdb) c Continuing. backend> backend> select geog from test_geog where id=1; 1: geog (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- Breakpoint 3, geography_out (fcinfo=0x7ffe871b40e0) at /usr/local/pgsql/include/server/postgres.h:319 319 return (Pointer) X; (gdb) set $gser = (GSERIALIZED *) pg_detoast_datum((void *) fcinfo->args[0].value) (gdb) call gserialized_is_geodetic($gser) $7 = 0 (gdb) c Continuing. 1: geog = "0101000020E6100000000000000000F87F000000000000F87F" (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- backend> select geog from test_geog where id=2; 1: geog (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- Breakpoint 3, geography_out (fcinfo=0x7ffe871b40e0) at /usr/local/pgsql/include/server/postgres.h:319 319 return (Pointer) X; (gdb) set $gser = (GSERIALIZED *) pg_detoast_datum((void *) fcinfo->args[0].value) (gdb) call gserialized_is_geodetic($gser) $8 = 1 (gdb) c Continuing. 1: geog = "0101000020E6100000E3C798BB964053C000750305DE714340" (typeid = 14296, len = -1, typmod = 1107460, byval = f) ---- backend> ### INFO ### postgres=# SELECT version(); version --------------------------------------------------------------------------------------------------- PostgreSQL 18.1 on x86_64-pc-linux-gnu, compiled by gcc (Debian 12.2.0-14+deb12u1) 12.2.0, 64-bit (1 row) postgres=# SELECT postgis_full_version(); postgis_full_version ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------- POSTGIS="3.6.1 f533623" [EXTENSION] PGSQL="180" GEOS="3.11.1-CAPI-1.17.1" PROJ="9.1.1 NETWORK_ENABLED=OFF URL_ENDPOINT=https://cdn.proj.org USER_WRITABLE_DIRECTORY=/home/postgres/.loc al/share/proj DATABASE_PATH=/usr/share/proj/proj.db" (compiled against PROJ 9.1.1) LIBXML="2.9.14" LIBJSON="0.16" LIBPROTOBUF="1.4.1" WAGYU="0.5.0 (Internal)" (1 row) COMPILE FLAGS USED: CC=clang ./configure --with-pgconfig=/usr/bin/pg_config CFLAGS="-O0 -g -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-fsanitize=address" ############################################################################################################### diff --git a/postgis/gserialized_typmod.c b/postgis/gserialized_typmod.c index b07ad9343..7ecd8617e 100644 --- a/postgis/gserialized_typmod.c +++ b/postgis/gserialized_typmod.c @@ -140,8 +140,9 @@ GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod) { LWPOINT *empty_point = lwpoint_construct_empty(geom_srid, geom_z, geom_m); geom_type = POINTTYPE; + bool is_geodetic = gserialized_is_geodetic(gser); pfree(gser); - if ( gserialized_is_geodetic(gser) ) + if ( is_geodetic ) gser = geography_serialize(lwpoint_as_lwgeom(empty_point)); else gser = geometry_serialize(lwpoint_as_lwgeom(empty_point)); ----------------------------------------------------------------------- Summary of changes: postgis/gserialized_typmod.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 27 13:29:09 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 13:29:09 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-322-g29b746efa Message-ID: <20260127212909.7087B189FFF@trac.osgeo.org> 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 29b746efad5af45d6cd85fba71a29611b12d137f (commit) from 46bf883788e74c678f6eaa13df7e63e04d790165 (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 29b746efad5af45d6cd85fba71a29611b12d137f Author: Paul Ramsey Date: Tue Jan 27 13:29:04 2026 -0800 Fix mixed declarations mistake diff --git a/postgis/gserialized_typmod.c b/postgis/gserialized_typmod.c index 9f7b46f5f..bee14bd15 100644 --- a/postgis/gserialized_typmod.c +++ b/postgis/gserialized_typmod.c @@ -138,9 +138,9 @@ GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod) if ( typmod_type == POINTTYPE && geom_type == MULTIPOINTTYPE && gserialized_is_empty(gser) ) { + bool is_geodetic = gserialized_is_geodetic(gser); LWPOINT *empty_point = lwpoint_construct_empty(geom_srid, geom_z, geom_m); geom_type = POINTTYPE; - bool is_geodetic = gserialized_is_geodetic(gser); pfree(gser); if ( is_geodetic ) gser = geography_serialize(lwpoint_as_lwgeom(empty_point)); ----------------------------------------------------------------------- Summary of changes: postgis/gserialized_typmod.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 27 13:29:18 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 13:29:18 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.6 updated. 3.6.1-19-g54b890ef9 Message-ID: <20260127212918.6A965189BF5@trac.osgeo.org> 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.6 has been updated via 54b890ef9226adf295850600b85984a933676fb9 (commit) from 4abcddfda4c8bbb6055b4489624b561613a855f3 (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 54b890ef9226adf295850600b85984a933676fb9 Author: Paul Ramsey Date: Tue Jan 27 13:29:04 2026 -0800 Fix mixed declarations mistake diff --git a/postgis/gserialized_typmod.c b/postgis/gserialized_typmod.c index 7ecd8617e..2c9f64b56 100644 --- a/postgis/gserialized_typmod.c +++ b/postgis/gserialized_typmod.c @@ -138,9 +138,9 @@ GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod) if ( typmod_type == POINTTYPE && geom_type == MULTIPOINTTYPE && gserialized_is_empty(gser) ) { + bool is_geodetic = gserialized_is_geodetic(gser); LWPOINT *empty_point = lwpoint_construct_empty(geom_srid, geom_z, geom_m); geom_type = POINTTYPE; - bool is_geodetic = gserialized_is_geodetic(gser); pfree(gser); if ( is_geodetic ) gser = geography_serialize(lwpoint_as_lwgeom(empty_point)); ----------------------------------------------------------------------- Summary of changes: postgis/gserialized_typmod.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 27 13:29:23 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 13:29:23 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.5 updated. 3.5.4-18-g7f73a34b1 Message-ID: <20260127212923.AD86818B34E@trac.osgeo.org> 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.5 has been updated via 7f73a34b1a5ee355d011c8bcb6b0d6faf5e561cc (commit) from 248bfa21a0fd0091eaa883455d5c7732b5ef882d (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 7f73a34b1a5ee355d011c8bcb6b0d6faf5e561cc Author: Paul Ramsey Date: Tue Jan 27 13:29:04 2026 -0800 Fix mixed declarations mistake diff --git a/postgis/gserialized_typmod.c b/postgis/gserialized_typmod.c index 7ecd8617e..2c9f64b56 100644 --- a/postgis/gserialized_typmod.c +++ b/postgis/gserialized_typmod.c @@ -138,9 +138,9 @@ GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod) if ( typmod_type == POINTTYPE && geom_type == MULTIPOINTTYPE && gserialized_is_empty(gser) ) { + bool is_geodetic = gserialized_is_geodetic(gser); LWPOINT *empty_point = lwpoint_construct_empty(geom_srid, geom_z, geom_m); geom_type = POINTTYPE; - bool is_geodetic = gserialized_is_geodetic(gser); pfree(gser); if ( is_geodetic ) gser = geography_serialize(lwpoint_as_lwgeom(empty_point)); ----------------------------------------------------------------------- Summary of changes: postgis/gserialized_typmod.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From git at osgeo.org Tue Jan 27 13:29:28 2026 From: git at osgeo.org (git at osgeo.org) Date: Tue, 27 Jan 2026 13:29:28 -0800 (PST) Subject: [SCM] PostGIS branch stable-3.4 updated. 3.4.4-73-geaf48fc0d Message-ID: <20260127212928.B6CCC18B3A7@trac.osgeo.org> 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.4 has been updated via eaf48fc0d4fcc651fdc924b4b0c732bfba00c22b (commit) from 097b5d7470487e53be58fcb21982329f1b69e5e6 (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 eaf48fc0d4fcc651fdc924b4b0c732bfba00c22b Author: Paul Ramsey Date: Tue Jan 27 13:29:04 2026 -0800 Fix mixed declarations mistake diff --git a/postgis/gserialized_typmod.c b/postgis/gserialized_typmod.c index 7ecd8617e..2c9f64b56 100644 --- a/postgis/gserialized_typmod.c +++ b/postgis/gserialized_typmod.c @@ -138,9 +138,9 @@ GSERIALIZED* postgis_valid_typmod(GSERIALIZED *gser, int32_t typmod) if ( typmod_type == POINTTYPE && geom_type == MULTIPOINTTYPE && gserialized_is_empty(gser) ) { + bool is_geodetic = gserialized_is_geodetic(gser); LWPOINT *empty_point = lwpoint_construct_empty(geom_srid, geom_z, geom_m); geom_type = POINTTYPE; - bool is_geodetic = gserialized_is_geodetic(gser); pfree(gser); if ( is_geodetic ) gser = geography_serialize(lwpoint_as_lwgeom(empty_point)); ----------------------------------------------------------------------- Summary of changes: postgis/gserialized_typmod.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Wed Jan 28 00:37:39 2026 From: trac at osgeo.org (PostGIS) Date: Wed, 28 Jan 2026 08:37:39 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.18c564e1c58b2425d25b734cf75b0731@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by Lars Aksel Opsahl): Replying to [comment:12 strk]: > It's interesting to note that calling TopoGeo_addPoint with that close- by vertex does already implement the edge-snapping and merge: > > > select TopoGeo_addPoint('t6034', ( select ST_PointN(geom, 2) from t6034.edge_data where edge_id = 2 ) ); > > So another implementation could be to inspect all vertices of the newly added edges and create a node there if they are within tolerance from edges NOT having them as vertices. I like this solution because this should mostly affect corner cases like this one. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From git at osgeo.org Thu Jan 29 00:52:00 2026 From: git at osgeo.org (git at osgeo.org) Date: Thu, 29 Jan 2026 00:52:00 -0800 (PST) Subject: [SCM] PostGIS branch master updated. 3.6.0rc2-323-g94ef97c1a Message-ID: <20260129085201.04A0F16F07C@trac.osgeo.org> 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 94ef97c1abee29b69e83e81eb535e67ffd2a4c2c (commit) from 29b746efad5af45d6cd85fba71a29611b12d137f (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 94ef97c1abee29b69e83e81eb535e67ffd2a4c2c Author: Sandro Santilli Date: Thu Jan 29 09:45:11 2026 +0100 Drop declaration of undefined/unused function diff --git a/liblwgeom/liblwgeom.h.in b/liblwgeom/liblwgeom.h.in index 752569540..011efab70 100644 --- a/liblwgeom/liblwgeom.h.in +++ b/liblwgeom/liblwgeom.h.in @@ -1550,7 +1550,6 @@ extern LWPOINT *lwpoint_make(int32_t srid, int hasz, int hasm, const POINT4D *p) extern LWLINE *lwline_from_lwgeom_array(int32_t srid, uint32_t ngeoms, LWGEOM **geoms); extern LWLINE *lwline_from_ptarray(int32_t srid, uint32_t npoints, LWPOINT **points); /* TODO: deprecate */ extern LWLINE *lwline_from_lwmpoint(int32_t srid, const LWMPOINT *mpoint); -extern LWLINE *lwline_addpoint(LWLINE *line, LWPOINT *point, uint32_t where); extern LWLINE *lwline_removepoint(LWLINE *line, uint32_t which); extern void lwline_setPoint4d(LWLINE *line, uint32_t which, POINT4D *newpoint); extern LWPOLY *lwpoly_from_lwlines(const LWLINE *shell, uint32_t nholes, const LWLINE **holes); ----------------------------------------------------------------------- Summary of changes: liblwgeom/liblwgeom.h.in | 1 - 1 file changed, 1 deletion(-) hooks/post-receive -- PostGIS From trac at osgeo.org Thu Jan 29 02:46:58 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 29 Jan 2026 10:46:58 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.10dfe3d91d36226ee2b1245d289a492c@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by strk): I've implemented a function to find pairs of vertex/segment in a topology that are below a tolerated distance from each-other, and pushed to the branch associated with this PR: https://gitea.osgeo.org/postgis/postgis/pulls/282 -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 29 02:54:15 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 29 Jan 2026 10:54:15 -0000 Subject: [PostGIS] #5790: Postgis-functions in Materialized views fail in Postgres 17 due to not fully qualified search path In-Reply-To: <047.90df15410697a6cb181cc7a3c9438a1d@osgeo.org> References: <047.90df15410697a6cb181cc7a3c9438a1d@osgeo.org> Message-ID: <062.78b0a37a77cd689b09ac82d97744e947@osgeo.org> #5790: Postgis-functions in Materialized views fail in Postgres 17 due to not fully qualified search path ----------------------+--------------------------- Reporter: maxbo | Owner: robe Type: defect | Status: closed Priority: high | Milestone: PostGIS 3.4.4 Component: postgis | Version: 3.4.x Resolution: fixed | Keywords: ----------------------+--------------------------- Comment (by landry): i dunno if i should file a new issue, because we face the exact same symptoms using 3.5.2/psql 17.6 on debian 13 (so, supposedly with this issue fixed), cf https://gitlab.com/panoramax/server/api/-/issues/304 from a psql shell, refreshing the MV fails at the first try, but works at the second: {{{ panoramax=> refresh materialized view pictures_grid ; ERROR: column "public"."pictures"."geom" must be a geometry or geography panoramax=> refresh materialized view pictures_grid ; REFRESH MATERIALIZED VIEW }}} from psycopg2 code, the sql query to refresh the MV fails all the time. the materialized view is defined in https://gitlab.com/panoramax/server/api/-/blob/develop/geovisio/migrations/20251202_01_Q3g59 -pictures-grid-logged-only.sql#L16, and uses {{{ ST_EstimatedExtent('public', 'pictures', 'geom') }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 29 07:05:21 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 29 Jan 2026 15:05:21 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.3415f9d468ae50bf5e542330a6b824eb@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by Lars Aksel Opsahl): Very nice i have tested and then found a strange case with edge {{{ 0102000020A2100000740000000D9BE18932092E409258471BD4D6504040185E3A53092E40BCFA7992D6D650402E3A133E55092E40E09038B9D6D65040B40F0F3756092E40923A35C5D6D65040D9A56A3256092E40AAFF97C7D6D6504054D7467E56092E40BFF8A2C8D6D65040C20823CA56092E40D4F1ADC9D6D65040B94D55BE9E092E408CC2E7C6D7D650400AC534BD9E092E40EE3B7FCAD7D65040FF38B4899F092E40807AB3C9D7D6504033AD3356A0092E4012B9E7C8D7D650405BB4EAC1A9092E400EC384BFD7D650407B89A939C2092E40101189BAD7D650405EE47613E2092E4065A404B4D7D6504005E6B9DDF8092E402F2814BBD7D650401BCD8479210A2E40F92DE1FAD7D650401DF02174340A2E408623425FD8D650403CB7E87C410A2E4024F906C5D8D650406981A779410A2E40FBD6F9C7D8D65040F0FA46EE410A2E40C0207CC8D8D650409A74E662420A2E40856AFEC8D8D65040445148C8B90A2E403B46614ED9D6504002E48AEDEA0A2E4050F1C8DADCD6504080DD46E6EA0A2E407CE9FBDCDCD65040655F162CEB0A2E401C054DDFDCD6504027E1E571EB0A2E40BB209EE1DCD6504024BD307BF00A2E40D2E7670CDDD6504068BC3E75FA0A2E40F9206718DDD65040F2C23157230B2E4018ED2A2CDDD65040719F5C722E0B2E40D381D749DDD65040FB7BCCAA2F0B2E40B3FC384DDDD650407797403F300B2E4097F51E55DDD65040E6D87C3C370B2E405F6044B1DDD65040118B1F41370B2E40644F162AE0D65040D15185C43A0B2E40B0147CCEE0D65040B827DA0B440B2E4098EF4053E1D650400F1E9A86470B2E4039A1E684E1D65040B8FDB2D74E0B2E40828B7CBEE1D6504023792FD54E0B2E409ECC14C1E1D650404EAF0C2C4F0B2E40436914C1E1D65040D2E5E9824F0B2E40E80514C1E1D65040FC846345690B2E400D8FF6C0E1D65040AD942021AB0B2E40627CE9B1E0D65040107C2172AB0B2E40301A9CB0E0D65040AD4B42E8AD0B2E40DD2F6791E0D6504052B344E8AD0B2E4060116791E0D6504092FFBBE5AD0B2E40C4673F2EDFD65040770C91E5AD0B2E4011693F2EDFD650407AE7B6E2AD0B2E4083C304B6DDD650407C5DBA21370C2E404BBE7F32D8D65040641761DE640C2E40A26DC3E3D4D6504034E756D8640C2E4021254EF3D1D65040296C9593550C2E402DA2171DD0D6504044A61C10370C2E40C7E41F61CFD650403A2B5BCB270C2E40D361E98ACDD650400CFB50C5270C2E405219749ACAD6504046FAAE01370C2E4094580966C8D65040E8287580550C2E40981FA9EDC6D650403A40D8BF640C2E401B037931C6D65040A33EA7644F0C2E4007529331C6D6504099661A654F0C2E400D169031C6D650408149B6D94F0C2E4007AE1C2AC6D650401A651A654F0C2E4083FF8E31C6D65040C57980644F0C2E4037529331C6D650400D366FFE4E0C2E40F3CF9331C6D6504086D4EA004F0C2E404B595F34C6D65040BAE360CB2A0C2E40E2B3B838C7D65040B55DFE65250C2E40BDA2421EC7D65040256FE231200C2E40E7E5C004C7D65040C633DEDD1E0C2E40AAD63DFEC6D650408B84DA891B0C2E401A84ECEDC6D6504055CCFD0D280C2E40DEACA879C5D65040B826BFBA270C2E406FDAA675C5D65040A00EBAB7270C2E402E366CFDC3D650404354AA562F0C2E4046274441C3D65040C7ABC92A3B0C2E4019803341C3D6504022196035460C2E40A109CDF8C1D650402C257B33460C2E408FFACB0CC1D650408CC2F7105D0C2E401A266536BFD65040044EC07E5E0C2E404974C224BFD650406215F6CE8A0C2E406F21D201BDD650401C7F85D58A0C2E40DD1FFA00BDD650402AD4CF919B0C2E404379EED9BAD650407943C5939B0C2E402C02D5C7BBD65040DED5CF919B0C2E400B79EED9BAD650405526F8889B0C2E405E66EFA7B6D650404538A4879B0C2E40C6C7A706B6D6504020871905BA0C2E40B3C7671DB4D65040BCD14510BF0C2E4015453A08B4D650400D7D5699BF0C2E408FC2FA05B4D6504033138CDDBF0C2E40A857DC04B4D65040A9734708CE0C2E4093575FC9B3D650408A1B71EED10C2E40B46100B9B3D6504065659F2BD20C2E40DA80FFB7B3D65040BE45F52BD20C2E404918FEB7B3D65040ABA8CA68D20C2E404FB9FEB6B3D65040C9EF1264D20C2E408E2BE3B4B3D65040C983A4FED60C2E4096A3F173B3D6504027CBE1BE410D2E4014170E3FB1D650408370A51B770D2E4092AC61ACAED65040FAA7E116770D2E4075762196ACD65040BC58D0226D0D2E404FB61C4BABD650409D53ADDF6A0D2E40856FE0FFAAD65040FC2001D3830D2E4084C08932AAD650405DA607D3830D2E4033F78832AAD65040A6EC6251860D2E40319D8DE5A9D6504041EAD88F990D2E402720C06EA9D6504063EF5790990D2E404F39E26EA9D6504074E8499E980D2E4070E26687A9D6504076E0741C960D2E401C260A9CA9D650401BEA499E980D2E40FBF86787A9D650409EAA4B92990D2E40E802B16EA9D65040AE6ABE94990D2E40AAE5A16EA9D65040B0993B94990D2E409EC77E6EA9D65040C54732D2A30D2E4046BAEC64A8D650408B5E240CB40D2E402B7631C0A6D65040 }}} Here we have two vertexes very close each other in real distance but not in distance a long the edge. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 29 07:08:20 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 29 Jan 2026 15:08:20 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.66afbe412761b760637b7b01d0cb2a98@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Changes (by Lars Aksel Opsahl): * Attachment "spike.png" added. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 29 07:51:10 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 29 Jan 2026 15:51:10 -0000 Subject: [PostGIS] #5790: Postgis-functions in Materialized views fail in Postgres 17 due to not fully qualified search path In-Reply-To: <047.90df15410697a6cb181cc7a3c9438a1d@osgeo.org> References: <047.90df15410697a6cb181cc7a3c9438a1d@osgeo.org> Message-ID: <062.4e630144a81f4862c8bf4076c7737121@osgeo.org> #5790: Postgis-functions in Materialized views fail in Postgres 17 due to not fully qualified search path ----------------------+--------------------------- Reporter: maxbo | Owner: robe Type: defect | Status: closed Priority: high | Milestone: PostGIS 3.4.4 Component: postgis | Version: 3.4.x Resolution: fixed | Keywords: ----------------------+--------------------------- Comment (by robe): @landry, I think this might be a separate issue cause I think the error for these usually included the function in question. Unfortunately I don't have a PostGIS 3.5.1 or 3.5.2 lying around. I tested this on 3.6.1 and behaved correctly: Can you try this and see if you get the same area. {{{ DROP TABLE IF EXISTS public.test; CREATE TABLE public.test AS SELECT ST_MakeEnvelope(35,45, 36,i, 4326) AS geom FROM generate_series(46,50) AS i; ANALYZE public.test; DROP MATERIALIZED VIEW IF EXISTS test_grid; CREATE MATERIALIZED VIEW test_grid AS SELECT * FROM ST_SquareGrid( 0.1, ST_SetSRID(ST_EstimatedExtent('public', 'test', 'geom'), 4326) ) AS g; SET search_path=pg_catalog; SELECT * FROM public.test_grid; }}} Can you also confirm your public.pictures.geom column is really a geometry or geography. You can do that in psql with {{{ \d+ public.pictures }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 29 07:54:19 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 29 Jan 2026 15:54:19 -0000 Subject: [PostGIS] #5790: Postgis-functions in Materialized views fail in Postgres 17 due to not fully qualified search path In-Reply-To: <047.90df15410697a6cb181cc7a3c9438a1d@osgeo.org> References: <047.90df15410697a6cb181cc7a3c9438a1d@osgeo.org> Message-ID: <062.6723cc3d07f5ce52b3daef9402d08735@osgeo.org> #5790: Postgis-functions in Materialized views fail in Postgres 17 due to not fully qualified search path ----------------------+--------------------------- Reporter: maxbo | Owner: robe Type: defect | Status: closed Priority: high | Milestone: PostGIS 3.4.4 Component: postgis | Version: 3.4.x Resolution: fixed | Keywords: ----------------------+--------------------------- Comment (by landry): i've tried your testcase, and it works here. now that i look again at the MV definition, something feels.. wrong with the type ? {{{ panoramax=> \d+ public.pictures Table "public.pictures" Column | Type | Collation | Nullable | Default | Storage | Compression | Stats target | Description ----------------------+---------------------------------+-----------+----------+--------------------------------------------------+----------+-------------+--------------+------------- id | uuid | | not null | public.uuid_generate_v4() | plain | | | status | public.picture_status | | not null | 'waiting-for-process'::public.picture_status | plain | | | ts | timestamp with time zone | | not null | CURRENT_TIMESTAMP | plain | | | heading | integer | | | | plain | | | metadata | jsonb | | | | extended | | | geom | public.geometry(Point,4326) | | not null | | main | | | account_id | uuid | | not null | | plain | | | inserted_at | timestamp with time zone | | not null | CURRENT_TIMESTAMP | plain | | | processed_at | timestamp with time zone | | | | plain | | | nb_errors | integer | | not null | 0 | plain | | | process_error | character varying | | | | extended | | | heading_computed | boolean | | not null | false | plain | | | exif | jsonb | | | | extended | | | preparing_status | public.picture_preparing_status | | not null | 'not-processed'::public.picture_preparing_status | plain | | | last_account_to_edit | uuid | | | | plain | | | original_content_md5 | uuid | | | | plain | | | upload_set_id | uuid | | | | plain | | | gps_accuracy_m | double precision | | | | plain | | | h_pixel_density | integer | | | | plain | | | blurring_id | character varying | | | | extended | | | updated_at | timestamp with time zone | | | CURRENT_TIMESTAMP | plain | | | visibility | public.visibility_status | | | 'anyone'::public.visibility_status | plain | | | Indexes: }}} -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 29 08:21:22 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 29 Jan 2026 16:21:22 -0000 Subject: [PostGIS] #5790: Postgis-functions in Materialized views fail in Postgres 17 due to not fully qualified search path In-Reply-To: <047.90df15410697a6cb181cc7a3c9438a1d@osgeo.org> References: <047.90df15410697a6cb181cc7a3c9438a1d@osgeo.org> Message-ID: <062.a79cec05ad75a27afc17978a906b06fc@osgeo.org> #5790: Postgis-functions in Materialized views fail in Postgres 17 due to not fully qualified search path ----------------------+--------------------------- Reporter: maxbo | Owner: robe Type: defect | Status: closed Priority: high | Milestone: PostGIS 3.4.4 Component: postgis | Version: 3.4.x Resolution: fixed | Keywords: ----------------------+--------------------------- Comment (by robe): Replying to [comment:11 landry]: > i've tried your testcase, and it works here. now that i look again at the MV definition, something feels.. wrong with the type ? > > The type is fine. It shows it like that if you search_path doesn't include public. For example if you do {{{ set search_path=public; \d+ public.pictures }}} It will probably show just plain geometry. So only thing I can think of is something fishy with the permissions of your app. Do you get the same issue when you select from your mat view in PSQL? -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Thu Jan 29 09:36:14 2026 From: trac at osgeo.org (PostGIS) Date: Thu, 29 Jan 2026 17:36:14 -0000 Subject: [PostGIS] #6034: Missing node when adding overlapping line In-Reply-To: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> References: <050.00fe4cf3809caf26d3d25a602c774226@osgeo.org> Message-ID: <065.1959b679490636eaa78022c80ada5ce6@osgeo.org> #6034: Missing node when adding overlapping line --------------------------------+------------------- Reporter: Lars Aksel Opsahl | Owner: strk Type: defect | Status: new Priority: medium | Milestone: Component: topology | Version: 3.6.x Resolution: | Keywords: --------------------------------+------------------- Comment (by Lars Aksel Opsahl): It seems like ST_SimplifyVW(geom, 1e-10) can be an option for the new case above. And with your new findVertexSegmentPairsBelowDistance I will do more testing for this different case. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project. From trac at osgeo.org Fri Jan 30 10:59:24 2026 From: trac at osgeo.org (PostGIS) Date: Fri, 30 Jan 2026 18:59:24 -0000 Subject: [PostGIS] #6005: ST_ProjectionBounds(:srid) function In-Reply-To: <046.8f0eea109a6fd8fc7b912eade58a2b6f@osgeo.org> References: <046.8f0eea109a6fd8fc7b912eade58a2b6f@osgeo.org> Message-ID: <061.02a21700d9cdbca90ab61eb6b2fd3f1e@osgeo.org> #6005: ST_ProjectionBounds(:srid) function --------------------------+--------------------------- Reporter: strk | Owner: pramsey Type: enhancement | Status: closed Priority: medium | Milestone: PostGIS 3.7.0 Component: postgis | Version: master Resolution: worksforme | Keywords: --------------------------+--------------------------- Changes (by pramsey): * resolution: => worksforme * status: new => closed Comment: This exists {{{ SELECT st_astext(st_makeenvelope( st_x(point_sw), st_y(point_sw), st_x(point_ne), st_y(point_ne))) FROM postgis_srs('epsg', '3005'); }}} And there is also {{{ SELECT auth_name, auth_srid,srname FROM postgis_srs_search('SRID=4326;POINT(-120.3273 50.6745)'); }}} For searches of "useful" projections given an input object. -- Ticket URL: PostGIS The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.