From: Sandro Santilli Date: Thu, 26 Nov 2015 09:08:10 +0000 (+0000) Subject: Fix handling of hierarchical topo layers with multiple topologies X-Git-Tag: 2.3.0beta1~363 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0f2280c82c4889161a03e180c89893f8ad6c8b3a;p=postgis 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 --- 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;