]> granicus.if.org Git - postgis/commitdiff
Convert to $$ quoting (ticket #714)
authorSandro Santilli <strk@keybit.net>
Mon, 21 Mar 2011 11:04:43 +0000 (11:04 +0000)
committerSandro Santilli <strk@keybit.net>
Mon, 21 Mar 2011 11:04:43 +0000 (11:04 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@6950 b70326c6-7e19-0410-871a-916f4a2858ee

topology/sql/sqlmm.sql
topology/topology.sql.in.c

index 774ee04fc90f0220d68d69d8fd8c49331de6dadb..552a5c2d20b61b68622048ca122503d74de9d7f7 100644 (file)
@@ -32,7 +32,7 @@
 CREATE OR REPLACE FUNCTION topology.ST_GetFaceEdges(varchar, integer)
        RETURNS setof topology.GetFaceEdges_ReturnType
 AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        aface ALIAS FOR $2;
@@ -43,15 +43,15 @@ BEGIN
        -- 
        IF atopology IS NULL OR aface IS NULL THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - null argument'';
+                'SQL/MM Spatial exception - null argument';
        END IF;
 
        RAISE EXCEPTION
-                ''ST_GetFaceEdges: not implemented yet'';
+                'ST_GetFaceEdges: not implemented yet';
 
 
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_GetFaceEdges
 
@@ -64,7 +64,7 @@ LANGUAGE 'plpgsql' VOLATILE;
 -- 
 CREATE OR REPLACE FUNCTION topology.ST_GetFaceGeometry(varchar, integer)
        RETURNS GEOMETRY AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        aface ALIAS FOR $2;
@@ -75,16 +75,16 @@ BEGIN
        -- 
        IF atopology IS NULL OR aface IS NULL THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - null argument'';
+                'SQL/MM Spatial exception - null argument';
        END IF;
 
        --
        -- Construct face 
        -- 
-       FOR rec IN EXECUTE ''SELECT ST_BuildArea(ST_Collect(geom)) FROM ''
+       FOR rec IN EXECUTE 'SELECT ST_BuildArea(ST_Collect(geom)) FROM '
                || quote_ident(atopology)
-               || ''.edge WHERE left_face = '' || aface || 
-               '' OR right_face = '' || aface 
+               || '.edge WHERE left_face = ' || aface || 
+               ' OR right_face = ' || aface 
        LOOP
                RETURN rec.st_buildarea;
        END LOOP;
@@ -94,9 +94,9 @@ BEGIN
        -- No face found
        -- 
        RAISE EXCEPTION
-       ''SQL/MM Spatial exception - non-existent face.'';
+       'SQL/MM Spatial exception - non-existent face.';
 END
-' 
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_GetFaceGeometry
 
@@ -109,7 +109,7 @@ LANGUAGE 'plpgsql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.ST_AddIsoNode(varchar, integer, geometry)
        RETURNS INTEGER AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        aface ALIAS FOR $2;
@@ -123,16 +123,16 @@ BEGIN
        -- 
        IF atopology IS NULL OR apoint IS NULL THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - null argument'';
+                'SQL/MM Spatial exception - null argument';
        END IF;
 
        --
        -- Apoint must be a point
        --
-       IF substring(geometrytype(apoint), 1, 5) != ''POINT''
+       IF substring(geometrytype(apoint), 1, 5) != 'POINT'
        THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - invalid point'';
+                'SQL/MM Spatial exception - invalid point';
        END IF;
 
        --
@@ -140,28 +140,28 @@ BEGIN
        -- 
        -- We use index AND x/y equality
        --
-       FOR rec IN EXECUTE ''SELECT node_id FROM ''
-               || quote_ident(atopology) || ''.node '' ||
-               ''WHERE geom && '' || quote_literal(apoint::text) || ''::geometry''
-               ||'' AND ST_X(geom) = ST_X(''||quote_literal(apoint::text)||''::geometry)''
-               ||'' AND ST_Y(geom) = ST_Y(''||quote_literal(apoint::text)||''::geometry)''
+       FOR rec IN EXECUTE 'SELECT node_id FROM '
+               || quote_ident(atopology) || '.node ' ||
+               'WHERE geom && ' || quote_literal(apoint::text) || '::geometry'
+               ||' AND ST_X(geom) = ST_X('||quote_literal(apoint::text)||'::geometry)'
+               ||' AND ST_Y(geom) = ST_Y('||quote_literal(apoint::text)||'::geometry)'
        LOOP
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - coincident node'';
+                'SQL/MM Spatial exception - coincident node';
        END LOOP;
 
        --
        -- Check if any edge crosses (intersects) this node
        -- I used _intersects_ here to include boundaries (endpoints)
        --
-       FOR rec IN EXECUTE ''SELECT edge_id FROM ''
-               || quote_ident(atopology) || ''.edge '
-               || ''WHERE geom && '' || quote_literal(apoint::text) 
-               || '' AND ST_Intersects(geom, '' || quote_literal(apoint::text)
-               || ''::geometry)''
+       FOR rec IN EXECUTE 'SELECT edge_id FROM '
+               || quote_ident(atopology) || '.edge 
+               || 'WHERE geom && ' || quote_literal(apoint::text) 
+               || ' AND ST_Intersects(geom, ' || quote_literal(apoint::text)
+               || '::geometry)'
        LOOP
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - edge crosses node.'';
+               'SQL/MM Spatial exception - edge crosses node.';
        END LOOP;
 
 
@@ -171,18 +171,18 @@ BEGIN
        --
        IF aface IS NOT NULL THEN
 
-       FOR rec IN EXECUTE ''SELECT ST_Within(''
-               || quote_literal(apoint::text) || ''::geometry, 
-               topology.ST_GetFaceGeometry(''
-               || quote_literal(atopology) || '', '' || aface ||
-               '')) As within''
+       FOR rec IN EXECUTE 'SELECT ST_Within('
+               || quote_literal(apoint::text) || '::geometry, 
+               topology.ST_GetFaceGeometry('
+               || quote_literal(atopology) || '' || aface ||
+               ')) As within'
        LOOP
-               IF rec.within = ''f'' THEN
+               IF rec.within = 'f' THEN
                        RAISE EXCEPTION
-                       ''SQL/MM Spatial exception - not within face'';
+                       'SQL/MM Spatial exception - not within face';
                ELSIF rec.within IS NULL THEN
                        RAISE EXCEPTION
-                       ''SQL/MM Spatial exception - non-existent face'';
+                       'SQL/MM Spatial exception - non-existent face';
                END IF;
        END LOOP;
 
@@ -191,8 +191,8 @@ BEGIN
        --
        -- Get new node id from sequence
        --
-       FOR rec IN EXECUTE ''SELECT nextval('''''' ||
-               atopology || ''.node_node_id_seq'''')''
+       FOR rec IN EXECUTE 'SELECT nextval(''' ||
+               atopology || '.node_node_id_seq'')'
        LOOP
                nodeid = rec.nextval;
        END LOOP;
@@ -201,20 +201,20 @@ BEGIN
        -- Insert the new row
        --
        IF aface IS NOT NULL THEN
-               EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-                       || ''.node(node_id, geom, containing_face) 
-                       VALUES(''||nodeid||'',''||quote_literal(apoint::text)||
-                       '',''||aface||'')'';
+               EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+                       || '.node(node_id, geom, containing_face) 
+                       VALUES('||nodeid||','||quote_literal(apoint::text)||
+                       ','||aface||')';
        ELSE
-               EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-                       || ''.node(node_id, geom) 
-                       VALUES(''||nodeid||'',''||quote_literal(apoint::text)||
-                       '')'';
+               EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+                       || '.node(node_id, geom) 
+                       VALUES('||nodeid||','||quote_literal(apoint::text)||
+                       ')';
        END IF;
 
        RETURN nodeid;
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_AddIsoNode
 
@@ -314,7 +314,7 @@ $$
 --
 CREATE OR REPLACE FUNCTION topology.ST_RemoveIsoNode(varchar, integer)
        RETURNS TEXT AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        anode ALIAS FOR $2;
@@ -326,27 +326,27 @@ BEGIN
        -- 
        IF atopology IS NULL OR anode IS NULL THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - null argument'';
+                'SQL/MM Spatial exception - null argument';
        END IF;
 
        --
        -- Check node isolation.
        -- 
-       FOR rec IN EXECUTE ''SELECT edge_id FROM ''
-               || quote_ident(atopology) || ''.edge_data '' ||
-               '' WHERE start_node =  '' || anode ||
-               '' OR end_node = '' || anode 
+       FOR rec IN EXECUTE 'SELECT edge_id FROM '
+               || quote_ident(atopology) || '.edge_data ' ||
+               ' WHERE start_node =  ' || anode ||
+               ' OR end_node = ' || anode 
        LOOP
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - not isolated node'';
+                'SQL/MM Spatial exception - not isolated node';
        END LOOP;
 
-       EXECUTE ''DELETE FROM '' || quote_ident(atopology) || ''.node ''
-               || '' WHERE node_id = '' || anode;
+       EXECUTE 'DELETE FROM ' || quote_ident(atopology) || '.node '
+               || ' WHERE node_id = ' || anode;
 
-       RETURN ''Isolated node '' || anode || '' removed'';
+       RETURN 'Isolated node ' || anode || ' removed';
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_RemoveIsoNode
 
@@ -369,7 +369,7 @@ $$ LANGUAGE 'sql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.ST_RemoveIsoEdge(varchar, integer)
        RETURNS TEXT AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        anedge ALIAS FOR $2;
@@ -383,22 +383,22 @@ BEGIN
        -- 
        IF atopology IS NULL OR anedge IS NULL THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - null argument'';
+                'SQL/MM Spatial exception - null argument';
        END IF;
 
        --
        -- Check node existance
        -- 
        ok = false;
-       FOR edge IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data '' ||
-               '' WHERE edge_id =  '' || anedge
+       FOR edge IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data ' ||
+               ' WHERE edge_id =  ' || anedge
        LOOP
                ok = true;
        END LOOP;
        IF NOT ok THEN
                RAISE EXCEPTION
-                 ''SQL/MM Spatial exception - non-existent edge'';
+                 'SQL/MM Spatial exception - non-existent edge';
        END IF;
 
        --
@@ -406,31 +406,31 @@ BEGIN
        -- 
        IF edge.left_face != edge.right_face THEN
                RAISE EXCEPTION
-                 ''SQL/MM Spatial exception - not isolated edge'';
+                 'SQL/MM Spatial exception - not isolated edge';
        END IF;
 
-       FOR rec IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data '
-               || '' WHERE edge_id !=  '' || anedge
-               || '' AND ( start_node = '' || edge.start_node
-               || '' OR start_node = '' || edge.end_node
-               || '' OR end_node = '' || edge.start_node
-               || '' OR end_node = '' || edge.end_node
-               || '' ) ''
+       FOR rec IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data 
+               || ' WHERE edge_id !=  ' || anedge
+               || ' AND ( start_node = ' || edge.start_node
+               || ' OR start_node = ' || edge.end_node
+               || ' OR end_node = ' || edge.start_node
+               || ' OR end_node = ' || edge.end_node
+               || ' ) '
        LOOP
                RAISE EXCEPTION
-                 ''SQL/MM Spatial exception - not isolated edge'';
+                 'SQL/MM Spatial exception - not isolated edge';
        END LOOP;
 
        --
        -- Delete the edge
        --
-       EXECUTE ''DELETE FROM '' || quote_ident(atopology) || ''.edge_data ''
-               || '' WHERE edge_id = '' || anedge;
+       EXECUTE 'DELETE FROM ' || quote_ident(atopology) || '.edge_data '
+               || ' WHERE edge_id = ' || anedge;
 
-       RETURN ''Isolated edge '' || anedge || '' removed'';
+       RETURN 'Isolated edge ' || anedge || ' removed';
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_RemoveIsoEdge
 
@@ -442,7 +442,7 @@ LANGUAGE 'plpgsql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.ST_NewEdgesSplit(varchar, integer, geometry)
        RETURNS INTEGER AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        anedge ALIAS FOR $2;
@@ -465,22 +465,22 @@ BEGIN
        -- 
        IF atopology IS NULL OR anedge IS NULL OR apoint IS NULL THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - null argument'';
+                'SQL/MM Spatial exception - null argument';
        END IF;
 
        --
        -- Check node existance
        -- 
        ok = false;
-       FOR oldedge IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data '' ||
-               '' WHERE edge_id =  '' || anedge
+       FOR oldedge IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data ' ||
+               ' WHERE edge_id =  ' || anedge
        LOOP
                ok = true;
        END LOOP;
        IF NOT ok THEN
                RAISE EXCEPTION
-                 ''SQL/MM Spatial exception - non-existent edge'';
+                 'SQL/MM Spatial exception - non-existent edge';
        END IF;
 
        --
@@ -488,50 +488,50 @@ BEGIN
        -- 
        IF NOT ST_Within(apoint, oldedge.geom) THEN
                RAISE EXCEPTION
-                 ''SQL/MM Spatial exception - point not on edge'';
+                 'SQL/MM Spatial exception - point not on edge';
        END IF;
 
        --
        -- Check if a coincident node already exists
        --
-       FOR rec IN EXECUTE ''SELECT node_id FROM ''
-               || quote_ident(atopology) || ''.node ''
-               || ''WHERE geom && ''
-               || quote_literal(apoint::text) || ''::geometry''
-               || '' AND ST_X(geom) = ST_X(''
-               || quote_literal(apoint::text) || ''::geometry)''
-               || '' AND ST_Y(geom) = ST_Y(''
-               || quote_literal(apoint::text) || ''::geometry)''
+       FOR rec IN EXECUTE 'SELECT node_id FROM '
+               || quote_ident(atopology) || '.node '
+               || 'WHERE geom && '
+               || quote_literal(apoint::text) || '::geometry'
+               || ' AND ST_X(geom) = ST_X('
+               || quote_literal(apoint::text) || '::geometry)'
+               || ' AND ST_Y(geom) = ST_Y('
+               || quote_literal(apoint::text) || '::geometry)'
        LOOP
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - coincident node'';
+                'SQL/MM Spatial exception - coincident node';
        END LOOP;
 
        --
        -- Get new node id
        --
-       FOR rec IN EXECUTE ''SELECT nextval('''''' ||
-               atopology || ''.node_node_id_seq'''')''
+       FOR rec IN EXECUTE 'SELECT nextval(''' ||
+               atopology || '.node_node_id_seq'')'
        LOOP
                nodeid = rec.nextval;
        END LOOP;
 
-       --RAISE NOTICE ''Next node id = % '', nodeid;
+       --RAISE NOTICE 'Next node id = % ', nodeid;
 
        --
        -- Add the new node 
        --
-       EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-               || ''.node(node_id, geom) 
-               VALUES('' || nodeid || '',''
+       EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+               || '.node(node_id, geom) 
+               VALUES(' || nodeid || ','
                || quote_literal(apoint::text)
-               || '')'';
+               || ')';
 
        --
        -- Delete the old edge
        --
-       EXECUTE ''DELETE FROM '' || quote_ident(atopology) || ''.edge_data ''
-               || '' WHERE edge_id = '' || anedge;
+       EXECUTE 'DELETE FROM ' || quote_ident(atopology) || '.edge_data '
+               || ' WHERE edge_id = ' || anedge;
 
        --
        -- Compute new edges
@@ -543,79 +543,79 @@ BEGIN
        --
        -- Get ids for the new edges 
        --
-       FOR rec IN EXECUTE ''SELECT nextval('''''' ||
-               atopology || ''.edge_data_edge_id_seq'''')''
+       FOR rec IN EXECUTE 'SELECT nextval(''' ||
+               atopology || '.edge_data_edge_id_seq'')'
        LOOP
                edgeid1 = rec.nextval;
        END LOOP;
-       FOR rec IN EXECUTE ''SELECT nextval('''''' ||
-               atopology || ''.edge_data_edge_id_seq'''')''
+       FOR rec IN EXECUTE 'SELECT nextval(''' ||
+               atopology || '.edge_data_edge_id_seq'')'
        LOOP
                edgeid2 = rec.nextval;
        END LOOP;
 
-       --RAISE NOTICE ''EdgeId1 % EdgeId2 %'', edgeid1, edgeid2;
+       --RAISE NOTICE 'EdgeId1 % EdgeId2 %', edgeid1, edgeid2;
 
        --
        -- Insert the two new edges
        --
-       EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-               || ''.edge VALUES(''
-               ||edgeid1||'',''||oldedge.start_node
-               ||'',''||nodeid
-               ||'',''||edgeid2
-               ||'',''||oldedge.next_right_edge
-               ||'',''||oldedge.left_face
-               ||'',''||oldedge.right_face
-               ||'',''||quote_literal(edge1::text)
-               ||'')'';
-
-       EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-               || ''.edge VALUES(''
-               ||edgeid2||'',''||nodeid
-               ||'',''||oldedge.end_node
-               ||'',''||oldedge.next_left_edge
-               ||'',-''||edgeid1
-               ||'',''||oldedge.left_face
-               ||'',''||oldedge.right_face
-               ||'',''||quote_literal(edge2::text)
-               ||'')'';
+       EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+               || '.edge VALUES('
+               ||edgeid1||','||oldedge.start_node
+               ||','||nodeid
+               ||','||edgeid2
+               ||','||oldedge.next_right_edge
+               ||','||oldedge.left_face
+               ||','||oldedge.right_face
+               ||','||quote_literal(edge1::text)
+               ||')';
+
+       EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+               || '.edge VALUES('
+               ||edgeid2||','||nodeid
+               ||','||oldedge.end_node
+               ||','||oldedge.next_left_edge
+               ||',-'||edgeid1
+               ||','||oldedge.left_face
+               ||','||oldedge.right_face
+               ||','||quote_literal(edge2::text)
+               ||')';
 
        --
        -- Update all next edge references to match new layout
        --
 
-       EXECUTE ''UPDATE '' || quote_ident(atopology)
-               || ''.edge_data SET next_right_edge = ''
+       EXECUTE 'UPDATE ' || quote_ident(atopology)
+               || '.edge_data SET next_right_edge = '
                || edgeid2
-               || '',''
-               || '' abs_next_right_edge = '' || edgeid2
-               || '' WHERE next_right_edge = '' || anedge;
-       EXECUTE ''UPDATE '' || quote_ident(atopology)
-               || ''.edge_data SET next_right_edge = ''
+               || ','
+               || ' abs_next_right_edge = ' || edgeid2
+               || ' WHERE next_right_edge = ' || anedge;
+       EXECUTE 'UPDATE ' || quote_ident(atopology)
+               || '.edge_data SET next_right_edge = '
                || -edgeid1
-               || '',''
-               || '' abs_next_right_edge = '' || edgeid1
-               || '' WHERE next_right_edge = '' || -anedge;
+               || ','
+               || ' abs_next_right_edge = ' || edgeid1
+               || ' WHERE next_right_edge = ' || -anedge;
 
-       EXECUTE ''UPDATE '' || quote_ident(atopology)
-               || ''.edge_data SET next_left_edge = ''
+       EXECUTE 'UPDATE ' || quote_ident(atopology)
+               || '.edge_data SET next_left_edge = '
                || edgeid1
-               || '',''
-               || '' abs_next_left_edge = '' || edgeid1
-               || '' WHERE next_left_edge = '' || anedge;
-       EXECUTE ''UPDATE '' || quote_ident(atopology)
-               || ''.edge_data SET ''
-               || '' next_left_edge = '' || -edgeid2
-               || '',''
-               || '' abs_next_left_edge = '' || edgeid2
-               || '' WHERE next_left_edge = '' || -anedge;
+               || ','
+               || ' abs_next_left_edge = ' || edgeid1
+               || ' WHERE next_left_edge = ' || anedge;
+       EXECUTE 'UPDATE ' || quote_ident(atopology)
+               || '.edge_data SET '
+               || ' next_left_edge = ' || -edgeid2
+               || ','
+               || ' abs_next_left_edge = ' || edgeid2
+               || ' WHERE next_left_edge = ' || -anedge;
 
        -- Get topology id
         SELECT id FROM topology.topology into topoid
                 WHERE name = atopology;
        IF topoid IS NULL THEN
-               RAISE EXCEPTION ''No topology % registered'',
+               RAISE EXCEPTION 'No topology % registered',
                        quote_ident(atopology);
        END IF;
 
@@ -624,29 +624,29 @@ BEGIN
        -- We only take into considerations non-hierarchical
        -- TopoGeometry here, for obvious reasons.
        --
-       FOR rec IN EXECUTE ''SELECT r.* FROM ''
+       FOR rec IN EXECUTE 'SELECT r.* FROM '
                || quote_ident(atopology)
-               || ''.relation r, topology.layer l ''
-               || '' WHERE ''
-               || '' l.topology_id = '' || topoid
-               || '' AND l.level = 0 ''
-               || '' AND l.layer_id = r.layer_id ''
-               || '' AND abs(r.element_id) = '' || anedge
-               || '' AND r.element_type = 2''
+               || '.relation r, topology.layer l '
+               || ' WHERE '
+               || ' l.topology_id = ' || topoid
+               || ' AND l.level = 0 '
+               || ' AND l.layer_id = r.layer_id '
+               || ' AND abs(r.element_id) = ' || anedge
+               || ' AND r.element_type = 2'
        LOOP
-               --RAISE NOTICE ''TopoGeometry % in layer % contains the edge being split'', rec.topogeo_id, rec.layer_id;
+               --RAISE NOTICE 'TopoGeometry % in layer % contains the edge being split', rec.topogeo_id, rec.layer_id;
 
                -- Delete old reference
-               EXECUTE ''DELETE FROM '' || quote_ident(atopology)
-                       || ''.relation ''
-                       || '' WHERE ''
-                       || ''layer_id = '' || rec.layer_id
-                       || '' AND ''
-                       || ''topogeo_id = '' || rec.topogeo_id
-                       || '' AND ''
-                       || ''element_type = '' || rec.element_type
-                       || '' AND ''
-                       || ''abs(element_id) = '' || anedge;
+               EXECUTE 'DELETE FROM ' || quote_ident(atopology)
+                       || '.relation '
+                       || ' WHERE '
+                       || 'layer_id = ' || rec.layer_id
+                       || ' AND '
+                       || 'topogeo_id = ' || rec.topogeo_id
+                       || ' AND '
+                       || 'element_type = ' || rec.element_type
+                       || ' AND '
+                       || 'abs(element_id) = ' || anedge;
 
                -- Add new reference to edge1
                IF rec.element_id < 0 THEN
@@ -654,17 +654,17 @@ BEGIN
                ELSE
                        tmp = edgeid1;
                END IF;
-               EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-                       || ''.relation ''
-                       || '' VALUES( ''
+               EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+                       || '.relation '
+                       || ' VALUES( '
                        || rec.topogeo_id
-                       || '',''
+                       || ','
                        || rec.layer_id
-                       || '',''
+                       || ','
                        || tmp
-                       || '',''
+                       || ','
                        || rec.element_type
-                       || '')'';
+                       || ')';
 
                -- Add new reference to edge2
                IF rec.element_id < 0 THEN
@@ -672,26 +672,26 @@ BEGIN
                ELSE
                        tmp = edgeid2;
                END IF;
-               EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-                       || ''.relation ''
-                       || '' VALUES( ''
+               EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+                       || '.relation '
+                       || ' VALUES( '
                        || rec.topogeo_id
-                       || '',''
+                       || ','
                        || rec.layer_id
-                       || '',''
+                       || ','
                        || tmp
-                       || '',''
+                       || ','
                        || rec.element_type
-                       || '')'';
+                       || ')';
                        
        END LOOP;
 
-       --RAISE NOTICE ''Edge % split in edges % and % by node %'',
+       --RAISE NOTICE 'Edge % split in edges % and % by node %',
        --      anedge, edgeid1, edgeid2, nodeid;
 
        RETURN nodeid; 
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_NewEdgesSplit
 
@@ -703,7 +703,7 @@ LANGUAGE 'plpgsql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.ST_ModEdgeSplit(varchar, integer, geometry)
        RETURNS INTEGER AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        anedge ALIAS FOR $2;
@@ -726,22 +726,22 @@ BEGIN
        -- 
        IF atopology IS NULL OR anedge IS NULL OR apoint IS NULL THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - null argument'';
+                'SQL/MM Spatial exception - null argument';
        END IF;
 
        --
        -- Check node existance
        -- 
        ok = false;
-       FOR oldedge IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data '' ||
-               '' WHERE edge_id =  '' || anedge
+       FOR oldedge IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data ' ||
+               ' WHERE edge_id =  ' || anedge
        LOOP
                ok = true;
        END LOOP;
        IF NOT ok THEN
                RAISE EXCEPTION
-                 ''SQL/MM Spatial exception - non-existent edge'';
+                 'SQL/MM Spatial exception - non-existent edge';
        END IF;
 
        --
@@ -749,43 +749,43 @@ BEGIN
        -- 
        IF NOT ST_Within(apoint, oldedge.geom) THEN
                RAISE EXCEPTION
-                 ''SQL/MM Spatial exception - point not on edge'';
+                 'SQL/MM Spatial exception - point not on edge';
        END IF;
 
        --
        -- Check if a coincident node already exists
        --
-       FOR rec IN EXECUTE ''SELECT node_id FROM ''
-               || quote_ident(atopology) || ''.node '' ||
-               ''WHERE geom && ''
-               || quote_literal(apoint::text) || ''::geometry''
-               ||'' AND ST_X(geom) = ST_X(''
-               || quote_literal(apoint::text) || ''::geometry)''
-               ||'' AND ST_Y(geom) = ST_Y(''
-               ||quote_literal(apoint::text)||''::geometry)''
+       FOR rec IN EXECUTE 'SELECT node_id FROM '
+               || quote_ident(atopology) || '.node ' ||
+               'WHERE geom && '
+               || quote_literal(apoint::text) || '::geometry'
+               ||' AND ST_X(geom) = ST_X('
+               || quote_literal(apoint::text) || '::geometry)'
+               ||' AND ST_Y(geom) = ST_Y('
+               ||quote_literal(apoint::text)||'::geometry)'
        LOOP
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - coincident node'';
+                'SQL/MM Spatial exception - coincident node';
        END LOOP;
 
        --
        -- Get new node id
        --
-       FOR rec IN EXECUTE ''SELECT nextval('''''' ||
-               atopology || ''.node_node_id_seq'''')''
+       FOR rec IN EXECUTE 'SELECT nextval(''' ||
+               atopology || '.node_node_id_seq'')'
        LOOP
                nodeid = rec.nextval;
        END LOOP;
 
-       --RAISE NOTICE ''Next node id = % '', nodeid;
+       --RAISE NOTICE 'Next node id = % ', nodeid;
 
        --
        -- Add the new node 
        --
-       EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-               || ''.node(node_id, geom) 
-               VALUES(''||nodeid||'',''||quote_literal(apoint::text)||
-               '')'';
+       EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+               || '.node(node_id, geom) 
+               VALUES('||nodeid||','||quote_literal(apoint::text)||
+               ')';
 
        --
        -- Compute new edge
@@ -798,8 +798,8 @@ BEGIN
        --
        -- Get ids for the new edge
        --
-       FOR rec IN EXECUTE ''SELECT nextval('''''' ||
-               atopology || ''.edge_data_edge_id_seq'''')''
+       FOR rec IN EXECUTE 'SELECT nextval(''' ||
+               atopology || '.edge_data_edge_id_seq'')'
        LOOP
                newedgeid = rec.nextval;
        END LOOP;
@@ -807,50 +807,50 @@ BEGIN
        --
        -- Insert the new edge
        --
-       EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-               || ''.edge ''
-               || ''(edge_id, start_node, end_node,''
-               || ''next_left_edge, next_right_edge,''
-               || ''left_face, right_face, geom) ''
-               || ''VALUES(''
-               ||newedgeid||'',''||nodeid
-               ||'',''||oldedge.end_node
-               ||'',''||oldedge.next_left_edge
-               ||'',-''||anedge
-               ||'',''||oldedge.left_face
-               ||'',''||oldedge.right_face
-               ||'',''||quote_literal(newedge2::text)
-               ||'')'';
+       EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+               || '.edge '
+               || '(edge_id, start_node, end_node,'
+               || 'next_left_edge, next_right_edge,'
+               || 'left_face, right_face, geom) '
+               || 'VALUES('
+               ||newedgeid||','||nodeid
+               ||','||oldedge.end_node
+               ||','||oldedge.next_left_edge
+               ||',-'||anedge
+               ||','||oldedge.left_face
+               ||','||oldedge.right_face
+               ||','||quote_literal(newedge2::text)
+               ||')';
 
        --
        -- Update the old edge
        --
-       EXECUTE ''UPDATE '' || quote_ident(atopology) || ''.edge_data ''
-               || '' SET geom = '' || quote_literal(newedge1::text)
-               || '',''
-               || '' next_left_edge = '' || newedgeid
-               || '',''
-               || '' end_node = '' || nodeid
-               || '' WHERE edge_id = '' || anedge;
+       EXECUTE 'UPDATE ' || quote_ident(atopology) || '.edge_data '
+               || ' SET geom = ' || quote_literal(newedge1::text)
+               || ','
+               || ' next_left_edge = ' || newedgeid
+               || ','
+               || ' end_node = ' || nodeid
+               || ' WHERE edge_id = ' || anedge;
 
 
        --
        -- Update all next edge references to match new layout
        --
 
-       EXECUTE ''UPDATE '' || quote_ident(atopology)
-               || ''.edge_data SET next_right_edge = ''
+       EXECUTE 'UPDATE ' || quote_ident(atopology)
+               || '.edge_data SET next_right_edge = '
                || -newedgeid 
-               || '',''
-               || '' abs_next_right_edge = '' || newedgeid
-               || '' WHERE next_right_edge = '' || -anedge;
+               || ','
+               || ' abs_next_right_edge = ' || newedgeid
+               || ' WHERE next_right_edge = ' || -anedge;
 
-       EXECUTE ''UPDATE '' || quote_ident(atopology)
-               || ''.edge_data SET ''
-               || '' next_left_edge = '' || -newedgeid
-               || '',''
-               || '' abs_next_left_edge = '' || newedgeid
-               || '' WHERE next_left_edge = '' || -anedge;
+       EXECUTE 'UPDATE ' || quote_ident(atopology)
+               || '.edge_data SET '
+               || ' next_left_edge = ' || -newedgeid
+               || ','
+               || ' abs_next_left_edge = ' || newedgeid
+               || ' WHERE next_left_edge = ' || -anedge;
 
        -- Get topology id
         SELECT id FROM topology.topology into topoid
@@ -861,17 +861,17 @@ BEGIN
        -- We only take into considerations non-hierarchical
        -- TopoGeometry here, for obvious reasons.
        --
-       FOR rec IN EXECUTE ''SELECT r.* FROM ''
+       FOR rec IN EXECUTE 'SELECT r.* FROM '
                || quote_ident(atopology)
-               || ''.relation r, topology.layer l ''
-               || '' WHERE ''
-               || '' l.topology_id = '' || topoid
-               || '' AND l.level = 0 ''
-               || '' AND l.layer_id = r.layer_id ''
-               || '' AND abs(r.element_id) = '' || anedge
-               || '' AND r.element_type = 2''
+               || '.relation r, topology.layer l '
+               || ' WHERE '
+               || ' l.topology_id = ' || topoid
+               || ' AND l.level = 0 '
+               || ' AND l.layer_id = r.layer_id '
+               || ' AND abs(r.element_id) = ' || anedge
+               || ' AND r.element_type = 2'
        LOOP
-               --RAISE NOTICE ''TopoGeometry % in layer % contains the edge being split (%) - updating to add new edge %'', rec.topogeo_id, rec.layer_id, anedge, newedgeid;
+               --RAISE NOTICE 'TopoGeometry % in layer % contains the edge being split (%) - updating to add new edge %', rec.topogeo_id, rec.layer_id, anedge, newedgeid;
 
                -- Add new reference to edge1
                IF rec.element_id < 0 THEN
@@ -879,28 +879,28 @@ BEGIN
                ELSE
                        tmp = newedgeid;
                END IF;
-               query = ''INSERT INTO '' || quote_ident(atopology)
-                       || ''.relation ''
-                       || '' VALUES( ''
+               query = 'INSERT INTO ' || quote_ident(atopology)
+                       || '.relation '
+                       || ' VALUES( '
                        || rec.topogeo_id
-                       || '',''
+                       || ','
                        || rec.layer_id
-                       || '',''
+                       || ','
                        || tmp
-                       || '',''
+                       || ','
                        || rec.element_type
-                       || '')'';
+                       || ')';
 
-               --RAISE NOTICE ''%'', query;
+               --RAISE NOTICE '%', query;
                EXECUTE query;
        END LOOP;
 
-       --RAISE NOTICE ''Edge % split in edges % and % by node %'',
+       --RAISE NOTICE 'Edge % split in edges % and % by node %',
        --      anedge, anedge, newedgeid, nodeid;
 
        RETURN nodeid; 
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_ModEdgesSplit
 
@@ -912,7 +912,7 @@ LANGUAGE 'plpgsql' VOLATILE;
 -- 
 CREATE OR REPLACE FUNCTION topology.ST_AddIsoEdge(varchar, integer, integer, geometry)
        RETURNS INTEGER AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        anode ALIAS FOR $2;
@@ -936,16 +936,16 @@ BEGIN
           OR acurve IS NULL
        THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - null argument'';
+                'SQL/MM Spatial exception - null argument';
        END IF;
 
        --
        -- Acurve must be a LINESTRING
        --
-       IF substring(geometrytype(acurve), 1, 4) != ''LINE''
+       IF substring(geometrytype(acurve), 1, 4) != 'LINE'
        THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - invalid curve'';
+                'SQL/MM Spatial exception - invalid curve';
        END IF;
 
        --
@@ -954,7 +954,7 @@ BEGIN
        IF NOT ST_IsSimple(acurve)
        THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - curve not simple'';
+                'SQL/MM Spatial exception - curve not simple';
        END IF;
 
        --
@@ -967,14 +967,14 @@ BEGIN
        --
        aface := NULL;
        count := 0;
-       FOR rec IN EXECUTE ''SELECT geom, containing_face, node_id FROM ''
-               || quote_ident(atopology) || ''.node
-               WHERE node_id = '' || anode ||
-               '' OR node_id = '' || anothernode
+       FOR rec IN EXECUTE 'SELECT geom, containing_face, node_id FROM '
+               || quote_ident(atopology) || '.node
+               WHERE node_id = ' || anode ||
+               ' OR node_id = ' || anothernode
        LOOP 
                IF count > 0 AND aface != rec.containing_face THEN
                        RAISE EXCEPTION
-                       ''SQL/MM Spatial exception - nodes in different faces'';
+                       'SQL/MM Spatial exception - nodes in different faces';
                ELSE
                        aface := rec.containing_face;
                END IF;
@@ -991,22 +991,22 @@ BEGIN
        END LOOP;
        IF count < 2 THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - non-existent node'';
+                'SQL/MM Spatial exception - non-existent node';
        END IF;
 
 
        --
        -- Check nodes isolation.
        -- 
-       FOR rec IN EXECUTE ''SELECT edge_id FROM ''
-               || quote_ident(atopology) || ''.edge_data '' ||
-               '' WHERE start_node =  '' || anode ||
-               '' OR end_node = '' || anode ||
-               '' OR start_node = '' || anothernode ||
-               '' OR end_node = '' || anothernode
+       FOR rec IN EXECUTE 'SELECT edge_id FROM '
+               || quote_ident(atopology) || '.edge_data ' ||
+               ' WHERE start_node =  ' || anode ||
+               ' OR end_node = ' || anode ||
+               ' OR start_node = ' || anothernode ||
+               ' OR end_node = ' || anothernode
        LOOP
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - not isolated node'';
+                'SQL/MM Spatial exception - not isolated node';
        END LOOP;
 
        --
@@ -1018,9 +1018,9 @@ BEGIN
                --
                -- Extract endpoints face geometry
                --
-               FOR rec IN EXECUTE ''SELECT topology.ST_GetFaceGeometry(''
+               FOR rec IN EXECUTE 'SELECT topology.ST_GetFaceGeometry('
                        || quote_literal(atopology) ||
-                       '','' || aface || '') as face''
+                       ',' || aface || ') as face'
                LOOP
                        face := rec.face;
                END LOOP;
@@ -1030,7 +1030,7 @@ BEGIN
                --
                IF ! ST_Within(acurve, face) THEN
        RAISE EXCEPTION
-       ''SQL/MM Spatial exception - geometry not within face.'';
+       'SQL/MM Spatial exception - geometry not within face.';
                END IF;
 
        END IF;
@@ -1042,7 +1042,7 @@ BEGIN
        IF ST_X(snodegeom) != ST_X(ST_StartPoint(acurve)) OR
           ST_Y(snodegeom) != ST_Y(ST_StartPoint(acurve)) THEN
   RAISE EXCEPTION
-  ''SQL/MM Spatial exception - start node not geometry start point.'';
+  'SQL/MM Spatial exception - start node not geometry start point.';
        END IF;
 
        --
@@ -1052,40 +1052,40 @@ BEGIN
        IF ST_X(enodegeom) != ST_X(ST_EndPoint(acurve)) OR
           ST_Y(enodegeom) != ST_Y(ST_EndPoint(acurve)) THEN
   RAISE EXCEPTION
-  ''SQL/MM Spatial exception - end node not geometry end point.'';
+  'SQL/MM Spatial exception - end node not geometry end point.';
        END IF;
 
        --
        -- n) Check if curve crosses (contains) any node
        -- I used _contains_ here to leave endpoints out
        -- 
-       FOR rec IN EXECUTE ''SELECT node_id FROM ''
-               || quote_ident(atopology) || ''.node ''
-               || '' WHERE geom && '' || quote_literal(acurve::text) 
-               || '' AND ST_Contains('' || quote_literal(acurve::text)
-               || '',geom)''
+       FOR rec IN EXECUTE 'SELECT node_id FROM '
+               || quote_ident(atopology) || '.node '
+               || ' WHERE geom && ' || quote_literal(acurve::text) 
+               || ' AND ST_Contains(' || quote_literal(acurve::text)
+               || ',geom)'
        LOOP
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - geometry crosses a node'';
+               'SQL/MM Spatial exception - geometry crosses a node';
        END LOOP;
 
        --
        -- o) Check if curve intersects any other edge
        -- 
-       FOR rec IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data
-               WHERE geom && '' || quote_literal(acurve::text) || ''::geometry
-               AND ST_Intersects(geom, '' || quote_literal(acurve::text) || ''::geometry)''
+       FOR rec IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data
+               WHERE geom && ' || quote_literal(acurve::text) || '::geometry
+               AND ST_Intersects(geom, ' || quote_literal(acurve::text) || '::geometry)'
        LOOP
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - geometry intersects an edge'';
+               'SQL/MM Spatial exception - geometry intersects an edge';
        END LOOP;
 
        --
        -- Get new edge id from sequence
        --
-       FOR rec IN EXECUTE ''SELECT nextval('''''' ||
-               atopology || ''.edge_data_edge_id_seq'''')''
+       FOR rec IN EXECUTE 'SELECT nextval(''' ||
+               atopology || '.edge_data_edge_id_seq'')'
        LOOP
                edgeid = rec.nextval;
        END LOOP;
@@ -1095,17 +1095,17 @@ BEGIN
        --
        IF aface IS NULL THEN aface := 0; END IF;
 
-       EXECUTE ''INSERT INTO '' || quote_ident(atopology)
-               || ''.edge VALUES(''||edgeid||'',''||anode||
-                       '',''||anothernode||'',''
-                       ||(-edgeid)||'',''||edgeid||'',''
-                       ||aface||'',''||aface||'',''
-                       ||quote_literal(acurve::text)||'')'';
+       EXECUTE 'INSERT INTO ' || quote_ident(atopology)
+               || '.edge VALUES('||edgeid||','||anode||
+                       ','||anothernode||','
+                       ||(-edgeid)||','||edgeid||','
+                       ||aface||','||aface||','
+                       ||quote_literal(acurve::text)||')';
 
        RETURN edgeid;
 
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_AddIsoEdge
 
@@ -1117,7 +1117,7 @@ LANGUAGE 'plpgsql' VOLATILE;
 -- 
 CREATE OR REPLACE FUNCTION topology.ST_ChangeEdgeGeom(varchar, integer, geometry)
        RETURNS TEXT AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        anedge ALIAS FOR $2;
@@ -1140,16 +1140,16 @@ BEGIN
           OR acurve IS NULL
        THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - null argument'';
+                'SQL/MM Spatial exception - null argument';
        END IF;
 
        --
        -- Acurve must be a LINESTRING
        --
-       IF substring(geometrytype(acurve), 1, 4) != ''LINE''
+       IF substring(geometrytype(acurve), 1, 4) != 'LINE'
        THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - invalid curve'';
+                'SQL/MM Spatial exception - invalid curve';
        END IF;
 
        --
@@ -1158,84 +1158,84 @@ BEGIN
        IF NOT ST_IsSimple(acurve)
        THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - curve not simple'';
+                'SQL/MM Spatial exception - curve not simple';
        END IF;
 
        --
        -- e) Check StartPoint consistency
        --
-       FOR rec IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data e, ''
-               || quote_ident(atopology) || ''.node n ''
-               || '' WHERE e.edge_id = '' || anedge
-               || '' AND n.node_id = e.start_node ''
-               || '' AND ( ST_X(n.geom) != ''
+       FOR rec IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data e, '
+               || quote_ident(atopology) || '.node n '
+               || ' WHERE e.edge_id = ' || anedge
+               || ' AND n.node_id = e.start_node '
+               || ' AND ( ST_X(n.geom) != '
                || ST_X(ST_StartPoint(acurve))
-               || '' OR ST_Y(n.geom) != ''
+               || ' OR ST_Y(n.geom) != '
                || ST_Y(ST_StartPoint(acurve))
-               || '')''
+               || ')'
        LOOP 
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - start node not geometry start point.'';
+               'SQL/MM Spatial exception - start node not geometry start point.';
        END LOOP;
 
        --
        -- f) Check EndPoint consistency
        --
-       FOR rec IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data e, ''
-               || quote_ident(atopology) || ''.node n ''
-               || '' WHERE e.edge_id = '' || anedge
-               || '' AND n.node_id = e.end_node ''
-               || '' AND ( ST_X(n.geom) != ''
+       FOR rec IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data e, '
+               || quote_ident(atopology) || '.node n '
+               || ' WHERE e.edge_id = ' || anedge
+               || ' AND n.node_id = e.end_node '
+               || ' AND ( ST_X(n.geom) != '
                || ST_X(ST_EndPoint(acurve))
-               || '' OR ST_Y(n.geom) != ''
+               || ' OR ST_Y(n.geom) != '
                || ST_Y(ST_EndPoint(acurve))
-               || '')''
+               || ')'
        LOOP 
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - end node not geometry end point.'';
+               'SQL/MM Spatial exception - end node not geometry end point.';
        END LOOP;
 
        --
        -- g) Check if curve crosses any node
        -- _within_ used to let endpoints out
        -- 
-       FOR rec IN EXECUTE ''SELECT node_id FROM ''
-               || quote_ident(atopology) || ''.node
-               WHERE geom && '' || quote_literal(acurve::text) || ''::geometry
-               AND ST_Within(geom, '' || quote_literal(acurve::text) || ''::geometry)''
+       FOR rec IN EXECUTE 'SELECT node_id FROM '
+               || quote_ident(atopology) || '.node
+               WHERE geom && ' || quote_literal(acurve::text) || '::geometry
+               AND ST_Within(geom, ' || quote_literal(acurve::text) || '::geometry)'
        LOOP
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - geometry crosses a node'';
+               'SQL/MM Spatial exception - geometry crosses a node';
        END LOOP;
 
        --
        -- h) Check if curve intersects any other edge
        -- 
-       FOR rec IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data ''
-               || '' WHERE edge_id != '' || anedge
-               || '' AND geom && ''
-               || quote_literal(acurve::text) || ''::geometry ''
-               || '' AND ST_Intersects(geom, ''
-               || quote_literal(acurve::text) || ''::geometry)''
+       FOR rec IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data '
+               || ' WHERE edge_id != ' || anedge
+               || ' AND geom && '
+               || quote_literal(acurve::text) || '::geometry '
+               || ' AND ST_Intersects(geom, '
+               || quote_literal(acurve::text) || '::geometry)'
        LOOP
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - geometry intersects an edge'';
+               'SQL/MM Spatial exception - geometry intersects an edge';
        END LOOP;
 
        --
        -- Update edge geometry
        --
-       EXECUTE ''UPDATE '' || quote_ident(atopology) || ''.edge_data ''
-               || '' SET geom = '' || quote_literal(acurve::text) 
-               || '' WHERE edge_id = '' || anedge;
+       EXECUTE 'UPDATE ' || quote_ident(atopology) || '.edge_data '
+               || ' SET geom = ' || quote_literal(acurve::text) 
+               || ' WHERE edge_id = ' || anedge;
 
-       RETURN ''Edge '' || anedge || '' changed'';
+       RETURN 'Edge ' || anedge || ' changed';
 
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_ChangeEdgeGeom
 
@@ -1247,7 +1247,7 @@ LANGUAGE 'plpgsql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.ST_AddEdgeNewFaces(varchar, integer, integer, geometry)
        RETURNS INTEGER AS
-'
+$$
 DECLARE
        atopology ALIAS FOR $1;
        anode ALIAS FOR $2;
@@ -1271,16 +1271,16 @@ BEGIN
                OR anothernode IS NULL
                OR acurve IS NULL
        THEN
-               RAISE EXCEPTION ''SQL/MM Spatial exception - null argument'';
+               RAISE EXCEPTION 'SQL/MM Spatial exception - null argument';
        END IF;
 
        --
        -- Acurve must be a LINESTRING
        --
-       IF substring(geometrytype(acurve), 1, 4) != ''LINE''
+       IF substring(geometrytype(acurve), 1, 4) != 'LINE'
        THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - invalid curve'';
+                'SQL/MM Spatial exception - invalid curve';
        END IF;
        
        --
@@ -1288,34 +1288,34 @@ BEGIN
        --
        IF NOT ST_IsSimple(acurve) THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - curve not simple'';
+                'SQL/MM Spatial exception - curve not simple';
        END IF;
 
        -- 
        -- Check endpoints existance and match with Curve geometry
        --
        i=0;
-       FOR rec IN EXECUTE ''SELECT ''
-               || '' CASE WHEN node_id = '' || anode
-               || '' THEN 1 WHEN node_id = '' || anothernode
-               || '' THEN 0 END AS start, geom FROM ''
+       FOR rec IN EXECUTE 'SELECT '
+               || ' CASE WHEN node_id = ' || anode
+               || ' THEN 1 WHEN node_id = ' || anothernode
+               || ' THEN 0 END AS start, geom FROM '
                || quote_ident(atopology)
-               || ''.node ''
-               || '' WHERE node_id IN ( ''
-               || anode || '','' || anothernode
-               || '')''
+               || '.node '
+               || ' WHERE node_id IN ( '
+               || anode || ',' || anothernode
+               || ')'
        LOOP
                IF rec.start THEN
                        IF NOT Equals(rec.geom, ST_StartPoint(acurve))
                        THEN
        RAISE EXCEPTION
-       ''SQL/MM Spatial exception - start node not geometry start point.'';
+       'SQL/MM Spatial exception - start node not geometry start point.';
                        END IF;
                ELSE
                        IF NOT Equals(rec.geom, ST_EndPoint(acurve))
                        THEN
        RAISE EXCEPTION
-       ''SQL/MM Spatial exception - end node not geometry end point.'';
+       'SQL/MM Spatial exception - end node not geometry end point.';
                        END IF;
                END IF;
 
@@ -1324,55 +1324,55 @@ BEGIN
 
        IF i < 2 THEN
                RAISE EXCEPTION
-                ''SQL/MM Spatial exception - non-existent node'';
+                'SQL/MM Spatial exception - non-existent node';
        END IF;
 
        --
        -- Check if this geometry crosses any node
        --
-       FOR rec IN EXECUTE ''SELECT node_id FROM ''
-               || quote_ident(atopology) || ''.node
-               WHERE geom && '' || quote_literal(acurve::text) || ''::geometry
-               AND ST_Within(geom, '' || quote_literal(acurve::text) || ''::geometry)''
+       FOR rec IN EXECUTE 'SELECT node_id FROM '
+               || quote_ident(atopology) || '.node
+               WHERE geom && ' || quote_literal(acurve::text) || '::geometry
+               AND ST_Within(geom, ' || quote_literal(acurve::text) || '::geometry)'
        LOOP
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - geometry crosses a node'';
+               'SQL/MM Spatial exception - geometry crosses a node';
        END LOOP;
 
        --
        -- Check if this geometry crosses any existing edge
        --
-       FOR rec IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data
-               WHERE geom && '' || quote_literal(acurve::text) || ''::geometry
-               AND crosses(geom, '' || quote_literal(acurve::text) || ''::geometry)''
+       FOR rec IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data
+               WHERE geom && ' || quote_literal(acurve::text) || '::geometry
+               AND crosses(geom, ' || quote_literal(acurve::text) || '::geometry)'
        LOOP
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - geometry crosses an edge'';
+               'SQL/MM Spatial exception - geometry crosses an edge';
        END LOOP;
 
        --
        -- Check if another edge share this edge endpoints
        --
-       FOR rec IN EXECUTE ''SELECT * FROM ''
-               || quote_ident(atopology) || ''.edge_data ''
-               || '' WHERE ''
-               || '' geom && '' || quote_literal(acurve::text) || ''::geometry ''
-               || '' AND ''
-               || '' ( (''
-               || '' start_node = '' || anode
-               || '' AND ''
-               || '' end_node = '' || anothernode
-               || '' ) OR ( ''
-               || '' end_node = '' || anode
-               || '' AND ''
-               || '' start_node = '' || anothernode
-               || '' ) )''
-               || '' AND ''
-               || ''equals(geom,'' || quote_literal(acurve::text) || ''::geometry)''
+       FOR rec IN EXECUTE 'SELECT * FROM '
+               || quote_ident(atopology) || '.edge_data '
+               || ' WHERE '
+               || ' geom && ' || quote_literal(acurve::text) || '::geometry '
+               || ' AND '
+               || ' ( ('
+               || ' start_node = ' || anode
+               || ' AND '
+               || ' end_node = ' || anothernode
+               || ' ) OR ( '
+               || ' end_node = ' || anode
+               || ' AND '
+               || ' start_node = ' || anothernode
+               || ' ) )'
+               || ' AND '
+               || 'equals(geom,' || quote_literal(acurve::text) || '::geometry)'
        LOOP
                RAISE EXCEPTION
-               ''SQL/MM Spatial exception - coincident edge'';
+               'SQL/MM Spatial exception - coincident edge';
        END LOOP;
 
        ---------------------------------------------------------------
@@ -1400,16 +1400,16 @@ BEGIN
        --
 
        myaz = ST_Azimuth(ST_EndPoint(acurve), ST_PointN(acurve, ST_NumPoints(acurve)-1));
-       RAISE NOTICE ''My end-segment azimuth: %'', myaz;
-       FOR rec IN EXECUTE ''SELECT ''
-               || ''edge_id, end_node, start_node, geom''
-               || '' FROM ''
+       RAISE NOTICE 'My end-segment azimuth: %', myaz;
+       FOR rec IN EXECUTE 'SELECT '
+               || 'edge_id, end_node, start_node, geom'
+               || ' FROM '
                || quote_ident(atopology)
-               || ''.edge_data ''
-               || '' WHERE ''
-               || '' end_node = '' || anothernode
-               || '' OR ''
-               || '' start_node = '' || anothernode
+               || '.edge_data '
+               || ' WHERE '
+               || ' end_node = ' || anothernode
+               || ' OR '
+               || ' start_node = ' || anothernode
        LOOP
 
                IF rec.start_node = anothernode THEN
@@ -1420,7 +1420,7 @@ BEGIN
                        az = ST_Azimuth(ST_EndPoint(acurve),
                                ST_PointN(rec.geom, 2));
 
-                       RAISE NOTICE ''Edge % starts at node % - azimuth %'',
+                       RAISE NOTICE 'Edge % starts at node % - azimuth %',
                                rec.edge_id, rec.start_node, az;
                END IF;
 
@@ -1432,15 +1432,15 @@ BEGIN
                        az = ST_Azimuth(ST_EndPoint(acurve),
                                ST_PointN(rec.geom, ST_NumPoints(rec.geom)-1));
 
-                       RAISE NOTICE ''Edge % ends at node % - azimuth %'',
+                       RAISE NOTICE 'Edge % ends at node % - azimuth %',
                                rec.edge_id, rec.end_node, az;
                END IF;
        END LOOP;
 
 
-       RAISE EXCEPTION ''Not implemented yet'';
+       RAISE EXCEPTION 'Not implemented yet';
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_AddEdgeNewFaces
 
@@ -1452,31 +1452,32 @@ LANGUAGE 'plpgsql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.ST_InitTopoGeo(varchar)
 RETURNS text
-AS '
+AS
+$$
 DECLARE
        atopology alias for $1;
        rec RECORD;
        topology_id numeric;
 BEGIN
        IF atopology IS NULL THEN
-               RAISE EXCEPTION ''SQL/MM Spatial exception - null argument'';
+               RAISE EXCEPTION 'SQL/MM Spatial exception - null argument';
        END IF;
 
        FOR rec IN SELECT * FROM pg_namespace WHERE text(nspname) = atopology
        LOOP
-               RAISE EXCEPTION ''SQL/MM Spatial exception - schema already exists'';
+               RAISE EXCEPTION 'SQL/MM Spatial exception - schema already exists';
        END LOOP;
 
-       FOR rec IN EXECUTE ''SELECT topology.CreateTopology(''
-               ||quote_literal(atopology)|| '') as id''
+       FOR rec IN EXECUTE 'SELECT topology.CreateTopology('
+               ||quote_literal(atopology)|| ') as id'
        LOOP
                topology_id := rec.id;
        END LOOP;
 
-       RETURN ''Topology-Geometry '' || quote_literal(atopology)
-               || '' (id:'' || topology_id || '') created. '';
+       RETURN 'Topology-Geometry ' || quote_literal(atopology)
+               || ' (id:' || topology_id || ') created. ';
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_InitTopoGeo
 
@@ -1488,7 +1489,8 @@ LANGUAGE 'plpgsql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.ST_CreateTopoGeo(varchar, geometry)
 RETURNS text
-AS '
+AS
+$$
 DECLARE
        atopology alias for $1;
        acollection alias for $2;
@@ -1498,55 +1500,55 @@ DECLARE
        schemaoid oid;
 BEGIN
        IF atopology IS NULL OR acollection IS NULL THEN
-               RAISE EXCEPTION ''SQL/MM Spatial exception - null argument'';
+               RAISE EXCEPTION 'SQL/MM Spatial exception - null argument';
        END IF;
 
        -- Verify existance of the topology schema 
-       FOR rec in EXECUTE ''SELECT oid FROM pg_namespace WHERE ''
-               || '' nspname = '' || quote_literal(atopology)
-               || '' GROUP BY oid''
+       FOR rec in EXECUTE 'SELECT oid FROM pg_namespace WHERE '
+               || ' nspname = ' || quote_literal(atopology)
+               || ' GROUP BY oid'
                
        LOOP
                schemaoid := rec.oid;
        END LOOP;
 
        IF schemaoid IS NULL THEN
-       RAISE EXCEPTION ''SQL/MM Spatial exception - non-existent schema'';
+       RAISE EXCEPTION 'SQL/MM Spatial exception - non-existent schema';
        END IF;
 
        -- Verify existance of the topology views in the topology schema 
-       FOR rec in EXECUTE ''SELECT count(*) FROM pg_class WHERE ''
-               || '' relnamespace = '' || schemaoid 
-               || '' and relname = ''''node''''''
-               || '' OR relname = ''''edge''''''
-               || '' OR relname = ''''face''''''
+       FOR rec in EXECUTE 'SELECT count(*) FROM pg_class WHERE '
+               || ' relnamespace = ' || schemaoid 
+               || ' and relname = ''node'''
+               || ' OR relname = ''edge'''
+               || ' OR relname = ''face'''
        LOOP
                IF rec.count < 3 THEN
-       RAISE EXCEPTION ''SQL/MM Spatial exception - non-existent view'';
+       RAISE EXCEPTION 'SQL/MM Spatial exception - non-existent view';
                END IF;
        END LOOP;
 
        -- Verify the topology views in the topology schema to be empty
        FOR rec in EXECUTE
-               ''SELECT count(*) FROM ''
-               || quote_ident(atopology) || ''.edge_data ''
-               || '' UNION '' ||
-               ''SELECT count(*) FROM ''
-               || quote_ident(atopology) || ''.node ''
+               'SELECT count(*) FROM '
+               || quote_ident(atopology) || '.edge_data '
+               || ' UNION ' ||
+               'SELECT count(*) FROM '
+               || quote_ident(atopology) || '.node '
        LOOP
                IF rec.count > 0 THEN
-       RAISE EXCEPTION ''SQL/MM Spatial exception - non-empty view'';
+       RAISE EXCEPTION 'SQL/MM Spatial exception - non-empty view';
                END IF;
        END LOOP;
 
        -- face check is separated as it will contain a single (world)
        -- face record
        FOR rec in EXECUTE
-               ''SELECT count(*) FROM ''
-               || quote_ident(atopology) || ''.face ''
+               'SELECT count(*) FROM '
+               || quote_ident(atopology) || '.face '
        LOOP
                IF rec.count != 1 THEN
-       RAISE EXCEPTION ''SQL/MM Spatial exception - non-empty face view'';
+       RAISE EXCEPTION 'SQL/MM Spatial exception - non-empty face view';
                END IF;
        END LOOP;
 
@@ -1557,23 +1559,23 @@ BEGIN
        LOOP
                typ := substring(geometrytype(rec.geom), 1, 3);
 
-               IF typ = ''LIN'' THEN
+               IF typ = 'LIN' THEN
        SELECT topology.TopoGeo_addLinestring(atopology, rec.geom) INTO ret;
-               ELSIF typ = ''POI'' THEN
+               ELSIF typ = 'POI' THEN
        SELECT topology.TopoGeo_AddPoint(atopology, rec.geom) INTO ret;
-               ELSIF typ = ''POL'' THEN
+               ELSIF typ = 'POL' THEN
        SELECT topology.TopoGeo_AddPolygon(atopology, rec.geom) INTO ret;
                ELSE
-       RAISE EXCEPTION ''ST_CreateTopoGeo got unknown geometry type: %'', typ;
+       RAISE EXCEPTION 'ST_CreateTopoGeo got unknown geometry type: %', typ;
                END IF;
 
        END LOOP;
 
-       RETURN ''Topology '' || atopology || '' populated'';
+       RETURN 'Topology ' || atopology || ' populated';
 
-       RAISE EXCEPTION ''ST_CreateTopoGeo not implemente yet'';
+       RAISE EXCEPTION 'ST_CreateTopoGeo not implemente yet';
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} ST_CreateTopoGeo
 
index a7d70403603c67cffe34a62981ba4f21945963df..938bd57bd6ecfddc2fed3a99fe42b72049d304e2 100644 (file)
@@ -21,7 +21,7 @@
 --
 --     We have PostGIS-specific objects and SQL/MM objects.
 --     PostGIS-specific objects have no prefix, SQL/MM ones
---     have the ``ST_'' prefix.
+--     have the ``ST_' prefix.
 --     
 -- [PostGIS-specific]
 --
 --  
 --  
 
-#include "../postgis/sqldefines.h"
-
 -- Uninstalling previous installation isn't really a good habit ...
 -- Let people decide about that
 -- DROP SCHEMA topology CASCADE;
@@ -199,7 +197,7 @@ CREATE TABLE topology.topology (
 CREATE OR REPLACE FUNCTION topology.LayerTrigger()
        RETURNS trigger
 AS
-'
+$$
 DECLARE
        rec RECORD;
        ok BOOL;
@@ -207,13 +205,13 @@ DECLARE
        query TEXT;
 BEGIN
 
-       --RAISE NOTICE ''LayerTrigger called % % at % level'', TG_WHEN, TG_OP, TG_LEVEL;
+       --RAISE NOTICE 'LayerTrigger called % % at % level', TG_WHEN, TG_OP, TG_LEVEL;
 
 
-       IF TG_OP = ''INSERT'' THEN
-               RAISE EXCEPTION ''LayerTrigger not meant to be called on INSERT'';
-       ELSIF TG_OP = ''UPDATE'' THEN
-               RAISE EXCEPTION ''The topology.layer table cannot be updated'';
+       IF TG_OP = 'INSERT' THEN
+               RAISE EXCEPTION 'LayerTrigger not meant to be called on INSERT';
+       ELSIF TG_OP = 'UPDATE' THEN
+               RAISE EXCEPTION 'The topology.layer table cannot be updated';
        END IF;
 
 
@@ -226,17 +224,17 @@ BEGIN
                AND a.attrelid = c.oid
                AND text(a.attname) = OLD.feature_column
        LOOP
-               query = ''SELECT * ''
-                       || '' FROM '' || quote_ident(OLD.schema_name)
-                       || ''.'' || quote_ident(OLD.table_name)
-                       || '' WHERE layer_id(''
-                       || quote_ident(OLD.feature_column)||'') ''
-                       || ''='' || OLD.layer_id
-                       || '' LIMIT 1'';
-               --RAISE NOTICE ''%'', query;
+               query = 'SELECT * '
+                       || ' FROM ' || quote_ident(OLD.schema_name)
+                       || '.' || quote_ident(OLD.table_name)
+                       || ' WHERE layer_id('
+                       || quote_ident(OLD.feature_column)||''
+                       || '=' || OLD.layer_id
+                       || ' LIMIT 1';
+               --RAISE NOTICE '%', query;
                FOR rec IN EXECUTE query
                LOOP
-                       RAISE NOTICE ''A feature referencing layer % of topology % still exists in %.%.%'', OLD.layer_id, OLD.topology_id, OLD.schema_name, OLD.table_name, OLD.feature_column;
+                       RAISE NOTICE 'A feature referencing layer % of topology % still exists in %.%.%', OLD.layer_id, OLD.topology_id, OLD.schema_name, OLD.table_name, OLD.feature_column;
                        RETURN NULL;
                END LOOP;
        END LOOP;
@@ -247,7 +245,7 @@ BEGIN
                WHERE id = OLD.topology_id;
 
        IF toponame IS NULL THEN
-               RAISE NOTICE ''Could not find name of topology with id %'',
+               RAISE NOTICE 'Could not find name of topology with id %',
                        OLD.layer_id;
        END IF;
 
@@ -255,23 +253,23 @@ BEGIN
        FOR rec IN SELECT * FROM pg_namespace
                WHERE text(nspname) = toponame
        LOOP
-               query = ''SELECT * ''
-                       || '' FROM '' || quote_ident(toponame)
-                       || ''.relation ''
-                       || '' WHERE topogeo_id = '' || OLD.topology_id 
-                       || '' AND layer_id = ''|| OLD.layer_id
-                       || '' LIMIT 1'';
-               --RAISE NOTICE ''%'', query;
+               query = 'SELECT * '
+                       || ' FROM ' || quote_ident(toponame)
+                       || '.relation '
+                       || ' WHERE topogeo_id = ' || OLD.topology_id 
+                       || ' AND layer_id = '|| OLD.layer_id
+                       || ' LIMIT 1';
+               --RAISE NOTICE '%', query;
                FOR rec IN EXECUTE query
                LOOP
-                       RAISE NOTICE ''A record in %.relation still references layer %'', toponame, OLD.layer_id;
+                       RAISE NOTICE 'A record in %.relation still references layer %', toponame, OLD.layer_id;
                        RETURN NULL;
                END LOOP;
        END LOOP;
 
        RETURN OLD;
 END;
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 --} LayerTrigger()
 
@@ -375,7 +373,7 @@ CREATE DOMAIN topology.TopoElementArray AS integer[][]
 CREATE OR REPLACE FUNCTION topology.RelationTrigger()
        RETURNS trigger
 AS
-'
+$$
 DECLARE
        toponame varchar;
        topoid integer;
@@ -385,32 +383,32 @@ DECLARE
 
 BEGIN
        IF TG_NARGS != 2 THEN
-               RAISE EXCEPTION ''RelationTrigger called with wrong number of arguments'';
+               RAISE EXCEPTION 'RelationTrigger called with wrong number of arguments';
        END IF;
 
        topoid = TG_ARGV[0];
        toponame = TG_ARGV[1];
 
-       --RAISE NOTICE ''RelationTrigger called % % on %.relation for a %'', TG_WHEN, TG_OP, toponame, TG_LEVEL;
+       --RAISE NOTICE 'RelationTrigger called % % on %.relation for a %', TG_WHEN, TG_OP, toponame, TG_LEVEL;
 
 
-       IF TG_OP = ''DELETE'' THEN
-               RAISE EXCEPTION ''RelationTrigger not meant to be called on DELETE'';
+       IF TG_OP = 'DELETE' THEN
+               RAISE EXCEPTION 'RelationTrigger not meant to be called on DELETE';
        END IF;
 
        -- Get layer info (and verify it exists)
        ok = false;
-       FOR plyr IN EXECUTE ''SELECT * FROM topology.layer ''
-               || ''WHERE ''
-               || '' topology_id = '' || topoid
-               || '' AND''
-               || '' layer_id = '' || NEW.layer_id
+       FOR plyr IN EXECUTE 'SELECT * FROM topology.layer '
+               || 'WHERE '
+               || ' topology_id = ' || topoid
+               || ' AND'
+               || ' layer_id = ' || NEW.layer_id
        LOOP
                ok = true;
                EXIT;
        END LOOP;
        IF NOT ok THEN
-               RAISE EXCEPTION ''Layer % does not exist in topology %'',
+               RAISE EXCEPTION 'Layer % does not exist in topology %',
                        NEW.layer_id, topoid;
                RETURN NULL;
        END IF;
@@ -419,22 +417,22 @@ BEGIN
 
                -- ElementType must be the layer child id
                IF NEW.element_type != plyr.child_id THEN
-                       RAISE EXCEPTION ''Type of elements in layer % must be set to its child layer id %'', plyr.layer_id, plyr.child_id;
+                       RAISE EXCEPTION 'Type of elements in layer % must be set to its child layer id %', plyr.layer_id, plyr.child_id;
                        RETURN NULL;
                END IF;
 
                -- ElementId must be an existent TopoGeometry in child layer
                ok = false;
-               FOR rec IN EXECUTE ''SELECT topogeo_id FROM ''
-                       || quote_ident(toponame) || ''.relation ''
-                       || '' WHERE layer_id = '' || plyr.child_id 
-                       || '' AND topogeo_id = '' || NEW.element_id
+               FOR rec IN EXECUTE 'SELECT topogeo_id FROM '
+                       || quote_ident(toponame) || '.relation '
+                       || ' WHERE layer_id = ' || plyr.child_id 
+                       || ' AND topogeo_id = ' || NEW.element_id
                LOOP
                        ok = true;
                        EXIT;
                END LOOP;
                IF NOT ok THEN
-                       RAISE EXCEPTION ''TopoGeometry % does not exist in the child layer %'', NEW.element_id, plyr.child_id;
+                       RAISE EXCEPTION 'TopoGeometry % does not exist in the child layer %', NEW.element_id, plyr.child_id;
                        RETURN NULL;
                END IF;
 
@@ -444,7 +442,7 @@ BEGIN
                IF plyr.feature_type != 4
                        AND plyr.feature_type != NEW.element_type
                THEN
-                       RAISE EXCEPTION ''Element of type % is not compatible with layer of type %'', NEW.element_type, plyr.feature_type;
+                       RAISE EXCEPTION 'Element of type % is not compatible with layer of type %', NEW.element_type, plyr.feature_type;
                        RETURN NULL;
                END IF;
 
@@ -459,15 +457,15 @@ BEGIN
                IF NEW.element_type = 1 
                THEN
                        ok = false;
-                       FOR rec IN EXECUTE ''SELECT node_id FROM ''
-                               || quote_ident(toponame) || ''.node ''
-                               || '' WHERE node_id = '' || NEW.element_id
+                       FOR rec IN EXECUTE 'SELECT node_id FROM '
+                               || quote_ident(toponame) || '.node '
+                               || ' WHERE node_id = ' || NEW.element_id
                        LOOP
                                ok = true;
                                EXIT;
                        END LOOP;
                        IF NOT ok THEN
-                               RAISE EXCEPTION ''Node % does not exist in topology %'', NEW.element_id, toponame;
+                               RAISE EXCEPTION 'Node % does not exist in topology %', NEW.element_id, toponame;
                                RETURN NULL;
                        END IF;
 
@@ -477,15 +475,15 @@ BEGIN
                ELSIF NEW.element_type = 2 
                THEN
                        ok = false;
-                       FOR rec IN EXECUTE ''SELECT edge_id FROM ''
-                               || quote_ident(toponame) || ''.edge_data ''
-                               || '' WHERE edge_id = '' || abs(NEW.element_id)
+                       FOR rec IN EXECUTE 'SELECT edge_id FROM '
+                               || quote_ident(toponame) || '.edge_data '
+                               || ' WHERE edge_id = ' || abs(NEW.element_id)
                        LOOP
                                ok = true;
                                EXIT;
                        END LOOP;
                        IF NOT ok THEN
-                               RAISE EXCEPTION ''Edge % does not exist in topology %'', NEW.element_id, toponame;
+                               RAISE EXCEPTION 'Edge % does not exist in topology %', NEW.element_id, toponame;
                                RETURN NULL;
                        END IF;
 
@@ -495,19 +493,19 @@ BEGIN
                ELSIF NEW.element_type = 3 
                THEN
                        IF NEW.element_id = 0 THEN
-                               RAISE EXCEPTION ''Face % cannot be associated with any feature'', NEW.element_id;
+                               RAISE EXCEPTION 'Face % cannot be associated with any feature', NEW.element_id;
                                RETURN NULL;
                        END IF;
                        ok = false;
-                       FOR rec IN EXECUTE ''SELECT face_id FROM ''
-                               || quote_ident(toponame) || ''.face ''
-                               || '' WHERE face_id = '' || NEW.element_id
+                       FOR rec IN EXECUTE 'SELECT face_id FROM '
+                               || quote_ident(toponame) || '.face '
+                               || ' WHERE face_id = ' || NEW.element_id
                        LOOP
                                ok = true;
                                EXIT;
                        END LOOP;
                        IF NOT ok THEN
-                               RAISE EXCEPTION ''Face % does not exist in topology %'', NEW.element_id, toponame;
+                               RAISE EXCEPTION 'Face % does not exist in topology %', NEW.element_id, toponame;
                                RETURN NULL;
                        END IF;
                END IF;
@@ -516,7 +514,7 @@ BEGIN
        
        RETURN NEW;
 END;
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 --} RelationTrigger()
 
@@ -529,7 +527,8 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 --
 CREATE OR REPLACE FUNCTION topology.AddTopoGeometryColumn(varchar, varchar, varchar, varchar, varchar, integer)
        RETURNS integer
-AS '
+AS
+$$
 DECLARE
        toponame alias for $1;
        schema alias for $2;
@@ -550,113 +549,113 @@ BEGIN
                 WHERE name = toponame;
 
        IF topoid IS NULL THEN
-               RAISE EXCEPTION ''Topology % does not exist'', toponame;
+               RAISE EXCEPTION 'Topology % does not exist', toponame;
        END IF;
 
        --
        -- Get new layer id from sequence
        --
-       FOR rec IN EXECUTE ''SELECT nextval('' ||
+       FOR rec IN EXECUTE 'SELECT nextval(' ||
                quote_literal(
-                       quote_ident(toponame) || ''.layer_id_seq''
-               ) || '')''
+                       quote_ident(toponame) || '.layer_id_seq'
+               ) || ')'
        LOOP
                layer_id = rec.nextval;
        END LOOP;
 
-       IF ltype = ''POINT'' THEN
+       IF ltype = 'POINT' THEN
                intltype = 1;
-       ELSIF ltype = ''LINE'' THEN
+       ELSIF ltype = 'LINE' THEN
                intltype = 2;
-       ELSIF ltype = ''POLYGON'' THEN
+       ELSIF ltype = 'POLYGON' THEN
                intltype = 3;
-       ELSIF ltype = ''COLLECTION'' THEN
+       ELSIF ltype = 'COLLECTION' THEN
                intltype = 4;
        ELSE
-               RAISE EXCEPTION ''Layer type must be one of POINT,LINE,POLYGON,COLLECTION'';
+               RAISE EXCEPTION 'Layer type must be one of POINT,LINE,POLYGON,COLLECTION';
        END IF;
 
        --
        -- See if child id exists and extract its level
        --
        IF child IS NULL THEN
-               EXECUTE ''INSERT INTO ''
-                       || ''topology.layer(topology_id, ''
-                       || ''layer_id, schema_name, ''
-                       || ''table_name, feature_column, feature_type) ''
-                       || ''VALUES (''
-                       || topoid || '',''
-                       || layer_id || '','
-                       || quote_literal(schema) || '',''
-                       || quote_literal(tbl) || '',''
-                       || quote_literal(col) || '',''
-                       || intltype || '');'';
+               EXECUTE 'INSERT INTO '
+                       || 'topology.layer(topology_id, '
+                       || 'layer_id, schema_name, '
+                       || 'table_name, feature_column, feature_type) '
+                       || 'VALUES ('
+                       || topoid || ','
+                       || layer_id || ',
+                       || quote_literal(schema) || ','
+                       || quote_literal(tbl) || ','
+                       || quote_literal(col) || ','
+                       || intltype || ');';
        ELSE
-               FOR rec IN EXECUTE ''SELECT level FROM topology.layer''
-                       || '' WHERE layer_id = '' || child
+               FOR rec IN EXECUTE 'SELECT level FROM topology.layer'
+                       || ' WHERE layer_id = ' || child
                LOOP
                        level = rec.level + 1;
                END LOOP;
 
-               EXECUTE ''INSERT INTO '
-                       || ''topology.layer(topology_id, ''
-                       || ''layer_id, level, child_id, schema_name, ''
-                       || ''table_name, feature_column, feature_type) ''
-                       || ''VALUES (''
-                       || topoid || '',''
-                       || layer_id || '','' || level || '',''
-                       || child || '',''
-                       || quote_literal(schema) || '',''
-                       || quote_literal(tbl) || '',''
-                       || quote_literal(col) || '',''
-                       || intltype || '');'';
+               EXECUTE 'INSERT INTO 
+                       || 'topology.layer(topology_id, '
+                       || 'layer_id, level, child_id, schema_name, '
+                       || 'table_name, feature_column, feature_type) '
+                       || 'VALUES ('
+                       || topoid || ','
+                       || layer_id || ',' || level || ','
+                       || child || ','
+                       || quote_literal(schema) || ','
+                       || quote_literal(tbl) || ','
+                       || quote_literal(col) || ','
+                       || intltype || ');';
        END IF;
 
 
        --
        -- Create a sequence for TopoGeometries in this new layer
        --
-       EXECUTE ''CREATE SEQUENCE '' || quote_ident(toponame)
-               || ''.topogeo_s_'' || layer_id;
+       EXECUTE 'CREATE SEQUENCE ' || quote_ident(toponame)
+               || '.topogeo_s_' || layer_id;
 
        --
        -- Add new TopoGeometry column in schema.table
        --
-       EXECUTE ''ALTER TABLE '' || quote_ident(schema)
-               || ''.'' || quote_ident(tbl) 
-               || '' ADD COLUMN '' || quote_ident(col)
-               || '' topology.TopoGeometry;'';
+       EXECUTE 'ALTER TABLE ' || quote_ident(schema)
+               || '.' || quote_ident(tbl) 
+               || ' ADD COLUMN ' || quote_ident(col)
+               || ' topology.TopoGeometry;';
 
        --
        -- Add constraints on TopoGeom column
        --
-       EXECUTE ''ALTER TABLE '' || quote_ident(schema)
-               || ''.'' || quote_ident(tbl) 
-               || '' ADD CONSTRAINT check_topogeom CHECK (''
-               || ''topology_id('' || quote_ident(col) || '') = '' || topoid
-               || '' AND ''
-               || ''layer_id('' || quote_ident(col) || '') = '' || layer_id
-               || '' AND ''
-               || ''type('' || quote_ident(col) || '') = '' || intltype
-               || '');'';
+       EXECUTE 'ALTER TABLE ' || quote_ident(schema)
+               || '.' || quote_ident(tbl) 
+               || ' ADD CONSTRAINT check_topogeom CHECK ('
+               || 'topology_id(' || quote_ident(col) || ') = ' || topoid
+               || ' AND '
+               || 'layer_id(' || quote_ident(col) || ') = ' || layer_id
+               || ' AND '
+               || 'type(' || quote_ident(col) || ') = ' || intltype
+               || ');';
 
        --
        -- Add dependency of the feature column on the topology schema
        --
-       query = ''INSERT INTO pg_catalog.pg_depend SELECT ''
-               || ''fcat.oid, fobj.oid, fsub.attnum, tcat.oid, ''
-               || ''tobj.oid, 0, ''''n'''' ''
-               || ''FROM pg_class fcat, pg_namespace fnsp, ''
-               || '' pg_class fobj, pg_attribute fsub, ''
-               || '' pg_class tcat, pg_namespace tobj ''
-               || '' WHERE fcat.relname = ''''pg_class'''' ''
-               || '' AND fnsp.nspname = '' || quote_literal(schema)
-               || '' AND fobj.relnamespace = fnsp.oid ''
-               || '' AND fobj.relname = '' || quote_literal(tbl)
-               || '' AND fsub.attrelid = fobj.oid ''
-               || '' AND fsub.attname = '' || quote_literal(col)
-               || '' AND tcat.relname = ''''pg_namespace'''' ''
-               || '' AND tobj.nspname = '' || quote_literal(toponame);
+       query = 'INSERT INTO pg_catalog.pg_depend SELECT '
+               || 'fcat.oid, fobj.oid, fsub.attnum, tcat.oid, '
+               || 'tobj.oid, 0, ''n'' '
+               || 'FROM pg_class fcat, pg_namespace fnsp, '
+               || ' pg_class fobj, pg_attribute fsub, '
+               || ' pg_class tcat, pg_namespace tobj '
+               || ' WHERE fcat.relname = ''pg_class'' '
+               || ' AND fnsp.nspname = ' || quote_literal(schema)
+               || ' AND fobj.relnamespace = fnsp.oid '
+               || ' AND fobj.relname = ' || quote_literal(tbl)
+               || ' AND fsub.attrelid = fobj.oid '
+               || ' AND fsub.attname = ' || quote_literal(col)
+               || ' AND tcat.relname = ''pg_namespace'' '
+               || ' AND tobj.nspname = ' || quote_literal(toponame);
 
 --
 -- The only reason to add this dependency is to avoid
@@ -669,39 +668,40 @@ BEGIN
        -- Add dependency of the topogeom sequence on the feature column 
        -- This is a dirty hack ...
        --
-       query = ''INSERT INTO pg_catalog.pg_depend SELECT ''
-               || ''scat.oid, sobj.oid, 0, fcat.oid, ''
-               || ''fobj.oid, fsub.attnum, ''''n'''' ''
-               || ''FROM pg_class fcat, pg_namespace fnsp, ''
-               || '' pg_class fobj, pg_attribute fsub, ''
-               || '' pg_class scat, pg_class sobj, ''
-               || '' pg_namespace snsp ''
-               || '' WHERE fcat.relname = ''''pg_class'''' ''
-               || '' AND fnsp.nspname = '' || quote_literal(schema)
-               || '' AND fobj.relnamespace = fnsp.oid ''
-               || '' AND fobj.relname = '' || quote_literal(tbl)
-               || '' AND fsub.attrelid = fobj.oid ''
-               || '' AND fsub.attname = '' || quote_literal(col)
-               || '' AND scat.relname = ''''pg_class'''' ''
-               || '' AND snsp.nspname = '' || quote_literal(toponame)
-               || '' AND sobj.relnamespace = snsp.oid '
-               || '' AND sobj.relname = ''
-               || '' ''''topogeo_s_'' || layer_id || '''''' '';
-
-       RAISE NOTICE ''%'', query;
+       query = 'INSERT INTO pg_catalog.pg_depend SELECT '
+               || 'scat.oid, sobj.oid, 0, fcat.oid, '
+               || 'fobj.oid, fsub.attnum, ''n'' '
+               || 'FROM pg_class fcat, pg_namespace fnsp, '
+               || ' pg_class fobj, pg_attribute fsub, '
+               || ' pg_class scat, pg_class sobj, '
+               || ' pg_namespace snsp '
+               || ' WHERE fcat.relname = ''pg_class'' '
+               || ' AND fnsp.nspname = ' || quote_literal(schema)
+               || ' AND fobj.relnamespace = fnsp.oid '
+               || ' AND fobj.relname = ' || quote_literal(tbl)
+               || ' AND fsub.attrelid = fobj.oid '
+               || ' AND fsub.attname = ' || quote_literal(col)
+               || ' AND scat.relname = ''pg_class'' '
+               || ' AND snsp.nspname = ' || quote_literal(toponame)
+               || ' AND sobj.relnamespace = snsp.oid 
+               || ' AND sobj.relname = '
+               || ' ''topogeo_s_' || layer_id || ''' ';
+
+       RAISE NOTICE '%', query;
        EXECUTE query;
 #endif
 
        RETURN layer_id;
 END;
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 
 CREATE OR REPLACE FUNCTION topology.AddTopoGeometryColumn(varchar, varchar, varchar, varchar, varchar)
        RETURNS integer
-AS '
+AS
+$$
        SELECT topology.AddTopoGeometryColumn($1, $2, $3, $4, $5, NULL);
-'
+$$
 LANGUAGE 'sql' VOLATILE;
 
 --
@@ -716,7 +716,8 @@ LANGUAGE 'sql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.DropTopoGeometryColumn(varchar, varchar, varchar)
        RETURNS text
-AS '
+AS
+$$
 DECLARE
        schema alias for $1;
        tbl alias for $2;
@@ -729,12 +730,12 @@ BEGIN
 
         -- Get layer and topology info
        ok = false;
-       FOR rec IN EXECUTE ''SELECT t.name as toponame, l.* FROM ''
-               || ''topology.topology t, topology.layer l ''
-               || '' WHERE l.topology_id = t.id''
-               || '' AND l.schema_name = '' || quote_literal(schema)
-               || '' AND l.table_name = '' || quote_literal(tbl)
-               || '' AND l.feature_column = '' || quote_literal(col)
+       FOR rec IN EXECUTE 'SELECT t.name as toponame, l.* FROM '
+               || 'topology.topology t, topology.layer l '
+               || ' WHERE l.topology_id = t.id'
+               || ' AND l.schema_name = ' || quote_literal(schema)
+               || ' AND l.table_name = ' || quote_literal(tbl)
+               || ' AND l.feature_column = ' || quote_literal(col)
        LOOP
                ok = true;
                lyrinfo = rec;
@@ -742,7 +743,7 @@ BEGIN
 
        -- Layer not found
        IF NOT ok THEN
-               RAISE EXCEPTION ''No layer registered on %.%.%'',
+               RAISE EXCEPTION 'No layer registered on %.%.%',
                        schema,tbl,col;
        END IF;
                
@@ -751,14 +752,14 @@ BEGIN
                WHERE text(nspname) = lyrinfo.toponame
        LOOP
                -- Cleanup the relation table
-               EXECUTE ''DELETE FROM '' || quote_ident(lyrinfo.toponame)
-                       || ''.relation ''
-                       || '' WHERE ''
-                       || ''layer_id = '' || lyrinfo.layer_id;
+               EXECUTE 'DELETE FROM ' || quote_ident(lyrinfo.toponame)
+                       || '.relation '
+                       || ' WHERE '
+                       || 'layer_id = ' || lyrinfo.layer_id;
 
                -- Drop the sequence for topogeoms in this layer
-               EXECUTE ''DROP SEQUENCE '' || quote_ident(lyrinfo.toponame)
-                       || ''.topogeo_s_'' || lyrinfo.layer_id;
+               EXECUTE 'DROP SEQUENCE ' || quote_ident(lyrinfo.toponame)
+                       || '.topogeo_s_' || lyrinfo.layer_id;
 
        END LOOP;
 
@@ -778,32 +779,32 @@ BEGIN
        IF ok THEN
                -- Set feature column to NULL to bypass referential integrity
                -- checks
-               EXECUTE ''UPDATE '' || quote_ident(schema) || ''.''
+               EXECUTE 'UPDATE ' || quote_ident(schema) || '.'
                        || quote_ident(tbl)
-                       || '' SET '' || quote_ident(col)
-                       || '' = NULL'';
+                       || ' SET ' || quote_ident(col)
+                       || ' = NULL';
        END IF;
 
        -- Delete the layer record
-       EXECUTE ''DELETE FROM topology.layer ''
-               || '' WHERE topology_id = '' || lyrinfo.topology_id
-               || '' AND layer_id = '' || lyrinfo.layer_id;
+       EXECUTE 'DELETE FROM topology.layer '
+               || ' WHERE topology_id = ' || lyrinfo.topology_id
+               || ' AND layer_id = ' || lyrinfo.layer_id;
 
        IF ok THEN
                -- Drop the layer column
-               EXECUTE ''ALTER TABLE '' || quote_ident(schema) || ''.''
+               EXECUTE 'ALTER TABLE ' || quote_ident(schema) || '.'
                        || quote_ident(tbl)
-                       || '' DROP '' || quote_ident(col)
-                       || '' cascade'';
+                       || ' DROP ' || quote_ident(col)
+                       || ' cascade';
        END IF;
 
-       result = ''Layer '' || lyrinfo.layer_id || '' (''
-               || schema || ''.'' || tbl || ''.'' || col
-               || '') dropped'';
+       result = 'Layer ' || lyrinfo.layer_id || ' ('
+               || schema || '.' || tbl || '.' || col
+               || ') dropped';
 
        RETURN result;
 END;
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --
 --} DropTopoGeometryColumn
@@ -824,7 +825,8 @@ LANGUAGE 'plpgsql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.CreateTopoGeom(varchar, integer, integer, topology.TopoElementArray)
        RETURNS topology.TopoGeometry
-AS '
+AS
+$$
 DECLARE
        toponame alias for $1;
        tg_type alias for $2; -- 1:[multi]point
@@ -847,7 +849,7 @@ DECLARE
 BEGIN
 
        IF tg_type < 1 OR tg_type > 4 THEN
-               RAISE EXCEPTION ''Invalid TopoGeometry type (must be in the range 1..4'';
+               RAISE EXCEPTION 'Invalid TopoGeometry type (must be in the range 1..4';
        END IF;
 
        -- Get topology id into return TopoGeometry
@@ -858,9 +860,9 @@ BEGIN
        -- Get layer info
        --
        layertype := NULL;
-       FOR rec IN EXECUTE ''SELECT * FROM topology.layer''
-               || '' WHERE topology_id = '' || ret.topology_id
-               || '' AND layer_id = '' || layer_id
+       FOR rec IN EXECUTE 'SELECT * FROM topology.layer'
+               || ' WHERE topology_id = ' || ret.topology_id
+               || ' AND layer_id = ' || layer_id
        LOOP
                layertype = rec.feature_type;
                layerlevel = rec.level;
@@ -869,13 +871,13 @@ BEGIN
 
        -- Check for existence of given layer id
        IF layertype IS NULL THEN
-               RAISE EXCEPTION ''No layer with id % is registered with topology %'', layer_id, toponame;
+               RAISE EXCEPTION 'No layer with id % is registered with topology %', layer_id, toponame;
        END IF;
 
        -- Verify compatibility between layer geometry type and
        -- TopoGeom requested geometry type
        IF layertype != 4 and layertype != tg_type THEN
-               RAISE EXCEPTION ''A Layer of type % cannot contain a TopoGeometry of type %'', layertype, tg_type;
+               RAISE EXCEPTION 'A Layer of type % cannot contain a TopoGeometry of type %', layertype, tg_type;
        END IF;
 
        -- Set layer id and type in return object
@@ -885,10 +887,10 @@ BEGIN
        --
        -- Get new TopoGeo id from sequence
        --
-       FOR rec IN EXECUTE ''SELECT nextval('' ||
+       FOR rec IN EXECUTE 'SELECT nextval(' ||
                quote_literal(
-                       quote_ident(toponame) || ''.topogeo_s_'' || layer_id
-               ) || '')''
+                       quote_ident(toponame) || '.topogeo_s_' || layer_id
+               ) || ')'
        LOOP
                ret.id = rec.nextval;
        END LOOP;
@@ -900,27 +902,27 @@ BEGIN
                obj_type = tg_objs[i][2];
                IF layerlevel = 0 THEN -- array specifies lower-level objects
                        IF tg_type != 4 and tg_type != obj_type THEN
-                               RAISE EXCEPTION ''A TopoGeometry of type % cannot contain topology elements of type %'', tg_type, obj_type;
+                               RAISE EXCEPTION 'A TopoGeometry of type % cannot contain topology elements of type %', tg_type, obj_type;
                        END IF;
                ELSE -- array specifies lower-level topogeometries
                        IF obj_type != layerchild THEN
-                               RAISE EXCEPTION ''TopoGeom element layer do not match TopoGeom child layer'';
+                               RAISE EXCEPTION 'TopoGeom element layer do not match TopoGeom child layer';
                        END IF;
                        -- TODO: verify that the referred TopoGeometry really
                        -- exists in the relation table ?
                END IF;
 
-               --RAISE NOTICE ''obj:% type:% id:%'', i, obj_type, obj_id;
+               --RAISE NOTICE 'obj:% type:% id:%', i, obj_type, obj_id;
 
                --
                -- Insert record into the Relation table
                --
-               EXECUTE ''INSERT INTO ''||quote_ident(toponame)
-                       || ''.relation(topogeo_id, layer_id, ''
-                       || ''element_id,element_type) ''
-                       || '' VALUES (''||ret.id
-                       ||'',''||ret.layer_id
-                       || '','' || obj_id || '','' || obj_type || '');'';
+               EXECUTE 'INSERT INTO '||quote_ident(toponame)
+                       || '.relation(topogeo_id, layer_id, '
+                       || 'element_id,element_type) '
+                       || ' VALUES ('||ret.id
+                       ||','||ret.layer_id
+                       || ',' || obj_id || ',' || obj_type || ');';
 
                i = i+1;
                IF i > array_upper(tg_objs, 1) THEN
@@ -931,7 +933,7 @@ BEGIN
        RETURN ret;
 
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 --} CreateTopoGeom(toponame,topogeom_type, TopoObject[])
 
@@ -941,7 +943,7 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 CREATE OR REPLACE FUNCTION topology.GetTopologyName(integer)
        RETURNS varchar
 AS
-'
+$$
 DECLARE
        topoid alias for $1;
        ret varchar;
@@ -950,7 +952,7 @@ BEGIN
                 WHERE id = topoid;
        RETURN ret;
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 --} GetTopologyName(topoid)
 
@@ -960,7 +962,7 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 CREATE OR REPLACE FUNCTION topology.GetTopologyId(varchar)
        RETURNS integer
 AS
-'
+$$
 DECLARE
        toponame alias for $1;
        ret integer;
@@ -969,7 +971,7 @@ BEGIN
                 WHERE name = toponame;
        RETURN ret;
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 --} GetTopologyId(toponame)
        
@@ -984,48 +986,48 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 CREATE OR REPLACE FUNCTION topology.GetTopoGeomElementArray(varchar, integer, integer)
        RETURNS topology.TopoElementArray
 AS
-'
+$$
 DECLARE
        toponame alias for $1;
        layerid alias for $2;
        tgid alias for $3;
        rec RECORD;
-       tg_objs varchar := ''{'';
+       tg_objs varchar := '{';
        i integer;
        query text;
 BEGIN
 
-       query = ''SELECT * FROM topology.GetTopoGeomElements(''
-               || quote_literal(toponame) || '',''
-               || quote_literal(layerid) || '',''
+       query = 'SELECT * FROM topology.GetTopoGeomElements('
+               || quote_literal(toponame) || ','
+               || quote_literal(layerid) || ','
                || quote_literal(tgid)
-               || '') as obj ORDER BY obj'';
+               || ') as obj ORDER BY obj';
 
-       RAISE NOTICE ''Query: %'', query;
+       RAISE NOTICE 'Query: %', query;
 
        i = 1;
        FOR rec IN EXECUTE query
        LOOP
                IF i > 1 THEN
-                       tg_objs = tg_objs || '','';
+                       tg_objs = tg_objs || ',';
                END IF;
-               tg_objs = tg_objs || ''{''
-                       || rec.obj[1] || '','' || rec.obj[2]
-                       || ''}'';
+               tg_objs = tg_objs || '{'
+                       || rec.obj[1] || ',' || rec.obj[2]
+                       || '}';
                i = i+1;
        END LOOP;
 
-       tg_objs = tg_objs || ''}'';
+       tg_objs = tg_objs || '}';
 
        RETURN tg_objs;
 END;
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 
 CREATE OR REPLACE FUNCTION topology.GetTopoGeomElementArray(topology.TopoGeometry)
        RETURNS topology.TopoElementArray
 AS
-'
+$$
 DECLARE
        tg alias for $1;
        toponame varchar;
@@ -1035,7 +1037,7 @@ BEGIN
        ret = topology.GetTopoGeomElementArray(toponame,tg.layer_id,tg.id);
        RETURN ret;
 END;
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 
 --} GetTopoGeomElementArray()
