]> granicus.if.org Git - postgis/commitdiff
Make ST_RemEdge* tests 30% faster by reducing service costs
authorSandro Santilli <strk@keybit.net>
Mon, 3 Dec 2012 10:09:54 +0000 (10:09 +0000)
committerSandro Santilli <strk@keybit.net>
Mon, 3 Dec 2012 10:09:54 +0000 (10:09 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@10781 b70326c6-7e19-0410-871a-916f4a2858ee

topology/test/regress/st_remedgemodface.sql
topology/test/regress/st_remedgenewface.sql

index d5e9a646cb287105018a21fbe1b2bc5e7000ee07..37b064d2122d6cc920c1c94e3e2ae9aaf34ff6b7 100644 (file)
@@ -9,17 +9,16 @@ INSERT INTO spatial_ref_sys ( auth_name, auth_srid, srid, proj4text ) VALUES ( '
 
 -- Utility functions for the test {
 
+CREATE TEMP TABLE orig_node_summary(node_id integer, containing_face integer);
 CREATE OR REPLACE FUNCTION save_nodes()
 RETURNS VOID
 AS $$
-BEGIN
-  DROP TABLE IF EXISTS city_data.orig_node_summary;
-  CREATE TABLE city_data.orig_node_summary
-  AS SELECT node_id,
+  TRUNCATE TABLE orig_node_summary;
+  INSERT INTO orig_node_summary
+  SELECT node_id,
     containing_face
     FROM city_data.node;
-END;
-$$ LANGUAGE 'plpgsql';
+$$ LANGUAGE 'sql';
 
 CREATE OR REPLACE FUNCTION check_nodes(lbl text)
 RETURNS TABLE (l text, o text, node_id int,
@@ -34,7 +33,7 @@ BEGIN
       containing_face 
                FROM city_data.node';
   sql2 := 'node_id, containing_face
-               FROM city_data.orig_node_summary';
+               FROM orig_node_summary';
 
   q := '(' ||
           'SELECT ' || quote_literal(lbl) || ',''+'' as op,' || sql1 ||
@@ -53,17 +52,16 @@ BEGIN
 END
 $$ LANGUAGE 'plpgsql';
 
+CREATE TEMP TABLE orig_edge_summary (edge_id integer, next_left_edge integer, next_right_edge integer, left_face integer, right_face integer);
 CREATE OR REPLACE FUNCTION save_edges()
 RETURNS VOID
 AS $$
-BEGIN
-  DROP TABLE IF EXISTS city_data.orig_edge_summary;
-  CREATE TABLE city_data.orig_edge_summary AS
+  TRUNCATE orig_edge_summary;
+  INSERT INTO orig_edge_summary 
   SELECT edge_id,
     next_left_edge, next_right_edge, left_face, right_face
     FROM city_data.edge_data;
-END;
-$$ LANGUAGE 'plpgsql';
+$$ LANGUAGE 'sql';
 
 CREATE OR REPLACE FUNCTION check_edges(lbl text)
 RETURNS TABLE (l text, o text, edge_id int,
@@ -81,7 +79,7 @@ BEGIN
                FROM city_data.edge_data';
   sql2 := 'edge_id,
                next_left_edge, next_right_edge, left_face, right_face
-               FROM city_data.orig_edge_summary';
+               FROM orig_edge_summary';
 
   q := '(' ||
           'SELECT ' || quote_literal(lbl) || ',''+'' as op,' || sql1 ||
@@ -100,16 +98,15 @@ BEGIN
 END
 $$ LANGUAGE 'plpgsql';
 
+CREATE TEMP TABLE orig_face_summary(face_id integer, mbr geometry);
 CREATE OR REPLACE FUNCTION save_faces()
 RETURNS VOID
 AS $$
-BEGIN
-  DROP TABLE IF EXISTS city_data.orig_face_summary;
-  CREATE TABLE city_data.orig_face_summary AS
+  TRUNCATE orig_face_summary;
+  INSERT INTO orig_face_summary 
   SELECT face_id, mbr
     FROM city_data.face;
-END;
-$$ LANGUAGE 'plpgsql';
+$$ LANGUAGE 'sql';
 
 CREATE OR REPLACE FUNCTION check_faces(lbl text)
 RETURNS TABLE (l text, o text, face_id int, mbr text)
@@ -120,7 +117,7 @@ DECLARE
   q text;
 BEGIN
   sql1 := 'face_id, ST_AsEWKT(mbr) FROM city_data.face';
-  sql2 := 'face_id, ST_AsEWKT(mbr) FROM city_data.orig_face_summary';
+  sql2 := 'face_id, ST_AsEWKT(mbr) FROM orig_face_summary';
 
   q := '(' ||
           'SELECT ' || quote_literal(lbl) || ',''+'' as op,' || sql1 ||
index 10e8ca044ee608af65c6fc32f9769dd356e84ce5..a55c90557d76791cec637ab74fa8100c34e44d58 100644 (file)
@@ -9,17 +9,17 @@ INSERT INTO spatial_ref_sys ( auth_name, auth_srid, srid, proj4text ) VALUES ( '
 
 -- Utility functions for the test {
 
+CREATE TEMP TABLE orig_node_summary(node_id integer, containing_face integer);
 CREATE OR REPLACE FUNCTION save_nodes()
 RETURNS VOID
 AS $$
-BEGIN
-  DROP TABLE IF EXISTS city_data.orig_node_summary;
-  CREATE TABLE city_data.orig_node_summary
-  AS SELECT node_id,
+  TRUNCATE TABLE orig_node_summary;
+  INSERT INTO orig_node_summary
+  SELECT node_id,
     containing_face
     FROM city_data.node;
-END;
-$$ LANGUAGE 'plpgsql';
+$$ LANGUAGE 'sql';
+
 
 CREATE OR REPLACE FUNCTION check_nodes(lbl text)
 RETURNS TABLE (l text, o text, node_id int,
@@ -34,7 +34,7 @@ BEGIN
       containing_face 
                FROM city_data.node';
   sql2 := 'node_id, containing_face
-               FROM city_data.orig_node_summary';
+               FROM orig_node_summary';
 
   q := '(' ||
           'SELECT ' || quote_literal(lbl) || ',''+'' as op,' || sql1 ||
@@ -53,17 +53,16 @@ BEGIN
 END
 $$ LANGUAGE 'plpgsql';
 
+CREATE TEMP TABLE orig_edge_summary (edge_id integer, next_left_edge integer, next_right_edge integer, left_face integer, right_face integer);
 CREATE OR REPLACE FUNCTION save_edges()
 RETURNS VOID
 AS $$
-BEGIN
-  DROP TABLE IF EXISTS city_data.orig_edge_summary;
-  CREATE TABLE city_data.orig_edge_summary AS
+  TRUNCATE orig_edge_summary;
+  INSERT INTO orig_edge_summary 
   SELECT edge_id,
     next_left_edge, next_right_edge, left_face, right_face
     FROM city_data.edge_data;
-END;
-$$ LANGUAGE 'plpgsql';
+$$ LANGUAGE 'sql';
 
 CREATE OR REPLACE FUNCTION check_edges(lbl text)
 RETURNS TABLE (l text, o text, edge_id int,
@@ -81,7 +80,7 @@ BEGIN
                FROM city_data.edge_data';
   sql2 := 'edge_id,
                next_left_edge, next_right_edge, left_face, right_face
-               FROM city_data.orig_edge_summary';
+               FROM orig_edge_summary';
 
   q := '(' ||
           'SELECT ' || quote_literal(lbl) || ',''+'' as op,' || sql1 ||
@@ -100,16 +99,15 @@ BEGIN
 END
 $$ LANGUAGE 'plpgsql';
 
+CREATE TEMP TABLE orig_face_summary(face_id integer, mbr geometry);
 CREATE OR REPLACE FUNCTION save_faces()
 RETURNS VOID
 AS $$
-BEGIN
-  DROP TABLE IF EXISTS city_data.orig_face_summary;
-  CREATE TABLE city_data.orig_face_summary AS
+  TRUNCATE orig_face_summary;
+  INSERT INTO orig_face_summary 
   SELECT face_id, mbr
     FROM city_data.face;
-END;
-$$ LANGUAGE 'plpgsql';
+$$ LANGUAGE 'sql';
 
 CREATE OR REPLACE FUNCTION check_faces(lbl text)
 RETURNS TABLE (l text, o text, face_id int, mbr text)
@@ -120,7 +118,7 @@ DECLARE
   q text;
 BEGIN
   sql1 := 'face_id, ST_AsEWKT(mbr) FROM city_data.face';
-  sql2 := 'face_id, ST_AsEWKT(mbr) FROM city_data.orig_face_summary';
+  sql2 := 'face_id, ST_AsEWKT(mbr) FROM orig_face_summary';
 
   q := '(' ||
           'SELECT ' || quote_literal(lbl) || ',''+'' as op,' || sql1 ||