Skip to content

Commit 0fbbd1e

Browse files
committed
(src,sql,pgtap,docqueries) pgr_turnRestrictedPath: Standardizing output
1 parent ee7ff37 commit 0fbbd1e

12 files changed

Lines changed: 350 additions & 256 deletions

docqueries/ksp/turnRestrictedPath.result

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ SELECT * FROM pgr_turnRestrictedPath(
77
$$SELECT id, source, target, cost, reverse_cost FROM edges$$,
88
$$SELECT path, cost FROM restrictions$$,
99
3, 8, 3);
10-
seq | path_id | path_seq | node | edge | cost | agg_cost
11-
-----+---------+----------+------+------+------+----------
12-
1 | 1 | 1 | 3 | 7 | 1 | Infinity
13-
2 | 1 | 2 | 7 | 10 | 1 | 1
14-
3 | 1 | 3 | 8 | -1 | 0 | 2
10+
seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
11+
-----+---------+----------+-----------+---------+------+------+------+----------
12+
1 | 1 | 1 | 0 | 8 | 3 | 7 | 1 | Infinity
13+
2 | 1 | 2 | 0 | 8 | 7 | 10 | 1 | 1
14+
3 | 1 | 3 | 0 | 8 | 8 | -1 | 0 | 2
1515
(3 rows)
1616

1717
/* -- q2 */
@@ -20,8 +20,8 @@ SELECT * FROM pgr_turnRestrictedPath(
2020
$$SELECT path, cost FROM restrictions$$,
2121
3, 8, 3,
2222
strict => true);
23-
seq | path_id | path_seq | node | edge | cost | agg_cost
24-
-----+---------+----------+------+------+------+----------
23+
seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
24+
-----+---------+----------+-----------+---------+------+------+------+----------
2525
(0 rows)
2626

2727
/* -- q3 */
@@ -30,15 +30,15 @@ SELECT * FROM pgr_turnRestrictedPath(
3030
$$SELECT path, cost FROM restrictions$$,
3131
3, 8, 3,
3232
directed => false);
33-
seq | path_id | path_seq | node | edge | cost | agg_cost
34-
-----+---------+----------+------+------+------+----------
35-
1 | 1 | 1 | 3 | 7 | 1 | 0
36-
2 | 1 | 2 | 7 | 4 | 1 | 1
37-
3 | 1 | 3 | 6 | 2 | 1 | 2
38-
4 | 1 | 4 | 10 | 5 | 1 | 3
39-
5 | 1 | 5 | 11 | 11 | 1 | 4
40-
6 | 1 | 6 | 12 | 12 | 1 | 5
41-
7 | 1 | 7 | 8 | -1 | 0 | 6
33+
seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
34+
-----+---------+----------+-----------+---------+------+------+------+----------
35+
1 | 1 | 1 | 0 | 8 | 3 | 7 | 1 | 0
36+
2 | 1 | 2 | 0 | 8 | 7 | 4 | 1 | 1
37+
3 | 1 | 3 | 0 | 8 | 6 | 2 | 1 | 2
38+
4 | 1 | 4 | 0 | 8 | 10 | 5 | 1 | 3
39+
5 | 1 | 5 | 0 | 8 | 11 | 11 | 1 | 4
40+
6 | 1 | 6 | 0 | 8 | 12 | 12 | 1 | 5
41+
7 | 1 | 7 | 0 | 8 | 8 | -1 | 0 | 6
4242
(7 rows)
4343