@@ -1049,7 +1051,7 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 CREATE OR REPLACE FUNCTION topology.GetTopoGeomElements(varchar, integer, integer)
        RETURNS SETOF topology.TopoElement
 AS
-'
+$$
 DECLARE
        toponame alias for $1;
        layerid alias for $2;
@@ -1065,43 +1067,43 @@ BEGIN
 
        -- 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 = ' || layerid
        LOOP
                lyr = rec;
                ok = true;
        END LOOP;
 
        IF NOT ok THEN
-               RAISE EXCEPTION ''Layer % does not exist'', layerid;
+               RAISE EXCEPTION 'Layer % does not exist', layerid;
        END IF;
 
 
-       query = ''SELECT abs(element_id) as element_id, element_type FROM ''
-               || quote_ident(toponame) || ''.relation WHERE ''
-               || '' layer_id = '' || layerid
-               || '' AND topogeo_id = '' || quote_literal(tgid)
-               || '' ORDER BY element_type, element_id'';
+       query = 'SELECT abs(element_id) as element_id, element_type FROM '
+               || quote_ident(toponame) || '.relation WHERE '
+               || ' layer_id = ' || layerid
+               || ' AND topogeo_id = ' || quote_literal(tgid)
+               || ' ORDER BY element_type, element_id';
 
