From 0f2280c82c4889161a03e180c89893f8ad6c8b3a Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Thu, 26 Nov 2015 09:08:10 +0000 Subject: [PATCH] Fix handling of hierarchical topo layers with multiple topologies Different layers with same id in different topologies confused GetTopoGeomElements and AddTopoGeometryColumn. See #3378 git-svn-id: http://svn.osgeo.org/postgis/trunk@14433 b70326c6-7e19-0410-871a-916f4a2858ee --- topology/topology.sql.in | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/topology/topology.sql.in b/topology/topology.sql.in index 070266924..62e15d6f5 100644 --- a/topology/topology.sql.in +++ b/topology/topology.sql.in @@ -595,6 +595,7 @@ BEGIN 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 @@ DECLARE 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; -- 2.40.0