[postgis-tickets] [SCM] PostGIS branch master updated. 3.2.0-685-g854103fa2

git at osgeo.org git at osgeo.org
Wed Mar 30 11:42:04 PDT 2022


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  854103fa2e087b53485c8cf403a1fcb952146be2 (commit)
       via  efa1da72fced9c04a7debbdf22e5d5290c47b9f5 (commit)
      from  856a9a98d6729c3b581f4f0ce153fdc908792719 (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 854103fa2e087b53485c8cf403a1fcb952146be2
Author: Sandro Santilli <strk at kbt.io>
Date:   Wed Mar 30 12:39:33 2022 +0200

    Add index on relation(element_id) and use it from RemEdge functions
    
    Closes #2083

diff --git a/NEWS b/NEWS
index 173815cd2..cdbfff631 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,8 @@ PostGIS 3.3.0dev
   - Drop support for PostgreSQL 9.6 and 10 (Regina Obe)
 
  * Enhancements *
+  - #2083, Add index on topology.relation(element_id) and use it from
+    RemEdge functions (Sandro Santilli)
   - #5118, Allow dropping topologies with missing topogeometry sequences
     (Sandro Santilli)
   - #5111, faster topology face MBR computation (Sandro Santilli)
diff --git a/topology/postgis_topology.c b/topology/postgis_topology.c
index bd5aeb137..e1e9076af 100644
--- a/topology/postgis_topology.c
+++ b/topology/postgis_topology.c
@@ -2194,7 +2194,8 @@ cb_updateTopoGeomEdgeSplit ( const LWT_BE_TOPOLOGY* topo,
   }
   appendStringInfo( sql, " FROM \"%s\".relation r %s topology.layer l WHERE "
                     "l.topology_id = %d AND l.level = 0 AND l.layer_id = r.layer_id "
-                    "AND abs(r.element_id) = %" LWTFMT_ELEMID " AND r.element_type = 2",
+                    "AND r.element_id IN ( %" LWTFMT_ELEMID ", -%" LWTFMT_ELEMID
+                    ") AND r.element_type = 2",
                     topo->name, (new_edge2 == -1 ? "," : "USING" ), topo->id, split_edge );
   if ( new_edge2 != -1 )
   {
diff --git a/topology/sql/manage/CreateTopology.sql.in b/topology/sql/manage/CreateTopology.sql.in
index 202cae33a..75cd3b956 100644
--- a/topology/sql/manage/CreateTopology.sql.in
+++ b/topology/sql/manage/CreateTopology.sql.in
@@ -183,6 +183,12 @@ BEGIN
         element_type integer NOT NULL,
         UNIQUE(layer_id,topogeo_id,element_id,element_type)
       );
+      ------- Add index on element_type, element_id to speed up
+      ------- queries looking for TopoGeometries using specific
+      ------- primitive elements of the topology
+      ------- See http://trac.osgeo.org/postgis/ticket/2083
+      CREATE INDEX relation_element_id_idx
+        ON %1$I.relation (element_id);
 
       CREATE TRIGGER relation_integrity_checks
       BEFORE UPDATE OR INSERT ON %1$I.relation

commit efa1da72fced9c04a7debbdf22e5d5290c47b9f5
Author: Sandro Santilli <strk at kbt.io>
Date:   Wed Mar 30 12:21:05 2022 +0200

    Put CreateTopology function in its own file

diff --git a/topology/sql/manage/CreateTopology.sql.in b/topology/sql/manage/CreateTopology.sql.in
new file mode 100644
index 000000000..202cae33a
--- /dev/null
+++ b/topology/sql/manage/CreateTopology.sql.in
@@ -0,0 +1,271 @@
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+--
+--
+-- PostGIS - Spatial Types for PostgreSQL
+-- http://postgis.net
+--
+-- Copyright (C) 2010, 2011 Sandro Santilli <strk at kbt.io>
+-- Copyright (C) 2005 Refractions Research Inc.
+--
+-- This is free software; you can redistribute and/or modify it under
+-- the terms of the GNU General Public Licence. See the COPYING file.
+--
+-- Author: Sandro Santilli <strk at kbt.io>
+--
+-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+
+--{
+--  CreateTopology(name, SRID, precision, hasZ)
+--
+-- Create a topology schema, add a topology info record
+-- in the topology.topology relation, return it's numeric
+-- id.
+--
+CREATE OR REPLACE FUNCTION topology.CreateTopology(atopology varchar, srid integer, prec float8, hasZ boolean)
+RETURNS integer
+AS
+$BODY$
+DECLARE
+  rec RECORD;
+  topology_id integer;
+  sql TEXT;
+  zsuffix TEXT := '';
+BEGIN
+
+--  FOR rec IN SELECT * FROM pg_namespace WHERE text(nspname) = atopology
+--  LOOP
+--    RAISE EXCEPTION 'SQL/MM Spatial exception - schema already exists';
+--  END LOOP;
+
+  IF hasZ THEN
+    zsuffix := 'z';
+  END IF;
+
+  IF srid < 0 THEN
+    RAISE NOTICE 'SRID value % converted to the officially unknown SRID value 0', srid;
+    srid = 0;
+  END IF;
+
+  ------ Fetch next id for the new topology
+  FOR rec IN SELECT nextval('topology.topology_id_seq')
+  LOOP
+    topology_id = rec.nextval;
+  END LOOP;
+
+  sql := format(
+    $$
+      CREATE SCHEMA %1$I;
+
+      -------------{ face CREATION
+      CREATE TABLE %1$I.face(
+        face_id SERIAL,
+        mbr GEOMETRY(polygon, %2$L), -- 2d only mbr is good enough
+        CONSTRAINT face_primary_key
+        PRIMARY KEY(face_id)
+      );
+
+      -- Face standard view description
+      COMMENT ON TABLE %1$I.face IS
+      'Contains face topology primitives';
+
+      -------------} END OF face CREATION
+
+      --------------{ node CREATION
+
+      CREATE TABLE %1$I.node(
+        node_id SERIAL,
+        containing_face INTEGER,
+        geom GEOMETRY(point%3$s, %2$L),
+        CONSTRAINT node_primary_key
+          PRIMARY KEY(node_id),
+        CONSTRAINT face_exists
+          FOREIGN KEY(containing_face)
+          REFERENCES %1$I.face(face_id)
+      );
+
+      -- Node standard view description
+      COMMENT ON TABLE %1$I.node IS
+      'Contains node topology primitives';
+
+      --------------} END OF node CREATION
+
+      --------------{ edge CREATION
+
+      -- edge_data table
+      CREATE TABLE %1$I.edge_data (
+        edge_id SERIAL NOT NULL PRIMARY KEY,
+        start_node INTEGER NOT NULL,
+        end_node INTEGER NOT NULL,
+        next_left_edge INTEGER NOT NULL,
+        abs_next_left_edge INTEGER NOT NULL,
+        next_right_edge INTEGER NOT NULL,
+        abs_next_right_edge INTEGER NOT NULL,
+        left_face INTEGER NOT NULL,
+        right_face INTEGER NOT NULL,
+        geom GEOMETRY(linestring%3$s, %2$L) NOT NULL,
+
+        CONSTRAINT start_node_exists
+          FOREIGN KEY(start_node)
+          REFERENCES %1$I.node(node_id),
+
+        CONSTRAINT end_node_exists
+          FOREIGN KEY(end_node)
+          REFERENCES %1$I.node(node_id),
+
+        CONSTRAINT left_face_exists
+          FOREIGN KEY(left_face)
+          REFERENCES %1$I.face(face_id),
+
+        CONSTRAINT right_face_exists
+          FOREIGN KEY(right_face)
+          REFERENCES %1$I.face(face_id),
+
+        CONSTRAINT next_left_edge_exists
+          FOREIGN KEY(abs_next_left_edge)
+          REFERENCES %1$I.edge_data(edge_id)
+          DEFERRABLE INITIALLY DEFERRED,
+
+        CONSTRAINT next_right_edge_exists
+          FOREIGN KEY(abs_next_right_edge)
+          REFERENCES %1$I .edge_data(edge_id)
+          DEFERRABLE INITIALLY DEFERRED
+      );
+
+      -- edge standard view (select rule)
+      CREATE VIEW %1$I.edge AS
+      SELECT
+        edge_id, start_node, end_node, next_left_edge,
+        next_right_edge, left_face, right_face, geom
+      FROM %1$I.edge_data;
+
+      -- Edge standard view description
+      COMMENT ON VIEW %1$I.edge IS
+      'Contains edge topology primitives';
+      COMMENT ON COLUMN %1$I.edge.edge_id IS
+      'Unique identifier of the edge';
+      COMMENT ON COLUMN %1$I.edge.start_node IS
+      'Unique identifier of the node at the start of the edge';
+      COMMENT ON COLUMN %1$I.edge.end_node IS
+      'Unique identifier of the node at the end of the edge';
+      COMMENT ON COLUMN %1$I.edge.next_left_edge IS
+      'Unique identifier of the next edge of the face on the left (when looking in the direction from START_NODE to END_NODE), moving counterclockwise around the face boundary';
+      COMMENT ON COLUMN %1$I.edge.next_right_edge IS
+      'Unique identifier of the next edge of the face on the right (when looking in the direction from START_NODE to END_NODE), moving counterclockwise around the face boundary';
+      COMMENT ON COLUMN %1$I.edge.left_face IS
+      'Unique identifier of the face on the left side of the edge when looking in the direction from START_NODE to END_NODE';
+      COMMENT ON COLUMN %1$I.edge.right_face IS
+      'Unique identifier of the face on the right side of the edge when looking in the direction from START_NODE to END_NODE';
+      COMMENT ON COLUMN %1$I.edge.geom IS
+      'The geometry of the edge';
+
+      -- edge standard view (insert rule)
+      CREATE RULE edge_insert_rule AS
+      ON INSERT TO %1$I.edge
+      DO INSTEAD INSERT into %1$I.edge_data
+      VALUES (
+        NEW.edge_id, NEW.start_node, NEW.end_node,
+        NEW.next_left_edge, abs(NEW.next_left_edge),
+        NEW.next_right_edge, abs(NEW.next_right_edge),
+        NEW.left_face, NEW.right_face, NEW.geom
+      );
+
+      --------------} END OF edge CREATION
+
+      --------------{ layer sequence
+      CREATE SEQUENCE %1$I.layer_id_seq;
+      --------------} layer sequence
+
+      --------------{ relation CREATION
+      CREATE TABLE %1$I.relation (
+        topogeo_id integer NOT NULL,
+        layer_id integer NOT NULL,
+        element_id integer NOT NULL,
+        element_type integer NOT NULL,
+        UNIQUE(layer_id,topogeo_id,element_id,element_type)
+      );
+
+      CREATE TRIGGER relation_integrity_checks
+      BEFORE UPDATE OR INSERT ON %1$I.relation
+      FOR EACH ROW EXECUTE PROCEDURE
+      topology.RelationTrigger(%4$L, %1$L);
+      --------------} END OF relation CREATION
+
+      ------- Default (world) face
+      INSERT INTO %1$I.face(face_id) VALUES(0);
+
+      ------- GiST index on face
+      CREATE INDEX face_gist ON %1$I.face
+      USING gist (mbr);
+
+      ------- GiST index on node
+      CREATE INDEX node_gist ON %1$I.node
+      USING gist (geom);
+
+      ------- GiST index on edge
+      CREATE INDEX edge_gist ON %1$I.edge_data
+      USING gist (geom);
+
+      ------- Indexes on left_face and right_face of edge_data
+      ------- NOTE: these indexes speed up GetFaceGeometry (and thus
+      -------       TopoGeometry::Geometry) by a factor of 10 !
+      -------       See http://trac.osgeo.org/postgis/ticket/806
+      CREATE INDEX edge_left_face_idx
+        ON %1$I.edge_data (left_face);
+      CREATE INDEX edge_right_face_idx
+        ON %1$I.edge_data (right_face);
+
+      ------- Indexes on start_node and end_node of edge_data
+      ------- NOTE: this indexes speed up node deletion
+      -------       by a factor of 1000 !
+      -------       See http://trac.osgeo.org/postgis/ticket/2082
+      CREATE INDEX edge_start_node_idx
+        ON %1$I.edge_data (start_node);
+      CREATE INDEX edge_end_node_idx
+        ON %1$I.edge_data (end_node);
+
+      -- TODO: consider also adding an index on node.containing_face
+
+    $$,
+    atopology,   -- %1
+    srid,        -- %2
+    zsuffix,     -- %3
+    topology_id  -- %4
+  );
+#ifdef POSTGIS_TOPOLOGY_DEBUG
+  RAISE DEBUG 'SQL: %', sql;
+#endif
+  EXECUTE sql;
+
+  ------- Add record to the "topology" metadata table
+  INSERT INTO topology.topology (id, name, srid, precision, hasZ)
+  VALUES (topology_id, atopology, srid, prec, hasZ);
+
+  RETURN topology_id;
+END
+$BODY$
+LANGUAGE 'plpgsql' VOLATILE STRICT;
+
+--} CreateTopology
+
+--{ CreateTopology wrappers for unspecified srid or precision or hasZ
+
+--  CreateTopology(name, SRID, precision) -- hasZ = false
+CREATE OR REPLACE FUNCTION topology.CreateTopology(toponame varchar, srid integer, prec float8)
+RETURNS integer AS
+' SELECT topology.CreateTopology($1, $2, $3, false);'
+LANGUAGE 'sql' VOLATILE STRICT;
+
+--  CreateTopology(name, SRID) -- precision = 0
+CREATE OR REPLACE FUNCTION topology.CreateTopology(varchar, integer)
+RETURNS integer AS
+' SELECT topology.CreateTopology($1, $2, 0); '
+LANGUAGE 'sql' VOLATILE STRICT;
+
+--  CreateTopology(name) -- srid = unknown, precision = 0
+CREATE OR REPLACE FUNCTION topology.CreateTopology(varchar)
+RETURNS integer AS
+$$ SELECT topology.CreateTopology($1, ST_SRID('POINT EMPTY'::geometry), 0); $$
+LANGUAGE 'sql' VOLATILE STRICT;
+
+--} CreateTopology
+
diff --git a/topology/topology.sql.in b/topology/topology.sql.in
index c7f4e3063..ebc62a5af 100644
--- a/topology/topology.sql.in
+++ b/topology/topology.sql.in
@@ -1435,261 +1435,6 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 -- 7.3+ explicit cast
 CREATE CAST (topology.TopoGeometry AS Geometry) WITH FUNCTION topology.Geometry(topology.TopoGeometry) AS IMPLICIT;
 
---{
---  CreateTopology(name, SRID, precision, hasZ)
---
--- Create a topology schema, add a topology info record
--- in the topology.topology relation, return it's numeric
--- id.
---
-CREATE OR REPLACE FUNCTION topology.CreateTopology(atopology varchar, srid integer, prec float8, hasZ boolean)
-RETURNS integer
-AS
-$BODY$
-DECLARE
-  rec RECORD;
-  topology_id integer;
-  sql TEXT;
-  zsuffix TEXT := '';
-BEGIN
-
---  FOR rec IN SELECT * FROM pg_namespace WHERE text(nspname) = atopology
---  LOOP
---    RAISE EXCEPTION 'SQL/MM Spatial exception - schema already exists';
---  END LOOP;
-
-  IF hasZ THEN
-    zsuffix := 'z';
-  END IF;
-
-  IF srid < 0 THEN
-    RAISE NOTICE 'SRID value % converted to the officially unknown SRID value 0', srid;
-    srid = 0;
-  END IF;
-
-  ------ Fetch next id for the new topology
-  FOR rec IN SELECT nextval('topology.topology_id_seq')
-  LOOP
-    topology_id = rec.nextval;
-  END LOOP;
-
-  sql := format(
-    $$
-      CREATE SCHEMA %1$I;
-
-      -------------{ face CREATION
-      CREATE TABLE %1$I.face(
-        face_id SERIAL,
-        mbr GEOMETRY(polygon, %2$L), -- 2d only mbr is good enough
-        CONSTRAINT face_primary_key
-        PRIMARY KEY(face_id)
-      );
-
-      -- Face standard view description
-      COMMENT ON TABLE %1$I.face IS
-      'Contains face topology primitives';
-
-      -------------} END OF face CREATION
-
-      --------------{ node CREATION
-
-      CREATE TABLE %1$I.node(
-        node_id SERIAL,
-        containing_face INTEGER,
-        geom GEOMETRY(point%3$s, %2$L),
-        CONSTRAINT node_primary_key
-          PRIMARY KEY(node_id),
-        CONSTRAINT face_exists
-          FOREIGN KEY(containing_face)
-          REFERENCES %1$I.face(face_id)
-      );
-
-      -- Node standard view description
-      COMMENT ON TABLE %1$I.node IS
-      'Contains node topology primitives';
-
-      --------------} END OF node CREATION
-
-      --------------{ edge CREATION
-
-      -- edge_data table
-      CREATE TABLE %1$I.edge_data (
-        edge_id SERIAL NOT NULL PRIMARY KEY,
-        start_node INTEGER NOT NULL,
-        end_node INTEGER NOT NULL,
-        next_left_edge INTEGER NOT NULL,
-        abs_next_left_edge INTEGER NOT NULL,
-        next_right_edge INTEGER NOT NULL,
-        abs_next_right_edge INTEGER NOT NULL,
-        left_face INTEGER NOT NULL,
-        right_face INTEGER NOT NULL,
-        geom GEOMETRY(linestring%3$s, %2$L) NOT NULL,
-
-        CONSTRAINT start_node_exists
-          FOREIGN KEY(start_node)
-          REFERENCES %1$I.node(node_id),
-
-        CONSTRAINT end_node_exists
-          FOREIGN KEY(end_node)
-          REFERENCES %1$I.node(node_id),
-
-        CONSTRAINT left_face_exists
-          FOREIGN KEY(left_face)
-          REFERENCES %1$I.face(face_id),
-
-        CONSTRAINT right_face_exists
-          FOREIGN KEY(right_face)
-          REFERENCES %1$I.face(face_id),
-
-        CONSTRAINT next_left_edge_exists
-          FOREIGN KEY(abs_next_left_edge)
-          REFERENCES %1$I.edge_data(edge_id)
-          DEFERRABLE INITIALLY DEFERRED,
-
-        CONSTRAINT next_right_edge_exists
-          FOREIGN KEY(abs_next_right_edge)
-          REFERENCES %1$I .edge_data(edge_id)
-          DEFERRABLE INITIALLY DEFERRED
-      );
-
-      -- edge standard view (select rule)
-      CREATE VIEW %1$I.edge AS
-      SELECT
-        edge_id, start_node, end_node, next_left_edge,
-        next_right_edge, left_face, right_face, geom
-      FROM %1$I.edge_data;
-
-      -- Edge standard view description
-      COMMENT ON VIEW %1$I.edge IS
-      'Contains edge topology primitives';
-      COMMENT ON COLUMN %1$I.edge.edge_id IS
-      'Unique identifier of the edge';
-      COMMENT ON COLUMN %1$I.edge.start_node IS
-      'Unique identifier of the node at the start of the edge';
-      COMMENT ON COLUMN %1$I.edge.end_node IS
-      'Unique identifier of the node at the end of the edge';
-      COMMENT ON COLUMN %1$I.edge.next_left_edge IS
-      'Unique identifier of the next edge of the face on the left (when looking in the direction from START_NODE to END_NODE), moving counterclockwise around the face boundary';
-      COMMENT ON COLUMN %1$I.edge.next_right_edge IS
-      'Unique identifier of the next edge of the face on the right (when looking in the direction from START_NODE to END_NODE), moving counterclockwise around the face boundary';
-      COMMENT ON COLUMN %1$I.edge.left_face IS
-      'Unique identifier of the face on the left side of the edge when looking in the direction from START_NODE to END_NODE';
-      COMMENT ON COLUMN %1$I.edge.right_face IS
-      'Unique identifier of the face on the right side of the edge when looking in the direction from START_NODE to END_NODE';
-      COMMENT ON COLUMN %1$I.edge.geom IS
-      'The geometry of the edge';
-
-      -- edge standard view (insert rule)
-      CREATE RULE edge_insert_rule AS
-      ON INSERT TO %1$I.edge
-      DO INSTEAD INSERT into %1$I.edge_data
-      VALUES (
-        NEW.edge_id, NEW.start_node, NEW.end_node,
-        NEW.next_left_edge, abs(NEW.next_left_edge),
-        NEW.next_right_edge, abs(NEW.next_right_edge),
-        NEW.left_face, NEW.right_face, NEW.geom
-      );
-
-      --------------} END OF edge CREATION
-
-      --------------{ layer sequence
-      CREATE SEQUENCE %1$I.layer_id_seq;
-      --------------} layer sequence
-
-      --------------{ relation CREATION
-      CREATE TABLE %1$I.relation (
-        topogeo_id integer NOT NULL,
-        layer_id integer NOT NULL,
-        element_id integer NOT NULL,
-        element_type integer NOT NULL,
-        UNIQUE(layer_id,topogeo_id,element_id,element_type)
-      );
-
-      CREATE TRIGGER relation_integrity_checks
-      BEFORE UPDATE OR INSERT ON %1$I.relation
-      FOR EACH ROW EXECUTE PROCEDURE
-      topology.RelationTrigger(%4$L, %1$L);
-      --------------} END OF relation CREATION
-
-      ------- Default (world) face
-      INSERT INTO %1$I.face(face_id) VALUES(0);
-
-      ------- GiST index on face
-      CREATE INDEX face_gist ON %1$I.face
-      USING gist (mbr);
-
-      ------- GiST index on node
-      CREATE INDEX node_gist ON %1$I.node
-      USING gist (geom);
-
-      ------- GiST index on edge
-      CREATE INDEX edge_gist ON %1$I.edge_data
-      USING gist (geom);
-
-      ------- Indexes on left_face and right_face of edge_data
-      ------- NOTE: these indexes speed up GetFaceGeometry (and thus
-      -------       TopoGeometry::Geometry) by a factor of 10 !
-      -------       See http://trac.osgeo.org/postgis/ticket/806
-      CREATE INDEX edge_left_face_idx
-        ON %1$I.edge_data (left_face);
-      CREATE INDEX edge_right_face_idx
-        ON %1$I.edge_data (right_face);
-
-      ------- Indexes on start_node and end_node of edge_data
-      ------- NOTE: this indexes speed up node deletion
-      -------       by a factor of 1000 !
-      -------       See http://trac.osgeo.org/postgis/ticket/2082
-      CREATE INDEX edge_start_node_idx
-        ON %1$I.edge_data (start_node);
-      CREATE INDEX edge_end_node_idx
-        ON %1$I.edge_data (end_node);
-
-      -- TODO: consider also adding an index on node.containing_face
-
-    $$,
-    atopology,   -- %1
-    srid,        -- %2
-    zsuffix,     -- %3
-    topology_id  -- %4
-  );
-#ifdef POSTGIS_TOPOLOGY_DEBUG
-  RAISE DEBUG 'SQL: %', sql;
-#endif
-  EXECUTE sql;
-
-  ------- Add record to the "topology" metadata table
-  INSERT INTO topology.topology (id, name, srid, precision, hasZ)
-  VALUES (topology_id, atopology, srid, prec, hasZ);
-
-  RETURN topology_id;
-END
-$BODY$
-LANGUAGE 'plpgsql' VOLATILE STRICT;
-
---} CreateTopology
-
---{ CreateTopology wrappers for unspecified srid or precision or hasZ
-
---  CreateTopology(name, SRID, precision) -- hasZ = false
-CREATE OR REPLACE FUNCTION topology.CreateTopology(toponame varchar, srid integer, prec float8)
-RETURNS integer AS
-' SELECT topology.CreateTopology($1, $2, $3, false);'
-LANGUAGE 'sql' VOLATILE STRICT;
-
---  CreateTopology(name, SRID) -- precision = 0
-CREATE OR REPLACE FUNCTION topology.CreateTopology(varchar, integer)
-RETURNS integer AS
-' SELECT topology.CreateTopology($1, $2, 0); '
-LANGUAGE 'sql' VOLATILE STRICT;
-
---  CreateTopology(name) -- srid = unknown, precision = 0
-CREATE OR REPLACE FUNCTION topology.CreateTopology(varchar)
-RETURNS integer AS
-$$ SELECT topology.CreateTopology($1, ST_SRID('POINT EMPTY'::geometry), 0); $$
-LANGUAGE 'sql' VOLATILE STRICT;
-
---} CreateTopology
-
 --{
 --  DropTopology(name)
 --
@@ -1822,6 +1567,7 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 
 --general management --
 #include "sql/manage/ManageHelper.sql.in"
+#include "sql/manage/CreateTopology.sql.in"
 #include "sql/manage/TopologySummary.sql.in"
 #include "sql/manage/CopyTopology.sql.in"
 #include "sql/manage/FindTopology.sql.in"

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

Summary of changes:
 NEWS                                      |   2 +
 topology/postgis_topology.c               |   3 +-
 topology/sql/manage/CreateTopology.sql.in | 277 ++++++++++++++++++++++++++++++
 topology/topology.sql.in                  | 256 +--------------------------
 4 files changed, 282 insertions(+), 256 deletions(-)
 create mode 100644 topology/sql/manage/CreateTopology.sql.in


hooks/post-receive
-- 
PostGIS


More information about the postgis-tickets mailing list