-       --RAISE NOTICE ''Query: %'', query;
+       --RAISE NOTICE 'Query: %', query;
 
        FOR rec IN EXECUTE query
        LOOP
                IF lyr.level > 0 THEN
-                       query2 = ''SELECT * from topology.GetTopoGeomElements(''
-                               || quote_literal(toponame) || '',''
+                       query2 = 'SELECT * from topology.GetTopoGeomElements('
+                               || quote_literal(toponame) || ','
                                || rec.element_type
-                               || '',''
+                               || ','
                                || rec.element_id
-                               || '') as ret;'';
-                       --RAISE NOTICE ''Query2: %'', query2;
+                               || ') as ret;';
+                       --RAISE NOTICE 'Query2: %', query2;
                        FOR rec2 IN EXECUTE query2
                        LOOP
                                RETURN NEXT rec2.ret;
                        END LOOP;
                ELSE
-                       ret = ''{'' || rec.element_id || '','' || rec.element_type || ''}'';
+                       ret = '{' || rec.element_id || ',' || rec.element_type || '}';
                        RETURN NEXT ret;
                END IF;
        
@@ -1109,13 +1111,13 @@ BEGIN
 
        RETURN;
 END;
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 
 CREATE OR REPLACE FUNCTION topology.GetTopoGeomElements(topology.TopoGeometry)
        RETURNS SETOF topology.TopoElement
 AS
