|| ', next_left_edge = ' || e2sign*newedgeid
|| '*(next_left_edge/'
|| e2id || ') WHERE abs_next_left_edge = ' || e2id;
+ IF e2rec.start_node = commonnode THEN
+ sql := sql || ' AND end_node = ' || e2rec.end_node;
+ ELSE
+ sql := sql || ' AND end_node = ' || e2rec.start_node;
+ END IF;
--RAISE DEBUG 'SQL: %', sql;
EXECUTE sql;
sql := 'UPDATE ' || quote_ident(toponame)
|| ', next_right_edge = ' || e2sign*newedgeid
|| '*(next_right_edge/'
|| e2id || ') WHERE abs_next_right_edge = ' || e2id;
+ IF e2rec.start_node = commonnode THEN
+ sql := sql || ' AND start_node = ' || e2rec.end_node;
+ ELSE
+ sql := sql || ' AND start_node = ' || e2rec.start_node;
+ END IF;
--RAISE DEBUG 'SQL: %', sql;
EXECUTE sql;
|| ', next_left_edge = ' || newedgeid
|| '*(next_left_edge/'
|| e1id || ') WHERE abs_next_left_edge = ' || e1id;
+ IF e1rec.start_node = commonnode THEN
+ sql := sql || ' AND end_node = ' || e1rec.end_node;
+ ELSE
+ sql := sql || ' AND end_node = ' || e1rec.start_node;
+ END IF;
--RAISE DEBUG 'SQL: %', sql;
EXECUTE sql;
sql := 'UPDATE ' || quote_ident(toponame)
|| ', next_right_edge = ' || newedgeid
|| '*(next_right_edge/'
|| e1id || ') WHERE abs_next_right_edge = ' || e1id;
+ IF e1rec.start_node = commonnode THEN
+ sql := sql || ' AND start_node = ' || e1rec.end_node;
+ ELSE
+ sql := sql || ' AND start_node = ' || e1rec.start_node;
+ END IF;
--RAISE DEBUG 'SQL: %', sql;
EXECUTE sql;
|| ', next_left_edge = ' || e2sign*e1id
|| '*(next_left_edge/'
|| e2id || ') WHERE abs_next_left_edge = ' || e2id;
+ IF e2rec.start_node = commonnode THEN
+ sql := sql || ' AND end_node = ' || e2rec.end_node;
+ ELSE
+ sql := sql || ' AND end_node = ' || e2rec.start_node;
+ END IF;
--RAISE DEBUG 'SQL: %', sql;
EXECUTE sql;
sql := 'UPDATE ' || quote_ident(toponame)
|| ', next_right_edge = ' || e2sign*e1id
|| '*(next_right_edge/'
|| e2id || ') WHERE abs_next_right_edge = ' || e2id;
+ IF e2rec.start_node = commonnode THEN
+ sql := sql || ' AND start_node = ' || e2rec.end_node;
+ ELSE
+ sql := sql || ' AND start_node = ' || e2rec.start_node;
+ END IF;
--RAISE DEBUG 'SQL: %', sql;
EXECUTE sql;
|| ','
|| ' abs_next_right_edge = ' || edgeid2
|| ' WHERE next_right_edge = ' || anedge
+ || ' AND start_node = ' || oldedge.start_node
|| ' AND edge_id NOT IN (' || edgeid1 || ',' || edgeid2 || ')'
;
EXECUTE 'UPDATE ' || quote_ident(atopology)
|| ','
|| ' abs_next_right_edge = ' || edgeid1
|| ' WHERE next_right_edge = ' || -anedge
+ || ' AND start_node = ' || oldedge.end_node
|| ' AND edge_id NOT IN (' || edgeid1 || ',' || edgeid2 || ')'
;
|| ','
|| ' abs_next_left_edge = ' || edgeid1
|| ' WHERE next_left_edge = ' || anedge
+ || ' AND end_node = ' || oldedge.start_node
|| ' AND edge_id NOT IN (' || edgeid1 || ',' || edgeid2 || ')'
;
EXECUTE 'UPDATE ' || quote_ident(atopology)
|| ','
|| ' abs_next_left_edge = ' || edgeid2
|| ' WHERE next_left_edge = ' || -anedge
+ || ' AND end_node = ' || oldedge.end_node
|| ' AND edge_id NOT IN (' || edgeid1 || ',' || edgeid2 || ')'
;
|| ','
|| ' abs_next_right_edge = ' || newedgeid
|| ' WHERE edge_id != ' || newedgeid
- || ' AND next_right_edge = ' || -anedge;
+ || ' AND next_right_edge = ' || -anedge
+ || ' AND start_node = ' || oldedge.end_node;
EXECUTE 'UPDATE ' || quote_ident(atopology)
|| '.edge_data SET '
|| ','
|| ' abs_next_left_edge = ' || newedgeid
|| ' WHERE edge_id != ' || newedgeid
- || ' AND next_left_edge = ' || -anedge;
+ || ' AND next_left_edge = ' || -anedge
+ || ' AND end_node = ' || oldedge.end_node;
--
-- Update references in the Relation table.