[SCM] PostGIS branch master updated. 3.7.0alpha1-666-g8483c4d63

git at osgeo.org git at osgeo.org
Mon Jul 20 11:42:11 PDT 2026


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

The branch, master has been updated
       via  8483c4d6367e0cd535ab1e8b78bea64cb10d9cf3 (commit)
      from  8bafa43152c07f386224f6ae0c2052b570b2fd82 (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 8483c4d6367e0cd535ab1e8b78bea64cb10d9cf3
Author: Darafei Praliaskouski <komzpa at gmail.com>
Date:   Mon Jul 20 11:42:10 2026 -0700

    docs: render native solid examples as faces (!478)
    
    Fix the generated visual-example renderer for native geometry output so unitary solid/surface values are decomposed into faces before SVG projection and 3D styling.
    
    After HEXEWKB/native geometry output replaced ST_AsText in examples, the visual payload used ST_NumGeometries/ST_GeometryN to split render parts. For a unitary POLYHEDRALSURFACE or TIN, ST_NumGeometries returns one object, so the doc renderer lost the per-face depth, shading, and hidden-edge data needed by the 3D SVG view.
    
    This keeps the generated images path and changes the visual payload to use ST_Dump, preserving face-level rendering while still using ST_AsSVG for the final 2D path fragments. ST_AsSVG itself already emits multi-path output for TIN/POLYHEDRALSURFACE; the missing piece was the doc renderer part decomposition.
    
    References https://trac.osgeo.org/postgis/ticket/6105.
    
    Tests:
    - python3 utils/test_postgis_exampletest.py
    - git diff --check
    - make -C doc check
    - make -C regress visual-examples
    - SQL smoke: ST_NumGeometries(POLYHEDRALSURFACE)=1 while ST_Dump yields polygon faces
    
    ---------
    
    Co-authored-by: Darafei Praliaskouski <me at komzpa.net>
    Reviewed-on: https://gitea.osgeo.org/postgis/postgis/pulls/478

diff --git a/utils/postgis_exampletest.py b/utils/postgis_exampletest.py
index d79d7839f..9c730ac50 100755
--- a/utils/postgis_exampletest.py
+++ b/utils/postgis_exampletest.py
@@ -2028,13 +2028,10 @@ WITH raw AS (
     COALESCE(total_points, ST_NPoints(framed.geom)) AS total_points,
     marker_scale,
     GeometryType(framed.geom) AS root_type,
-    part.geom
+    dumped.geom
   FROM framed
-  CROSS JOIN LATERAL generate_series(1, ST_NumGeometries(framed.geom)) AS part_num(n)
-  CROSS JOIN LATERAL (
-    SELECT ST_GeometryN(framed.geom, part_num.n) AS geom
-  ) AS part
-  WHERE NOT ST_IsEmpty(part.geom)
+  CROSS JOIN LATERAL ST_Dump(framed.geom) AS dumped(path, geom)
+  WHERE NOT ST_IsEmpty(dumped.geom)
 ), translated_parts AS (
   SELECT ord, source, label, row_num, column_num, parts.frame, source_point_count,
     total_points, marker_scale, root_type,
diff --git a/utils/test_postgis_exampletest.py b/utils/test_postgis_exampletest.py
index f79d30287..46d368b89 100644
--- a/utils/test_postgis_exampletest.py
+++ b/utils/test_postgis_exampletest.py
@@ -1386,10 +1386,10 @@ class VisualExampleTest(unittest.TestCase):
         self.assertIn("'has_z'", queries[0])
         self.assertIn("'points_xyz'", queries[0])
         self.assertIn("CROSS JOIN LATERAL", queries[0])
-        self.assertIn("generate_series(1, ST_NumGeometries(framed.geom))", queries[0])
-        self.assertIn("ST_GeometryN(framed.geom, part_num.n) AS geom", queries[0])
-        self.assertIn("WHERE NOT ST_IsEmpty(part.geom)", queries[0])
-        self.assertNotIn("CROSS JOIN LATERAL ST_Dump", queries[0])
+        self.assertIn("CROSS JOIN LATERAL ST_Dump(framed.geom)", queries[0])
+        self.assertIn("WHERE NOT ST_IsEmpty(dumped.geom)", queries[0])
+        self.assertNotIn("generate_series(1, ST_NumGeometries(framed.geom))", queries[0])
+        self.assertNotIn("ST_GeometryN(framed.geom, part_num.n) AS geom", queries[0])
         self.assertNotIn("WHERE GeometryType(framed.geom) = 'CURVEPOLYGON'", queries[0])
         self.assertNotIn("WHERE GeometryType(framed.geom) <> 'CURVEPOLYGON'", queries[0])
         self.assertIn("geom AS render_geom", queries[0])

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

Summary of changes:
 utils/postgis_exampletest.py      | 9 +++------
 utils/test_postgis_exampletest.py | 8 ++++----
 2 files changed, 7 insertions(+), 10 deletions(-)


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list