-'
+$$
 DECLARE
        tg alias for $1;
        toponame varchar;
@@ -1129,7 +1131,7 @@ BEGIN
        END LOOP;
        RETURN;
 END;
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 
 --} GetTopoGeomElements()
@@ -1505,7 +1507,7 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 --
 CREATE OR REPLACE FUNCTION topology.TopoGeo_AddPoint(varchar, geometry, integer, integer)
        RETURNS int AS
-'
+$$
 DECLARE
        atopology alias for $1;
        apoint alias for $2;
@@ -1515,12 +1517,12 @@ BEGIN
        -- Add nodes (contained in NO face)
        SELECT topology.ST_AddIsoNode(atopology, NULL, apoint) INTO ret;
 
-       RAISE NOTICE ''TopoGeo_AddPoint: node: %'', ret;
+       RAISE NOTICE 'TopoGeo_AddPoint: node: %', ret;
 
        RETURN ret;
 
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE;
 --} TopoGeo_AddPoint
 
@@ -1531,7 +1533,7 @@ LANGUAGE 'plpgsql' VOLATILE;
 --
 CREATE OR REPLACE FUNCTION topology.TopoGeo_addLinestring(varchar, geometry)
        RETURNS int AS
-'
+$$
 DECLARE
        atopology alias for $1;
        aline alias for $2;