4444
/* -- q4 */
@@ -49,22 +49,22 @@ SELECT * FROM pgr_turnRestrictedPath(
4949
directed => false,
5050
heap_paths => true,
5151
stop_on_first => false);
52-
seq | path_id | path_seq | node | edge | cost | agg_cost
53-
-----+---------+----------+------+------+------+----------
54-
1 | 1 | 1 | 3 | 7 | 1 | 0
55-
2 | 1 | 2 | 7 | 4 | 1 | 1
56-
3 | 1 | 3 | 6 | 2 | 1 | 2
57-
4 | 1 | 4 | 10 | 5 | 1 | 3
58-
5 | 1 | 5 | 11 | 11 | 1 | 4
59-
6 | 1 | 6 | 12 | 12 | 1 | 5
60-
7 | 1 | 7 | 8 | -1 | 0 | 6
61-
8 | 2 | 1 | 3 | 7 | 1 | 0
62-
9 | 2 | 2 | 7 | 8 | 1 | 1
63-
10 | 2 | 3 | 11 | 9 | 1 | 2
64-
11 | 2 | 4 | 16 | 15 | 1 | 3
65-
12 | 2 | 5 | 17 | 13 | 1 | 4
66-
13 | 2 | 6 | 12 | 12 | 1 | 5
67-
14 | 2 | 7 | 8 | -1 | 0 | 6
52+
seq | path_id | path_seq | start_vid | end_vid | node | edge | cost | agg_cost
53+
-----+---------+----------+-----------+---------+------+------+------+----------
54+
1 | 1 | 1 | 0 | 8 | 3 | 7 | 1 | 0
55+
2 | 1 | 2 | 0 | 8 | 7 | 4 | 1 | 1
56+
3 | 1 | 3 | 0 | 8 | 6 | 2 | 1 | 2
57+
4 | 1 | 4 | 0 | 8 | 10 | 5 | 1 | 3
58+
5 | 1 | 5 | 0 | 8 | 11 | 11 | 1 | 4
59+
6 | 1 | 6 | 0 | 8 | 12 | 12 | 1 | 5
60+
7 | 1 | 7 | 0 | 8 | 8 | -1 | 0 | 6
61+
8 | 2 | 1 | 1 | 8 | 3 | 7 | 1 | 0
62+
9 | 2 | 2 | 1 | 8 | 7 | 8 | 1 | 1
63+
10 | 2 | 3 | 1 | 8 | 11 | 9 | 1 | 2
64+
11 | 2 | 4 | 1 | 8 | 16 | 15 | 1 | 3
65+
12 | 2 | 5 | 1 | 8 | 17 | 13 | 1 | 4
66+
13 | 2 | 6 | 1 | 8 | 12 | 12 | 1 | 5
67+
14 | 2 | 7 | 1 | 8 | 8 | -1 | 0 | 6
6868
(14 rows)
6969

7070
/* -- q5 */

include/drivers/yen/turnRestrictedPath_driver.h

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
/*PGR-GNU*****************************************************************
2-
File: dijkstraTR_driver.h
2+
File: turnRestrictedPath_driver.h
33
44
Generated with Template by:
55
Copyright (c) 2015 pgRouting developers
66
Mail: project@pgrouting.org
77
88
Function's developer:
9-
Copyright (c) 2017 Vidhan Jain
10-
Mail: vidhanj1307@gmail.com
9+
Copyright (c) 2015 Celia Virginia Vergara Castillo
10+
Mail: vicky at erosion.dev
1111
1212
------
1313
@@ -31,7 +31,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
3131
#define INCLUDE_DRIVERS_YEN_TURNRESTRICTEDPATH_DRIVER_H_
3232
#pragma once
3333

34-
/* for size_t and int64_t */
34+
#ifdef __cplusplus
35+
extern "C" {
36+
#endif
37+
38+
#include <postgres.h>
39+
#include <utils/array.h>
40+
41+
#ifdef __cplusplus
42+
}
43+
#endif
44+
45+
#include "cpp_common/undefPostgresDefine.hpp"
46+
3547
#ifdef __cplusplus
3648
# include <cstdint>
3749
# include <cstddef>
@@ -43,28 +55,25 @@ using Path_rt = struct Path_rt;
4355
typedef struct Path_rt Path_rt;
4456
#endif
4557

46-
4758
#ifdef __cplusplus
4859
extern "C" {
4960
#endif
5061

5162
void pgr_do_turnRestrictedPath(
5263
const char*,
5364
const char*,
54-
55-
int64_t,
56-
int64_t,
65+
const char*,
66+
ArrayType*, ArrayType*,
5767

5868
size_t,
5969
bool,
6070
bool,
6171
bool,
6272
bool,
6373

64-
Path_rt **, size_t *,
74+
Path_rt**, size_t*,
6575
char**, char**, char**);
6676

67-
6877
#ifdef __cplusplus
6978
}
7079
#endif

pgtap/ksp/turnRestrictedPath/compare_dijkstra.pg

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,25 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1919
********************************************************************PGR-GNU*/
2020
BEGIN;
2121

22-
SELECT plan(1156);
22+
SELECT CASE WHEN min_version('4.0.0') THEN plan(1156) ELSE plan(1) END;
2323

24-
UPDATE edges SET cost = sign(cost) + 0.001 * id * id, reverse_cost = sign(reverse_cost) + 0.001 * id * id;
25-
26-
CREATE or REPLACE FUNCTION turnrestricted_compare_dijkstra()
24+
CREATE or REPLACE FUNCTION compare_dijkstra()
2725
RETURNS SETOF TEXT AS
2826
$BODY$
2927
BEGIN
28+
29+
IF NOT min_version('4.0.0') THEN
30+
RETURN QUERY SELECT skip(1, 'pgr_turnrestrictedpath: testing only signatures standardaized in v4.0.0.');
31+
RETURN;
32+
END IF;
33+
3034
RETURN QUERY SELECT compare_dijkstra_one_one('pgr_turnrestrictedpath', true, 'seq, path_seq, node, edge, cost, agg_cost', restricted => true);
3135
RETURN QUERY SELECT compare_dijkstra_one_one('pgr_turnrestrictedpath', false, 'seq, path_seq, node, edge, cost, agg_cost', restricted => true);
36+
3237
END;
3338
$BODY$
3439
language plpgsql;
3540

