]> granicus.if.org Git - postgis/commitdiff
Make AddTopoGeometryColumn less sequence-number-eager, regress-test
authorSandro Santilli <strk@keybit.net>
Sun, 15 Jan 2012 17:50:46 +0000 (17:50 +0000)
committerSandro Santilli <strk@keybit.net>
Sun, 15 Jan 2012 17:50:46 +0000 (17:50 +0000)
git-svn-id: http://svn.osgeo.org/postgis/trunk@8821 b70326c6-7e19-0410-871a-916f4a2858ee

topology/test/Makefile
topology/test/regress/addtopogeometrycolumn.sql [new file with mode: 0644]
topology/test/regress/addtopogeometrycolumn_expected [new file with mode: 0644]
topology/topology.sql.in.c

index fc2867eefd73b9e5a1ded8a389000956d4c29cb6..3dc48fb61f9c67981b60f900f2ec4fd280f93d3c 100644 (file)
@@ -27,6 +27,7 @@ TESTS = regress/legacy_validate.sql regress/legacy_predicate.sql \
        regress/legacy_query.sql regress/addnode.sql \
        regress/addedge.sql regress/addface.sql \
        regress/addface2.5d.sql \
+       regress/addtopogeometrycolumn.sql \
        regress/polygonize.sql \
        regress/st_addisoedge.sql \
        regress/st_addisonode.sql \
diff --git a/topology/test/regress/addtopogeometrycolumn.sql b/topology/test/regress/addtopogeometrycolumn.sql
new file mode 100644 (file)
index 0000000..c1606ac
--- /dev/null
@@ -0,0 +1,19 @@
+set client_min_messages to WARNING;
+\set VERBOSITY terse
+
+select createtopology('tt') > 0;
+select addtopogeometrycolumn('tt','public','feature','tg','POINT'); -- fail
+create table feature(id integer);
+select addtopogeometrycolumn('tt','public','feature','tg','BOGUS'); -- fail
+
+-- Expect first good call returning 1
+select 'good', addtopogeometrycolumn('tt','public','feature','tg','POINT');
+
+select l.layer_id, l.schema_name, l.table_name, l.feature_column,
+ l.feature_type, l.level, l.child_id 
+from topology.layer l, topology.topology t
+where l.topology_id = t.id and t.name = 'tt'
+order by l.layer_id;
+
+drop table feature;
+select droptopology('tt');
diff --git a/topology/test/regress/addtopogeometrycolumn_expected b/topology/test/regress/addtopogeometrycolumn_expected
new file mode 100644 (file)
index 0000000..9f67abe
--- /dev/null
@@ -0,0 +1,6 @@
+t
+ERROR:  relation "public.feature" does not exist
+ERROR:  Layer type must be one of POINT,LINE,POLYGON,COLLECTION
+good|1
+1|public|feature|tg|1|0|
+Topology 'tt' dropped
index a44b6462051857cfe9070875d58256ba67188f00..2fd81aef7a5018ed0a8dfa85ce29646db873f3a4 100644 (file)
@@ -560,17 +560,6 @@ BEGIN
                RAISE EXCEPTION 'Topology % does not exist', toponame;
        END IF;
 
-       --
-       -- Get new layer id from sequence
-       --
-       FOR rec IN EXECUTE 'SELECT nextval(' ||
-               quote_literal(
-                       quote_ident(toponame) || '.layer_id_seq'
-               ) || ')'
-       LOOP
-               layer_id = rec.nextval;
-       END LOOP;
-
        IF ltype = 'POINT' THEN
                intltype = 1;
        ELSIF ltype = 'LINE' THEN
@@ -583,6 +572,23 @@ BEGIN
                RAISE EXCEPTION 'Layer type must be one of POINT,LINE,POLYGON,COLLECTION';
        END IF;
 
+       --
+       -- Add new TopoGeometry column in schema.table
+       --
+       EXECUTE 'ALTER TABLE ' || quote_ident(schema)
+               || '.' || quote_ident(tbl) 
+               || ' ADD COLUMN ' || quote_ident(col)
+               || ' topology.TopoGeometry;';
+
+
+       --
+       -- Get new layer id from sequence
+       --
+       EXECUTE 'SELECT nextval(' ||
+               quote_literal(
+                       quote_ident(toponame) || '.layer_id_seq'
+               ) || ')' INTO STRICT layer_id;
+
        --
        -- See if child id exists and extract its level
        --
@@ -626,14 +632,6 @@ BEGIN
        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;';
-
        --
        -- Add constraints on TopoGeom column
        --