@@ -1543,12 +1545,12 @@ DECLARE
        lastnode int;
        edgeid int;
 BEGIN
-       RAISE DEBUG ''Line: %'', ST_asEWKT(aline);
+       RAISE DEBUG 'Line: %', ST_asEWKT(aline);
 
        firstpoint = ST_StartPoint(aline);
        lastpoint = ST_EndPoint(aline);
 
-       RAISE DEBUG ''First point: %, Last point: %'',
+       RAISE DEBUG 'First point: %, Last point: %',
                ST_asEWKT(firstpoint),
                ST_asEWKT(lastpoint);
 
@@ -1556,17 +1558,17 @@ BEGIN
        SELECT topology.ST_AddIsoNode(atopology, NULL, firstpoint) INTO firstnode;
        SELECT topology.ST_AddIsoNode(atopology, NULL, lastpoint) INTO lastnode;
 
-       RAISE NOTICE ''First node: %, Last node: %'', firstnode, lastnode;
+       RAISE NOTICE 'First node: %, Last node: %', firstnode, lastnode;
 
        -- Add edge 
        SELECT topology.ST_AddIsoEdge(atopology, firstnode, lastnode, aline)
                INTO edgeid;
 
-       RAISE DEBUG ''Edge: %'', edgeid;
+       RAISE DEBUG 'Edge: %', edgeid;
 
        RETURN edgeid;
 END
