File: layertrigger.sql

package info (click to toggle)
postgis 2.5.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 75,792 kB
  • sloc: ansic: 139,314; sql: 136,281; xml: 48,954; sh: 4,906; perl: 4,509; makefile: 2,897; python: 1,198; yacc: 441; cpp: 305; lex: 132
file content (56 lines) | stat: -rw-r--r-- 2,086 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
\set VERBOSITY terse
set client_min_messages to ERROR;

select 'seq_reset', setval('topology.topology_id_seq', 1, false);
select 't1', 'topology_id:' || topology.CreateTopology('t1');

--insert into t1.node(geom, containing_face) values ('POINT( 0 0)', 0);
--create table t1.l1 (id serial);
--select 't1.l1',topology.AddTopoGeometryColumn('t1', 't1', 'l1', 'g', 'POINT');
--insert INTO t1.l1(g) VALUES (topology.CreateTopoGeom('t1', 1, 1, '{{1,1}}'));
--select 't1.rel',* from t1.relation;

select 't2', 'topology_id:' || topology.CreateTopology('t2');

insert into t2.node(geom, containing_face) values ('POINT( 0 0)', 0);
insert into t2.node(geom, containing_face) values ('POINT( 1 1)', 0);

create table t2.l1 (id serial);

select 't2.l1', topology.AddTopoGeometryColumn('t2', 't2', 'l1', 'g', 'POINT');

insert into t2.l1(g) VALUES (topology.CreateTopoGeom('t2', 1, 1, '{{1,1}}'));
--insert into t2.l1(g) VALUES (topology.CreateTopoGeom('t2', 1, 1, '{{2,1}}'));

select 't2.rel',* from t2.relation;

--always the trigger must reject an update
update topology.layer set topology_id = 123;
select 'after update: topology.layer ',* from topology.layer;

-- the trigger must reject the delete because some referenced features still exists
BEGIN;
  delete from t1.relation;
  delete from t2.relation;
  select 't2.rel',* from t2.relation;
  delete from topology.layer;
  select 'after delete n.1: topology.layer count', count(*) from topology.layer;
ROLLBACK;

-- the trigger must reject because the t2.relation is not empty.
-- This test failed due to #950
-- (there's no row in t2.relation where topogeo_id matches the topology id)
BEGIN;
  delete from t2.l1;
  delete from topology.layer where topology_id=2;
  select 'after delete n.2: topology.layer count', count(*) from topology.layer;
ROLLBACK;

-- the trigger must accept the delete
delete from t2.l1;
delete from t2.relation;
delete from topology.layer where topology_id=2;
select 'after delete n.3: topology.layer count', count(*) from topology.layer;

select topology.DropTopology('t2');
select topology.DropTopology('t1');