36-
37-
SELECT * from turnrestricted_compare_dijkstra();
38-
39-
SELECT * FROM finish();
41+
SELECT compare_dijkstra();
42+
SELECT finish();
4043
ROLLBACK;

pgtap/ksp/turnRestrictedPath/edge_cases/custom.pg

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2020
BEGIN;
2121

2222
UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost);
23-
SELECT plan(9);
23+
SELECT CASE WHEN min_version('4.0.0') THEN plan(9) ELSE plan(1) END;
2424

25-
SET client_min_messages TO WARNING;
2625

26+
CREATE or REPLACE FUNCTION custom_tap()
27+
RETURNS SETOF TEXT AS
28+
$BODY$
29+
BEGIN
30+
31+
IF NOT min_version('4.0.0') THEN
32+
RETURN QUERY
33+
SELECT skip(1, 'pgr_turnrestrictedpath: testing only signatures standardaized in v4.0.0.');
34+
RETURN;
35+
END IF;
2736

2837
-------------------------------------------------------------
2938
-- queries that return r1
@@ -57,8 +66,8 @@ FROM pgr_turnRestrictedPath(
5766
stop_on_first:=false
5867
);
5968

60-
SELECT set_eq('q1', 'r1', 'Should return r1 result (one cycle)');
61-
SELECT set_eq('q2', 'r1', 'Should return r1 result (one cycle, Dont stop_on_first)');
69+
RETURN QUERY SELECT set_eq('q1', 'r1', 'Should return r1 result (one cycle)');
70+
RETURN QUERY SELECT set_eq('q2', 'r1', 'Should return r1 result (one cycle, Dont stop_on_first)');
6271

6372
-------------------------------------------------------------
6473
-- queries that return r2
@@ -87,7 +96,7 @@ FROM pgr_turnRestrictedPath(
8796
stop_on_first:=false
8897
);
8998

90-
SELECT set_eq('q3', 'r2', 'Should return r2 result (3 cycle, Dont stop_on_first)');
99+
RETURN QUERY SELECT set_eq('q3', 'r2', 'Should return r2 result (3 cycle, Dont stop_on_first)');
91100

92101
-------------------------------------------------------------
93102
-- queries that return r3
@@ -117,8 +126,8 @@ FROM pgr_turnRestrictedPath(
117126
heap_paths:=true
118127
) WHERE agg_cost = FLOAT8 '+infinity';
119128

120-
SELECT set_eq('q4', 'r3', 'Should return r3 result (1 cycle)');
121-
SELECT set_eq('q7', 'r3', 'Should return r3 result (1 cycle, Heap paths)');
129+
RETURN QUERY SELECT set_eq('q4', 'r3', 'Should return r3 result (1 cycle)');
130+
RETURN QUERY SELECT set_eq('q7', 'r3', 'Should return r3 result (1 cycle, Heap paths)');
122131

123132
-------------------------------------------------------------
124133
-- queries that return r4
@@ -150,8 +159,8 @@ FROM pgr_turnRestrictedPath(
150159
stop_on_first:=false
151160
) WHERE agg_cost = FLOAT8 '+infinity';
152161

153-
SELECT set_eq('q5', 'r4', 'q5 Should return r4 result (2 cycle, Dont stop_on_first)');
154-
SELECT set_eq('q6', 'r4', 'q6 Should return r4 result (2 cycle, Dont stop_on_first)');
162+
RETURN QUERY SELECT set_eq('q5', 'r4', 'q5 Should return r4 result (2 cycle, Dont stop_on_first)');
163+
RETURN QUERY SELECT set_eq('q6', 'r4', 'q6 Should return r4 result (2 cycle, Dont stop_on_first)');
155164

156165

157166
----------------------------------------
@@ -184,9 +193,14 @@ FROM pgr_turnRestrictedPath(
184193
stop_on_first:=false
185194
) WHERE agg_cost = FLOAT8 '+infinity';
186195

187-
SELECT set_eq('q8', 'r5', 'Should return r5 result (2 cycle, Dont stop_on_first, heap paths)');
188-
SELECT set_eq('q9', 'r5', 'Should return r5 result (3 cycle, Dont stop_on_first, heap paths)');
196+
RETURN QUERY SELECT set_eq('q8', 'r5', 'Should return r5 result (2 cycle, Dont stop_on_first, heap paths)');
197+
RETURN QUERY SELECT set_eq('q9', 'r5', 'Should return r5 result (3 cycle, Dont stop_on_first, heap paths)');
198+
199+
END;
200+
$BODY$
201+
language plpgsql;
189202

190203