-'
+$$
 LANGUAGE 'plpgsql';
 --} TopoGeo_addLinestring
 
@@ -1577,15 +1579,15 @@ LANGUAGE 'plpgsql';
 --
 CREATE OR REPLACE FUNCTION topology.TopoGeo_AddPolygon(varchar, geometry)
        RETURNS int AS
-'
+$$
 DECLARE
        rec RECORD;
        query text;
 BEGIN
 
-       RAISE EXCEPTION ''TopoGeo_AddPolygon not implemented yet'';
+       RAISE EXCEPTION 'TopoGeo_AddPolygon not implemented yet';
 END
-'
+$$
 LANGUAGE 'plpgsql';
 --} TopoGeo_AddPolygon
 
@@ -1598,7 +1600,8 @@ LANGUAGE 'plpgsql';
 --
 CREATE OR REPLACE FUNCTION topology.CreateTopology(varchar, integer, float8)
 RETURNS integer
-AS '
+AS
+$$
 DECLARE
        atopology alias for $1;
        srid alias for $2;
@@ -1609,32 +1612,32 @@ BEGIN
 
 --     FOR rec IN SELECT * FROM pg_namespace WHERE text(nspname) = atopology
 --     LOOP
---             RAISE EXCEPTION ''SQL/MM Spatial exception - schema already exists'';
+--             RAISE EXCEPTION 'SQL/MM Spatial exception - schema already exists';
 --     END LOOP;
 
        ------ Fetch next id for the new topology
-       FOR rec IN SELECT nextval(''topology.topology_id_seq'')
+       FOR rec IN SELECT nextval('topology.topology_id_seq')
        LOOP
                topology_id = rec.nextval;
        END LOOP;
 
 
-       EXECUTE ''
-CREATE SCHEMA '' || quote_ident(atopology) || '';
-       '';
+       EXECUTE '
+CREATE SCHEMA ' || quote_ident(atopology) || ';
+       ';
 
        -------------{ face CREATION
        EXECUTE 
-       ''CREATE TABLE '' || quote_ident(atopology) || ''.face (''
-       || ''face_id SERIAL,''
-       || '' CONSTRAINT face_primary_key PRIMARY KEY(face_id)''
-       || '');'';
+       'CREATE TABLE ' || quote_ident(atopology) || '.face ('
+       || 'face_id SERIAL,'
+       || ' CONSTRAINT face_primary_key PRIMARY KEY(face_id)'
+       || ');';
 
        -- Add mbr column to the face table 
        EXECUTE
-       ''SELECT AddGeometryColumn(''||quote_literal(atopology)
-       ||'',''''face'''',''''mbr'''',''||quote_literal(srid)
-       ||'',''''POLYGON'''',''''2'''')'';
+       'SELECT AddGeometryColumn('||quote_literal(atopology)
+       ||',''face'',''mbr'','||quote_literal(srid)
+       ||',''POLYGON'',''2'')';
 
        -------------} END OF face CREATION
 
@@ -1642,26 +1645,26 @@ CREATE SCHEMA '' || quote_ident(atopology) || '';
        --------------{ node CREATION
 
        EXECUTE 
-       ''CREATE TABLE '' || quote_ident(atopology) || ''.node (''
-       || ''node_id SERIAL,''
-       --|| ''geom GEOMETRY,''
-       || ''containing_face INTEGER,''
+       'CREATE TABLE ' || quote_ident(atopology) || '.node ('
+       || 'node_id SERIAL,'
+       --|| 'geom GEOMETRY,'
+       || 'containing_face INTEGER,'
 
-       || ''CONSTRAINT node_primary_key PRIMARY KEY(node_id),''
+       || 'CONSTRAINT node_primary_key PRIMARY KEY(node_id),'
 
-       --|| ''CONSTRAINT node_geometry_type CHECK ''
-       --|| ''( GeometryType(geom) = ''''POINT'''' ),''
+       --|| 'CONSTRAINT node_geometry_type CHECK '
+       --|| '( GeometryType(geom) = ''POINT'' ),'
 
-       || ''CONSTRAINT face_exists FOREIGN KEY(containing_face) ''
-       || ''REFERENCES '' || quote_ident(atopology) || ''.face(face_id)''
+       || 'CONSTRAINT face_exists FOREIGN KEY(containing_face) '
+       || 'REFERENCES ' || quote_ident(atopology) || '.face(face_id)'
 
-       || '');'';
+       || ');';
 
        -- Add geometry column to the node table 
        EXECUTE
-       ''SELECT AddGeometryColumn(''||quote_literal(atopology)
-       ||'',''''node'''',''''geom'''',''||quote_literal(srid)
-       ||'',''''POINT'''',''''2'''')'';
+       'SELECT AddGeometryColumn('||quote_literal(atopology)
+       ||',''node'',''geom'','||quote_literal(srid)
+       ||',''POINT'',''2'')';
 
        --------------} END OF node CREATION
 
@@ -1669,165 +1672,165 @@ CREATE SCHEMA '' || quote_ident(atopology) || '';
 
        -- edge_data table
        EXECUTE 
-       ''CREATE TABLE '' || quote_ident(atopology) || ''.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 NOT NULL,''
-
-       --|| ''CONSTRAINT edge_geometry_type CHECK ''
-       --|| ''( GeometryType(geom) = ''''LINESTRING'''' ),''
-
-       || ''CONSTRAINT start_node_exists FOREIGN KEY(start_node)''
-       || '' REFERENCES '' || quote_ident(atopology) || ''.node(node_id),''
-
-       || ''CONSTRAINT end_node_exists FOREIGN KEY(end_node) ''
-       || '' REFERENCES '' || quote_ident(atopology) || ''.node(node_id),''
-
-       || ''CONSTRAINT left_face_exists FOREIGN KEY(left_face) ''
-       || ''REFERENCES '' || quote_ident(atopology) || ''.face(face_id),''
-
-       || ''CONSTRAINT right_face_exists FOREIGN KEY(right_face) ''
-       || ''REFERENCES '' || quote_ident(atopology) || ''.face(face_id),''
-
-       || ''CONSTRAINT next_left_edge_exists FOREIGN KEY(abs_next_left_edge)''
-       || '' REFERENCES '' || quote_ident(atopology)
-       || ''.edge_data(edge_id)''
-       || '' DEFERRABLE INITIALLY DEFERRED,''
-
-       || ''CONSTRAINT next_right_edge_exists ''
-       || ''FOREIGN KEY(abs_next_right_edge)''
-       || '' REFERENCES '' || quote_ident(atopology)
-       || ''.edge_data(edge_id) ''
-       || '' DEFERRABLE INITIALLY DEFERRED''
-       || '');'';
+       'CREATE TABLE ' || quote_ident(atopology) || '.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 NOT NULL,'
+
+       --|| 'CONSTRAINT edge_geometry_type CHECK '
+       --|| '( GeometryType(geom) = ''LINESTRING'' ),'
+
+       || 'CONSTRAINT start_node_exists FOREIGN KEY(start_node)'
+       || ' REFERENCES ' || quote_ident(atopology) || '.node(node_id),'
+
+       || 'CONSTRAINT end_node_exists FOREIGN KEY(end_node) '
+       || ' REFERENCES ' || quote_ident(atopology) || '.node(node_id),'
+
+       || 'CONSTRAINT left_face_exists FOREIGN KEY(left_face) '
+       || 'REFERENCES ' || quote_ident(atopology) || '.face(face_id),'
+
+       || 'CONSTRAINT right_face_exists FOREIGN KEY(right_face) '
+       || 'REFERENCES ' || quote_ident(atopology) || '.face(face_id),'
+
+       || 'CONSTRAINT next_left_edge_exists FOREIGN KEY(abs_next_left_edge)'
+       || ' REFERENCES ' || quote_ident(atopology)
+       || '.edge_data(edge_id)'
+       || ' DEFERRABLE INITIALLY DEFERRED,'
+
+       || 'CONSTRAINT next_right_edge_exists '
+       || 'FOREIGN KEY(abs_next_right_edge)'
+       || ' REFERENCES ' || quote_ident(atopology)
+       || '.edge_data(edge_id) '
+       || ' DEFERRABLE INITIALLY DEFERRED'
+       || ');';
 
        -- Add geometry column to the edge_data table 
        EXECUTE
-       ''SELECT AddGeometryColumn(''||quote_literal(atopology)
-       ||'',''''edge_data'''',''''geom'''',''||quote_literal(srid)
-       ||'',''''LINESTRING'''',''''2'''')'';
+       'SELECT AddGeometryColumn('||quote_literal(atopology)
+       ||',''edge_data'',''geom'','||quote_literal(srid)
+       ||',''LINESTRING'',''2'')';
 
 
        -- edge standard view (select rule)
-       EXECUTE ''CREATE VIEW '' || quote_ident(atopology)
-               || ''.edge AS SELECT ''
-               || '' edge_id, start_node, end_node, next_left_edge, ''
-               || '' next_right_edge, ''
-               || '' left_face, right_face, geom FROM ''
-               || quote_ident(atopology) || ''.edge_data'';
+       EXECUTE 'CREATE VIEW ' || quote_ident(atopology)
+               || '.edge AS SELECT '
+               || ' edge_id, start_node, end_node, next_left_edge, '
+               || ' next_right_edge, '
+               || ' left_face, right_face, geom FROM '
+               || quote_ident(atopology) || '.edge_data';
 
        -- edge standard view description
-       EXECUTE ''COMMENT ON VIEW '' || quote_ident(atopology)
-               || ''.edge IS ''
-               || ''''''Contains edge topology primitives'''''';
-       EXECUTE ''COMMENT ON COLUMN '' || quote_ident(atopology)
-               || ''.edge.edge_id IS ''
-               || ''''''Unique identifier of the edge'''''';
-       EXECUTE ''COMMENT ON COLUMN '' || quote_ident(atopology)
-               || ''.edge.start_node IS ''
-               || ''''''Unique identifier of the node at the start of the edge'''''';
-       EXECUTE ''COMMENT ON COLUMN '' || quote_ident(atopology)
-               || ''.edge.end_node IS ''
-               || ''''''Unique identifier of the node at the end of the edge'''''';
-       EXECUTE ''COMMENT ON COLUMN '' || quote_ident(atopology)
-               || ''.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'''''';
-       EXECUTE ''COMMENT ON COLUMN '' || quote_ident(atopology)
-               || ''.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'''''';
-       EXECUTE ''COMMENT ON COLUMN '' || quote_ident(atopology)
-               || ''.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'''''';
-       EXECUTE ''COMMENT ON COLUMN '' || quote_ident(atopology)
-               || ''.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'''''';
-       EXECUTE ''COMMENT ON COLUMN '' || quote_ident(atopology)
-               || ''.edge.geom IS ''
-               || ''''''The geometry of the edge'''''';
+       EXECUTE 'COMMENT ON VIEW ' || quote_ident(atopology)
+               || '.edge IS '
+               || '''Contains edge topology primitives''';
+       EXECUTE 'COMMENT ON COLUMN ' || quote_ident(atopology)
+               || '.edge.edge_id IS '
+               || '''Unique identifier of the edge''';
+       EXECUTE 'COMMENT ON COLUMN ' || quote_ident(atopology)
+               || '.edge.start_node IS '
+               || '''Unique identifier of the node at the start of the edge''';
+       EXECUTE 'COMMENT ON COLUMN ' || quote_ident(atopology)
+               || '.edge.end_node IS '
+               || '''Unique identifier of the node at the end of the edge''';
+       EXECUTE 'COMMENT ON COLUMN ' || quote_ident(atopology)
+               || '.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''';
+       EXECUTE 'COMMENT ON COLUMN ' || quote_ident(atopology)
+               || '.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''';
+       EXECUTE 'COMMENT ON COLUMN ' || quote_ident(atopology)
+               || '.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''';
+       EXECUTE 'COMMENT ON COLUMN ' || quote_ident(atopology)
+               || '.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''';
+       EXECUTE 'COMMENT ON COLUMN ' || quote_ident(atopology)
+               || '.edge.geom IS '
+               || '''The geometry of the edge''';
 
        -- edge standard view (insert rule)
-       EXECUTE ''CREATE RULE edge_insert_rule AS ON INSERT ''
-               || ''TO '' || quote_ident(atopology)
-               || ''.edge DO INSTEAD ''
-                || '' INSERT into '' || quote_ident(atopology)
-               || ''.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);'';
+       EXECUTE 'CREATE RULE edge_insert_rule AS ON INSERT '
+               || 'TO ' || quote_ident(atopology)
+               || '.edge DO INSTEAD '
+                || ' INSERT into ' || quote_ident(atopology)
+               || '.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 
-       EXECUTE ''CREATE SEQUENCE ''
-               || quote_ident(atopology) || ''.layer_id_seq;'';
+       EXECUTE 'CREATE SEQUENCE '
+               || quote_ident(atopology) || '.layer_id_seq;';
        --------------} layer sequence
 
        --------------{ relation CREATION
        --
        EXECUTE 
-       ''CREATE TABLE '' || quote_ident(atopology) || ''.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 TABLE ' || quote_ident(atopology) || '.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));';
 
        EXECUTE 
-       ''CREATE TRIGGER relation_integrity_checks ''
-       ||''BEFORE UPDATE OR INSERT ON ''
-       || quote_ident(atopology) || ''.relation FOR EACH ROW ''
-       || '' EXECUTE PROCEDURE topology.RelationTrigger(''
-       ||topology_id||'',''||quote_literal(atopology)||'')'';
+       'CREATE TRIGGER relation_integrity_checks '
+       ||'BEFORE UPDATE OR INSERT ON '
+       || quote_ident(atopology) || '.relation FOR EACH ROW '
+       || ' EXECUTE PROCEDURE topology.RelationTrigger('
+       ||topology_id||','||quote_literal(atopology)||')';
        --------------} END OF relation CREATION
 
        
        ------- Default (world) face
