[postgis-tickets] r14433 - Fix handling of hierarchical topo layers with multiple topologies

Sandro Santilli strk at keybit.net
Thu Nov 26 01:08:10 PST 2015


Author: strk
Date: 2015-11-26 01:08:10 -0800 (Thu, 26 Nov 2015)
New Revision: 14433

Modified:
   trunk/topology/topology.sql.in
Log:
Fix handling of hierarchical topo layers with multiple topologies

Different layers with same id in different topologies confused
GetTopoGeomElements and AddTopoGeometryColumn.

See #3378

Modified: trunk/topology/topology.sql.in
===================================================================
--- trunk/topology/topology.sql.in	2015-11-25 23:22:15 UTC (rev 14432)
+++ trunk/topology/topology.sql.in	2015-11-26 09:08:10 UTC (rev 14433)
@@ -595,6 +595,7 @@
   IF child IS NOT NULL THEN
     SELECT level + 1 FROM topology.layer
       WHERE layer_id = child
+        AND topology_id = topoid
       INTO newlevel;
     IF newlevel IS NULL THEN
       RAISE EXCEPTION 'Child layer % does not exist in topology "%"', child, toponame;
@@ -1152,13 +1153,21 @@
   query2 text;
   lyr RECORD;
   ok bool;
+  topoid INTEGER;
 BEGIN
 
+  -- Get topology id
+  SELECT id INTO topoid
+    FROM topology.topology WHERE name = toponame;
+  IF NOT FOUND THEN
+    RAISE EXCEPTION 'Topology % does not exist', quote_literal(toponame);
+  END IF;
+
   -- Get layer info
   ok = false;
-  FOR rec IN EXECUTE 'SELECT * FROM '
-       ' topology.layer '
-       ' WHERE layer_id = ' || layerid
+  FOR rec IN EXECUTE 'SELECT * FROM topology.layer '
+       ' WHERE layer_id = $1 AND topology_id = $2'
+       USING layerid, topoid
   LOOP
     lyr = rec;
     ok = true;



More information about the postgis-tickets mailing list