204+
SELECT custom_tap();
191205
SELECT finish();
192206
ROLLBACK;

pgtap/ksp/turnRestrictedPath/edge_cases/empty_set_default_strict.pg

Lines changed: 37 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
2020
BEGIN;
2121

2222
UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost);
23-
SELECT plan(20);
23+
SELECT CASE WHEN min_version('4.0.0') THEN plan(20) ELSE plan(1) END;
2424

2525
----------------------------------------------------------------------------------------------------------------
2626
-- testing from an existing starting vertex to a non-existing destination
2727
----------------------------------------------------------------------------------------------------------------
2828

29+
CREATE or REPLACE FUNCTION custom_tap()
30+
RETURNS SETOF TEXT AS
31+
$BODY$
32+
BEGIN
33+
34+
IF NOT min_version('4.0.0') THEN
35+
RETURN QUERY SELECT skip(1, 'pgr_turnrestrictedpath: testing only signatures standardaized in v4.0.0.');
36+
RETURN;
37+
END IF;
38+
2939
-- in directed graph
3040
-- with restrictions
3141
PREPARE q1 AS
@@ -68,10 +78,10 @@ SELECT * FROM pgr_turnRestrictedPath(
6878
FALSE
6979
);
7080

71-
SELECT is_empty('q1');
72-
SELECT is_empty('q2');
73-
SELECT is_empty('q3');
74-
SELECT is_empty('q4');
81+
RETURN QUERY SELECT is_empty('q1');
82+
RETURN QUERY SELECT is_empty('q2');
83+
RETURN QUERY SELECT is_empty('q3');
84+
RETURN QUERY SELECT is_empty('q4');
7585
----------------------------------------------------------------------------------------------------------------
7686
-- testing from an non-existing starting vertex to an existing destination
7787
----------------------------------------------------------------------------------------------------------------
@@ -118,10 +128,10 @@ SELECT * FROM pgr_turnRestrictedPath(
118128
FALSE
119129
);
120130

121-
SELECT is_empty('q5');
122-
SELECT is_empty('q6');
123-
SELECT is_empty('q7');
124-
SELECT is_empty('q8');
131+
RETURN QUERY SELECT is_empty('q5');
132+
RETURN QUERY SELECT is_empty('q6');
133+
RETURN QUERY SELECT is_empty('q7');
134+
RETURN QUERY SELECT is_empty('q8');
125135
----------------------------------------------------------------------------------------------------------------
126136
-- testing from a non-existing starting vertex to a non-existing destination
127137
----------------------------------------------------------------------------------------------------------------
@@ -168,10 +178,10 @@ SELECT * FROM pgr_turnRestrictedPath(
168178
FALSE
169179
);
170180

171-
SELECT is_empty('q9');
172-
SELECT is_empty('q10');
173-
SELECT is_empty('q11');
174-
SELECT is_empty('q12');
181+
RETURN QUERY SELECT is_empty('q9');
182+
RETURN QUERY SELECT is_empty('q10');
183+
RETURN QUERY SELECT is_empty('q11');
184+
RETURN QUERY SELECT is_empty('q12');
175185
----------------------------------------------------------------------------------------------------------------
176186
-- testing from an existing starting vertex to the same destination
177187
----------------------------------------------------------------------------------------------------------------
@@ -218,10 +228,10 @@ SELECT * FROM pgr_turnRestrictedPath(
218228
FALSE
219229
);
220230

221-
SELECT is_empty('q13');
222-
SELECT is_empty('q14');
223-
SELECT is_empty('q15');
224-
SELECT is_empty('q16');
231+
RETURN QUERY SELECT is_empty('q13');
232+
RETURN QUERY SELECT is_empty('q14');
233+
RETURN QUERY SELECT is_empty('q15');
234+
RETURN QUERY SELECT is_empty('q16');
225235
----------------------------------------------------------------------------------------------------------------
226236
-- testing from an existing starting vertex in one component to an existing destination in another component
227237
----------------------------------------------------------------------------------------------------------------
@@ -267,11 +277,15 @@ SELECT * FROM pgr_turnRestrictedPath(
267277
FALSE
268278
);
269279

270-
SELECT is_empty('q17');
271-
SELECT is_empty('q18');
272-
SELECT is_empty('q19');
273-
SELECT is_empty('q20');
274-
----------------------------------------------------------------------------------------------------------------
280+
RETURN QUERY SELECT is_empty('q17');
281+
RETURN QUERY SELECT is_empty('q18');
282+
RETURN QUERY SELECT is_empty('q19');
283+
RETURN QUERY SELECT is_empty('q20');
284+
285+
END;
286+
$BODY$
287+
language plpgsql;
275288

276-
SELECT * FROM finish();
289+
SELECT custom_tap();
290+
SELECT finish();
277291
ROLLBACK;

0 commit comments

Comments
 (0)