-       EXECUTE ''INSERT INTO '' || quote_ident(atopology) || ''.face(face_id) VALUES(0);'';
+       EXECUTE 'INSERT INTO ' || quote_ident(atopology) || '.face(face_id) VALUES(0);';
 
        ------- GiST index on face
-       EXECUTE ''CREATE INDEX face_gist ON ''
+       EXECUTE 'CREATE INDEX face_gist ON '
                || quote_ident(atopology)
-               || ''.face using gist (mbr gist_geometry_ops);'';
+               || '.face using gist (mbr gist_geometry_ops);';
 
        ------- GiST index on node
-       EXECUTE ''CREATE INDEX node_gist ON ''
+       EXECUTE 'CREATE INDEX node_gist ON '
                || quote_ident(atopology)
-               || ''.node using gist (geom gist_geometry_ops);'';
+               || '.node using gist (geom gist_geometry_ops);';
 
        ------- GiST index on edge
-       EXECUTE ''CREATE INDEX edge_gist ON ''
+       EXECUTE 'CREATE INDEX edge_gist ON '
                || quote_ident(atopology)
-               || ''.edge_data using gist (geom gist_geometry_ops);'';
+               || '.edge_data using gist (geom gist_geometry_ops);';
 
        ------- 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
-       EXECUTE ''CREATE INDEX edge_left_face_idx ON ''
+       EXECUTE 'CREATE INDEX edge_left_face_idx ON '
                || quote_ident(atopology)
-               || ''.edge_data (left_face);'';
-       EXECUTE ''CREATE INDEX edge_right_face_idx ON ''
+               || '.edge_data (left_face);';
+       EXECUTE 'CREATE INDEX edge_right_face_idx ON '
                || quote_ident(atopology)
-               || ''.edge_data (right_face);'';
+               || '.edge_data (right_face);';
 
        ------- Add record to the "topology" metadata table
-       EXECUTE ''INSERT INTO topology.topology (id, name, srid, precision) ''
-               || '' VALUES ('' || quote_literal(topology_id) || '',''
-               || quote_literal(atopology) || '',''
-               || quote_literal(srid) || '','' || quote_literal(precision)
-               || '')'';
+       EXECUTE 'INSERT INTO topology.topology (id, name, srid, precision) '
+               || ' VALUES (' || quote_literal(topology_id) || ','
+               || quote_literal(atopology) || ','
+               || quote_literal(srid) || ',' || quote_literal(precision)
+               || ')';
 
        RETURN topology_id;
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 
 -- wrappers for unspecified srid or precision
@@ -1853,7 +1856,8 @@ LANGUAGE 'SQL' VOLATILE STRICT;
 --
 CREATE OR REPLACE FUNCTION topology.DropTopology(varchar)
 RETURNS text
-AS '
+AS
+$$
 DECLARE
        atopology alias for $1;
        topoid integer;
@@ -1867,25 +1871,25 @@ BEGIN
 
        IF topoid IS NOT NULL THEN
 
-               RAISE NOTICE ''Dropping all layers from topology % (%)'',
+               RAISE NOTICE 'Dropping all layers from topology % (%)',
                        atopology, topoid;
 
                -- Drop all layers in the topology
-               FOR rec IN EXECUTE ''SELECT * FROM topology.layer WHERE ''
-                       || '' topology_id = '' || topoid
+               FOR rec IN EXECUTE 'SELECT * FROM topology.layer WHERE '
+                       || ' topology_id = ' || topoid
                LOOP
 
-                       EXECUTE ''SELECT topology.DropTopoGeometryColumn(''
+                       EXECUTE 'SELECT topology.DropTopoGeometryColumn('
                                || quote_literal(rec.schema_name)
-                               || '',''
+                               || ','
                                || quote_literal(rec.table_name)
-                               || '',''
+                               || ','
                                || quote_literal(rec.feature_column)
-                               || '')'';
+                               || ')';
                END LOOP;
 
                -- Delete record from topology.topology
-               EXECUTE ''DELETE FROM topology.topology WHERE id = ''
+               EXECUTE 'DELETE FROM topology.topology WHERE id = '
                        || topoid;
 
        END IF;
@@ -1894,16 +1898,16 @@ BEGIN
        -- Drop the schema (if it exists)
        FOR rec IN SELECT * FROM pg_namespace WHERE text(nspname) = atopology
        LOOP
-               EXECUTE ''DROP SCHEMA ''||quote_ident(atopology)||'' CASCADE'';
+               EXECUTE 'DROP SCHEMA '||quote_ident(atopology)||' CASCADE';
        END LOOP;
 
        -- Drop any reference to the topology schema in geometry_columns
        DELETE FROM geometry_columns WHERE f_table_schema = atopology;
 
 
-       RETURN ''Topology '' || quote_literal(atopology) || '' dropped'';
+       RETURN 'Topology ' || quote_literal(atopology) || ' dropped';
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 --} DropTopology
 
@@ -1923,7 +1927,7 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 CREATE OR REPLACE FUNCTION topology.intersects(topology.TopoGeometry, topology.TopoGeometry)
        RETURNS bool
 AS
-'
+$$
 DECLARE
        tg1 alias for $1;
        tg2 alias for $2;
@@ -1933,7 +1937,7 @@ DECLARE
        query text;
 BEGIN
        IF tg1.topology_id != tg2.topology_id THEN
-               RAISE EXCEPTION ''Cannot compute intersection between TopoGeometries from different topologies'';
+               RAISE EXCEPTION 'Cannot compute intersection between TopoGeometries from different topologies';
        END IF;
 
        -- Order TopoGeometries so that tg1 has less-or-same
@@ -1944,10 +1948,10 @@ BEGIN
                tg1 := tgbuf;
        END IF;
 
-       --RAISE NOTICE ''tg1.id:% tg2.id:%'', tg1.id, tg2.id;
+       --RAISE NOTICE 'tg1.id:% tg2.id:%', tg1.id, tg2.id;
        -- Geometry collection are not currently supported
        IF tg2.type = 4 THEN
-               RAISE EXCEPTION ''GeometryCollection are not supported by intersects()'';
+               RAISE EXCEPTION 'GeometryCollection are not supported by intersects()';
        END IF;
 
         -- Get topology name
@@ -1955,20 +1959,20 @@ BEGIN
                 WHERE id = tg1.topology_id;
 
        -- Hierarchical TopoGeometries are not currently supported
-       query = ''SELECT level FROM topology.layer''
-               || '' WHERE ''
-               || '' topology_id = '' || tg1.topology_id
-               || '' AND ''
-               || ''( layer_id = '' || tg1.layer_id
-               || '' OR layer_id = '' || tg2.layer_id
-               || '' ) ''
-               || '' AND level > 0 '';
+       query = 'SELECT level FROM topology.layer'
+               || ' WHERE '
+               || ' topology_id = ' || tg1.topology_id
+               || ' AND '
+               || '( layer_id = ' || tg1.layer_id
+               || ' OR layer_id = ' || tg2.layer_id
+               || ' ) '
+               || ' AND level > 0 ';
 
-       --RAISE NOTICE ''%'', query;
+       --RAISE NOTICE '%', query;
 
        FOR rec IN EXECUTE query
        LOOP
-               RAISE EXCEPTION ''Hierarchical TopoGeometries are not currently supported by intersects()'';
+               RAISE EXCEPTION 'Hierarchical TopoGeometries are not currently supported by intersects()';
        END LOOP;
 
        IF tg1.type = 1 THEN -- [multi]point
@@ -1983,18 +1987,18 @@ BEGIN
        --
        --
                        query =
-                               ''SELECT a.topogeo_id FROM ''
+                               'SELECT a.topogeo_id FROM '
                                || quote_ident(toponame) ||
-                               ''.relation a, ''
+                               '.relation a, '
                                || quote_ident(toponame) ||
-                               ''.relation b ''
-                               || ''WHERE a.layer_id = '' || tg1.layer_id
-                               || '' AND b.layer_id = '' || tg2.layer_id
-                               || '' AND a.topogeo_id = '' || tg1.id
-                               || '' AND b.topogeo_id = '' || tg2.id
-                               || '' AND a.element_id = b.element_id ''
-                               || '' LIMIT 1'';
-                       --RAISE NOTICE ''%'', query;
+                               '.relation b '
+                               || 'WHERE a.layer_id = ' || tg1.layer_id
+                               || ' AND b.layer_id = ' || tg2.layer_id
+                               || ' AND a.topogeo_id = ' || tg1.id
+                               || ' AND b.topogeo_id = ' || tg2.id
+                               || ' AND a.element_id = b.element_id '
+                               || ' LIMIT 1';
+                       --RAISE NOTICE '%', query;
                        FOR rec IN EXECUTE query
                        LOOP
                                RETURN TRUE; -- they share an element
@@ -2013,25 +2017,25 @@ BEGIN
        --
        --
                        query =
-                               ''SELECT a.topogeo_id FROM ''
+                               'SELECT a.topogeo_id FROM '
                                || quote_ident(toponame) ||
-                               ''.relation a, ''
+                               '.relation a, '
                                || quote_ident(toponame) ||
-                               ''.relation b, ''
+                               '.relation b, '
                                || quote_ident(toponame) ||
-                               ''.edge_data e ''
-                               || ''WHERE a.layer_id = '' || tg1.layer_id
-                               || '' AND b.layer_id = '' || tg2.layer_id
-                               || '' AND a.topogeo_id = '' || tg1.id
-                               || '' AND b.topogeo_id = '' || tg2.id
-                               || '' AND abs(b.element_id) = e.edge_id ''
-                               || '' AND ( ''
-                                       || '' e.start_node = a.element_id ''
-                                       || '' OR ''
-                                       || '' e.end_node = a.element_id ''
-                               || '' )''
-                               || '' LIMIT 1'';
-                       --RAISE NOTICE ''%'', query;
+                               '.edge_data e '
+                               || 'WHERE a.layer_id = ' || tg1.layer_id
+                               || ' AND b.layer_id = ' || tg2.layer_id
+                               || ' AND a.topogeo_id = ' || tg1.id
+                               || ' AND b.topogeo_id = ' || tg2.id
+                               || ' AND abs(b.element_id) = e.edge_id '
+                               || ' AND ( '
+                                       || ' e.start_node = a.element_id '
+                                       || ' OR '
+                                       || ' e.end_node = a.element_id '
+                               || ' )'
+                               || ' LIMIT 1';
+                       --RAISE NOTICE '%', query;
                        FOR rec IN EXECUTE query
                        LOOP
                                RETURN TRUE; -- they share an element
@@ -2056,24 +2060,24 @@ BEGIN
        --
                        -- Check if any node is contained in a face
                        query =
-                               ''SELECT n.node_id as id FROM ''
+                               'SELECT n.node_id as id FROM '
                                || quote_ident(toponame) ||
-                               ''.relation r1, ''
+                               '.relation r1, '
                                || quote_ident(toponame) ||
-                               ''.relation r2, ''
+                               '.relation r2, '
                                || quote_ident(toponame) ||
-                               ''.node n ''
-                               || ''WHERE r1.layer_id = '' || tg1.layer_id
-                               || '' AND r2.layer_id = '' || tg2.layer_id
-                               || '' AND r1.topogeo_id = '' || tg1.id
-                               || '' AND r2.topogeo_id = '' || tg2.id
-                               || '' AND n.node_id = r1.element_id ''
-                               || '' AND r2.element_id = n.containing_face ''
-                               || '' LIMIT 1'';
-                       --RAISE NOTICE ''%'', query;
+                               '.node n '
+                               || 'WHERE r1.layer_id = ' || tg1.layer_id
+                               || ' AND r2.layer_id = ' || tg2.layer_id
+                               || ' AND r1.topogeo_id = ' || tg1.id
+                               || ' AND r2.topogeo_id = ' || tg2.id
+                               || ' AND n.node_id = r1.element_id '
+                               || ' AND r2.element_id = n.containing_face '
+                               || ' LIMIT 1';
+                       --RAISE NOTICE '%', query;
                        FOR rec IN EXECUTE query
                        LOOP
