File: layertrigger.sql

package info (click to toggle)
postgis 3.3.2%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 87,748 kB
  • sloc: ansic: 158,671; sql: 91,546; xml: 54,004; cpp: 12,339; sh: 5,187; perl: 5,100; makefile: 3,085; python: 1,205; yacc: 447; lex: 151; javascript: 6
file content (56 lines) | stat: -rw-r--r-- 2,086 bytes parent folder | download | duplicates (9)
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');