-                               --RAISE NOTICE ''Node % in polygon face'', rec.id;
+                               --RAISE NOTICE 'Node % in polygon face', rec.id;
                                RETURN TRUE; -- one (or more) nodes are
                                             -- contained in a polygon face
                        END LOOP;
@@ -2081,36 +2085,36 @@ BEGIN
                        -- Check if any node is start or end of any polygon
                        -- face edge
                        query =
-                               ''SELECT n.node_id as nid, e.edge_id as eid ''
-                               || '' FROM ''
+                               'SELECT n.node_id as nid, e.edge_id as eid '
+                               || ' FROM '
                                || quote_ident(toponame) ||
-                               ''.relation r1, ''
+                               '.relation r1, '
                                || quote_ident(toponame) ||
-                               ''.relation r2, ''
+                               '.relation r2, '
                                || quote_ident(toponame) ||
-                               ''.edge_data e, ''
+                               '.edge_data e, '
                                || quote_ident(toponame) ||
-                               ''.node n ''
-                               || ''WHERE r1.layer_id = '' || tg1.layer_id
-                               || '' AND r2.layer_id = '' || tg2.layer_id
-                               || '' AND r1.topogeo_id = '' || tg1.id
-                               || '' AND r2.topogeo_id = '' || tg2.id
-                               || '' AND n.node_id = r1.element_id ''
-                               || '' AND ( ''
-                               || '' e.left_face = r2.element_id ''
-                               || '' OR ''
-                               || '' e.right_face = r2.element_id ''
-                               || '' ) ''
-                               || '' AND ( ''
-                               || '' e.start_node = r1.element_id ''
-                               || '' OR ''
-                               || '' e.end_node = r1.element_id ''
-                               || '' ) ''
-                               || '' LIMIT 1'';
-                       --RAISE NOTICE ''%'', query;
+                               '.node n '
+                               || 'WHERE r1.layer_id = ' || tg1.layer_id
+                               || ' AND r2.layer_id = ' || tg2.layer_id
+                               || ' AND r1.topogeo_id = ' || tg1.id
+                               || ' AND r2.topogeo_id = ' || tg2.id
+                               || ' AND n.node_id = r1.element_id '
+                               || ' AND ( '
+                               || ' e.left_face = r2.element_id '
+                               || ' OR '
+                               || ' e.right_face = r2.element_id '
+                               || ' ) '
+                               || ' AND ( '
+                               || ' e.start_node = r1.element_id '
+                               || ' OR '
+                               || ' e.end_node = r1.element_id '
+                               || ' ) '
+                               || ' LIMIT 1';
+                       --RAISE NOTICE '%', query;
                        FOR rec IN EXECUTE query
                        LOOP
-                               --RAISE NOTICE ''Node % on edge % bound'', rec.nid, rec.eid;
+                               --RAISE NOTICE 'Node % on edge % bound', rec.nid, rec.eid;
                                RETURN TRUE; -- one node is start or end
                                             -- of a face edge
                        END LOOP;
@@ -2120,10 +2124,10 @@ BEGIN
        ---------------------------------------------------------
 
                ELSIF tg2.type = 4 THEN -- point/collection
-                       RAISE EXCEPTION ''Intersection point/collection not implemented yet'';
+                       RAISE EXCEPTION 'Intersection point/collection not implemented yet';
 
                ELSE
-                       RAISE EXCEPTION ''Invalid TopoGeometry type'', tg2.type;
+                       RAISE EXCEPTION 'Invalid TopoGeometry type', tg2.type;
                END IF;
 
        ELSIF tg1.type = 2 THEN -- [multi]line
@@ -2136,32 +2140,32 @@ BEGIN
        --
        --
                        query =
-                               ''SELECT e1.start_node FROM ''
+                               'SELECT e1.start_node FROM '
                                || quote_ident(toponame) ||
-                               ''.relation r1, ''
+                               '.relation r1, '
                                || quote_ident(toponame) ||
-                               ''.relation r2, ''
+                               '.relation r2, '
                                || quote_ident(toponame) ||
-                               ''.edge_data e1, ''
+                               '.edge_data e1, '
                                || quote_ident(toponame) ||
-                               ''.edge_data e2 ''
-                               || ''WHERE r1.layer_id = '' || tg1.layer_id
-                               || '' AND r2.layer_id = '' || tg2.layer_id
-                               || '' AND r1.topogeo_id = '' || tg1.id
-                               || '' AND r2.topogeo_id = '' || tg2.id
-                               || '' AND abs(r1.element_id) = e1.edge_id ''
-                               || '' AND abs(r2.element_id) = e2.edge_id ''
-                               || '' AND ( ''
-                                       || '' e1.start_node = e2.start_node ''
-                                       || '' OR ''
-                                       || '' e1.start_node = e2.end_node ''
-                                       || '' OR ''
-                                       || '' e1.end_node = e2.start_node ''
-                                       || '' OR ''
-                                       || '' e1.end_node = e2.end_node ''
-                               || '' )''
-                               || '' LIMIT 1'';
-                       --RAISE NOTICE ''%'', query;
+                               '.edge_data e2 '
+                               || 'WHERE r1.layer_id = ' || tg1.layer_id
+                               || ' AND r2.layer_id = ' || tg2.layer_id
+                               || ' AND r1.topogeo_id = ' || tg1.id
+                               || ' AND r2.topogeo_id = ' || tg2.id
+                               || ' AND abs(r1.element_id) = e1.edge_id '
+                               || ' AND abs(r2.element_id) = e2.edge_id '
+                               || ' AND ( '
+                                       || ' e1.start_node = e2.start_node '
+                                       || ' OR '
+                                       || ' e1.start_node = e2.end_node '
+                                       || ' OR '
+                                       || ' e1.end_node = e2.start_node '
+                                       || ' OR '
+                                       || ' e1.end_node = e2.end_node '
+                               || ' )'
+                               || ' LIMIT 1';
+                       --RAISE NOTICE '%', query;
                        FOR rec IN EXECUTE query
                        LOOP
                                RETURN TRUE; -- they share an element
@@ -2184,51 +2188,51 @@ BEGIN
                        -- R2 are polygon relations.
                        -- R2.element_id are FACE ids
                        query =
-                               ''SELECT e1.edge_id''
-                               || '' FROM ''
+                               'SELECT e1.edge_id'
+                               || ' FROM '
                                || quote_ident(toponame) ||
-                               ''.relation r1, ''
+                               '.relation r1, '
                                || quote_ident(toponame) ||
-                               ''.relation r2, ''
+                               '.relation r2, '
                                || quote_ident(toponame) ||
-                               ''.edge_data e1, ''
+                               '.edge_data e1, '
                                || quote_ident(toponame) ||
-                               ''.edge_data e2 ''
-                               || ''WHERE r1.layer_id = '' || tg1.layer_id
-                               || '' AND r2.layer_id = '' || tg2.layer_id
-                               || '' AND r1.topogeo_id = '' || tg1.id
-                               || '' AND r2.topogeo_id = '' || tg2.id
+                               '.edge_data e2 '
+                               || 'WHERE r1.layer_id = ' || tg1.layer_id
+                               || ' AND r2.layer_id = ' || tg2.layer_id
+                               || ' AND r1.topogeo_id = ' || tg1.id
+                               || ' AND r2.topogeo_id = ' || tg2.id
 
                                -- E1 are line edges
-                               || '' AND e1.edge_id = abs(r1.element_id) ''
+                               || ' AND e1.edge_id = abs(r1.element_id) '
 
                                -- E2 are face edges
-                               || '' AND ( e2.left_face = r2.element_id ''
-                               || ''   OR e2.right_face = r2.element_id ) ''
+                               || ' AND ( e2.left_face = r2.element_id '
+                               || '   OR e2.right_face = r2.element_id ) '
 
-                               || '' AND ( ''
+                               || ' AND ( '
 
                                -- Check if E1 have left-or-right face 
                                -- being part of R2.element_id
-                               || '' e1.left_face = r2.element_id ''
-                               || '' OR ''
-                               || '' e1.right_face = r2.element_id ''
+                               || ' e1.left_face = r2.element_id '
+                               || ' OR '
+                               || ' e1.right_face = r2.element_id '
 
                                -- Check if E1 share start-or-end node
                                -- with any E2.
-                               || '' OR ''
-                               || '' e1.start_node = e2.start_node ''
-                               || '' OR ''
-                               || '' e1.start_node = e2.end_node ''
-                               || '' OR ''
-                               || '' e1.end_node = e2.start_node ''
-                               || '' OR ''
-                               || '' e1.end_node = e2.end_node ''
-
-                               || '' ) ''
-
-                               || '' LIMIT 1'';
-                       --RAISE NOTICE ''%'', query;
+                               || ' OR '
+                               || ' e1.start_node = e2.start_node '
+                               || ' OR '
+                               || ' e1.start_node = e2.end_node '
+                               || ' OR '
+                               || ' e1.end_node = e2.start_node '
+                               || ' OR '
+                               || ' e1.end_node = e2.end_node '
+
+                               || ' ) '
+
+                               || ' LIMIT 1';
+                       --RAISE NOTICE '%', query;
                        FOR rec IN EXECUTE query
                        LOOP
                                RETURN TRUE; -- either common node
@@ -2240,10 +2244,10 @@ BEGIN
        ---------------------------------------------------------
 
                ELSIF tg2.type = 4 THEN -- line/collection
-                       RAISE EXCEPTION ''Intersection line/collection not implemented yet'', tg1.type, tg2.type;
+                       RAISE EXCEPTION 'Intersection line/collection not implemented yet', tg1.type, tg2.type;
 
                ELSE
-                       RAISE EXCEPTION ''Invalid TopoGeometry type'', tg2.type;
+                       RAISE EXCEPTION 'Invalid TopoGeometry type', tg2.type;
                END IF;
 
 
@@ -2265,57 +2269,57 @@ BEGIN
                        -- R1.element_id are poly1 FACE ids
                        -- R2.element_id are poly2 FACE ids
                        query =
-                               ''SELECT e1.edge_id''
-                               || '' FROM ''
+                               'SELECT e1.edge_id'
+                               || ' FROM '
                                || quote_ident(toponame) ||
-                               ''.relation r1, ''
+                               '.relation r1, '
                                || quote_ident(toponame) ||
-                               ''.relation r2, ''
+                               '.relation r2, '
                                || quote_ident(toponame) ||
-                               ''.edge_data e1, ''
+                               '.edge_data e1, '
                                || quote_ident(toponame) ||
-                               ''.edge_data e2 ''
-                               || ''WHERE r1.layer_id = '' || tg1.layer_id
-                               || '' AND r2.layer_id = '' || tg2.layer_id
-                               || '' AND r1.topogeo_id = '' || tg1.id
-                               || '' AND r2.topogeo_id = '' || tg2.id
+                               '.edge_data e2 '
+                               || 'WHERE r1.layer_id = ' || tg1.layer_id
+                               || ' AND r2.layer_id = ' || tg2.layer_id
+                               || ' AND r1.topogeo_id = ' || tg1.id
+                               || ' AND r2.topogeo_id = ' || tg2.id
 
                                -- E1 are poly1 edges
-                               || '' AND ( e1.left_face = r1.element_id ''
-                               || ''   OR e1.right_face = r1.element_id ) ''
+                               || ' AND ( e1.left_face = r1.element_id '
+                               || '   OR e1.right_face = r1.element_id ) '
 
                                -- E2 are poly2 edges
-                               || '' AND ( e2.left_face = r2.element_id ''
-                               || ''   OR e2.right_face = r2.element_id ) ''
+                               || ' AND ( e2.left_face = r2.element_id '
+                               || '   OR e2.right_face = r2.element_id ) '
 
-                               || '' AND ( ''
+                               || ' AND ( '
 
                                -- Check if any edge from a polygon face
                                -- has any of the other polygon face
                                -- on the left or right 
-                               || '' e1.left_face = r2.element_id ''
-                               || '' OR ''
-                               || '' e1.right_face = r2.element_id ''
-                               || '' OR ''
-                               || '' e2.left_face = r1.element_id ''
-                               || '' OR ''
-                               || '' e2.right_face = r1.element_id ''
+                               || ' e1.left_face = r2.element_id '
+                               || ' OR '
+                               || ' e1.right_face = r2.element_id '
+                               || ' OR '
+                               || ' e2.left_face = r1.element_id '
+                               || ' OR '
+                               || ' e2.right_face = r1.element_id '
 
                                -- Check if E1 share start-or-end node
                                -- with any E2.
-                               || '' OR ''
-                               || '' e1.start_node = e2.start_node ''
-                               || '' OR ''
-                               || '' e1.start_node = e2.end_node ''
-                               || '' OR ''
-                               || '' e1.end_node = e2.start_node ''
-                               || '' OR ''
-                               || '' e1.end_node = e2.end_node ''
-
-                               || '' ) ''
-
-                               || '' LIMIT 1'';
-                       --RAISE NOTICE ''%'', query;
+                               || ' OR '
+                               || ' e1.start_node = e2.start_node '
+                               || ' OR '
+                               || ' e1.start_node = e2.end_node '
+                               || ' OR '
+                               || ' e1.end_node = e2.start_node '
+                               || ' OR '
+                               || ' e1.end_node = e2.end_node '
+
+                               || ' ) '
+
+                               || ' LIMIT 1';
+                       --RAISE NOTICE '%', query;
                        FOR rec IN EXECUTE query
                        LOOP
                                RETURN TRUE; -- either common node
@@ -2327,24 +2331,24 @@ BEGIN
        ---------------------------------------------------------
 
                ELSIF tg2.type = 4 THEN -- polygon/collection
-                       RAISE EXCEPTION ''Intersection poly/collection not implemented yet'', tg1.type, tg2.type;
+                       RAISE EXCEPTION 'Intersection poly/collection not implemented yet', tg1.type, tg2.type;
 
                ELSE
-                       RAISE EXCEPTION ''Invalid TopoGeometry type'', tg2.type;
+                       RAISE EXCEPTION 'Invalid TopoGeometry type', tg2.type;
                END IF;
 
        ELSIF tg1.type = 4 THEN -- collection
                IF tg2.type = 4 THEN -- collection/collection
-                       RAISE EXCEPTION ''Intersection collection/collection not implemented yet'', tg1.type, tg2.type;
+                       RAISE EXCEPTION 'Intersection collection/collection not implemented yet', tg1.type, tg2.type;
                ELSE
-                       RAISE EXCEPTION ''Invalid TopoGeometry type'', tg2.type;
+                       RAISE EXCEPTION 'Invalid TopoGeometry type', tg2.type;
                END IF;
 
        ELSE
-               RAISE EXCEPTION ''Invalid TopoGeometry type %'', tg1.type;
+               RAISE EXCEPTION 'Invalid TopoGeometry type %', tg1.type;
        END IF;
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 --} intersects(TopoGeometry, TopoGeometry)
 
@@ -2354,7 +2358,7 @@ LANGUAGE 'plpgsql' VOLATILE STRICT;
 CREATE OR REPLACE FUNCTION topology.equals(topology.TopoGeometry, topology.TopoGeometry)
        RETURNS bool
 AS
-'
+$$
 DECLARE
        tg1 alias for $1;
        tg2 alias for $2;
@@ -2364,7 +2368,7 @@ DECLARE
 BEGIN
 
        IF tg1.topology_id != tg2.topology_id THEN
-               RAISE EXCEPTION ''Cannot compare TopoGeometries from different topologies'';
+               RAISE EXCEPTION 'Cannot compare TopoGeometries from different topologies';
        END IF;
 
        -- Not the same type, not equal
@@ -2374,7 +2378,7 @@ BEGIN
 
        -- Geometry collection are not currently supported
        IF tg2.type = 4 THEN
-               RAISE EXCEPTION ''GeometryCollection are not supported by equals()'';
+               RAISE EXCEPTION 'GeometryCollection are not supported by equals()';
        END IF;
 
         -- Get topology name
@@ -2383,32 +2387,32 @@ BEGIN
 
        -- Two geometries are equal if they are composed by 
        -- the same TopoElements
-       FOR rec IN EXECUTE ''SELECT * FROM ''
-               || '' topology.GetTopoGeomElements(''
-               || quote_literal(toponame) || '', ''
-               || tg1.layer_id || '','' || tg1.id || '') ''
-               || '' EXCEPT SELECT * FROM ''
-               || '' topology.GetTopogeomElements(''
-               || quote_literal(toponame) || '', ''
-               || tg2.layer_id || '','' || tg2.id || '');''
+       FOR rec IN EXECUTE 'SELECT * FROM '
+               || ' topology.GetTopoGeomElements('
+               || quote_literal(toponame) || ''
+               || tg1.layer_id || ',' || tg1.id || ') '
+               || ' EXCEPT SELECT * FROM '
+               || ' topology.GetTopogeomElements('
+               || quote_literal(toponame) || ''
+               || tg2.layer_id || ',' || tg2.id || ');'
        LOOP
                RETURN FALSE;
        END LOOP;
 
-       FOR rec IN EXECUTE ''SELECT * FROM ''
-               || '' topology.GetTopoGeomElements(''
-               || quote_literal(toponame) || '', ''
-               || tg2.layer_id || '','' || tg2.id || '')''
-               || '' EXCEPT SELECT * FROM ''
-               || '' topology.GetTopogeomElements(''
-               || quote_literal(toponame) || '', ''
-               || tg1.layer_id || '','' || tg1.id || ''); ''
+       FOR rec IN EXECUTE 'SELECT * FROM '
+               || ' topology.GetTopoGeomElements('
+               || quote_literal(toponame) || ''
+               || tg2.layer_id || ',' || tg2.id || ')'
+               || ' EXCEPT SELECT * FROM '
+               || ' topology.GetTopogeomElements('
+               || quote_literal(toponame) || ''
+               || tg1.layer_id || ',' || tg1.id || '); '
        LOOP
                RETURN FALSE;
        END LOOP;
        RETURN TRUE;
 END
-'
+$$
 LANGUAGE 'plpgsql' VOLATILE STRICT;
 --} equals(TopoGeometry, TopoGeometry)