1
2\i setup.sql
3
4SELECT PLAN(13);
5
6PREPARE q1 AS
7SELECT  path_seq, node, agg_cost FROM pgr_withPoints(
8    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
9    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
10    ARRAY[-1], ARRAY[-5],
11    driving_side := 'r',
12    directed := true,
13    details := true);
14
15PREPARE q11 AS
16SELECT  path_seq, node, agg_cost FROM pgr_withPoints(
17    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
18    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
19    ARRAY[-1], ARRAY[-3],
20    driving_side := 'r',
21    directed := true,
22    details := true);
23
24PREPARE q2 AS
25SELECT path_seq, node, agg_cost FROM pgr_withPoints(
26    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
27    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
28    -1, -5,
29    driving_side := 'r',
30    directed := true,
31    details := true);
32
33PREPARE q21 AS
34SELECT path_seq, node, agg_cost FROM pgr_withPoints(
35    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
36    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
37    -1, -3,
38    driving_side := 'r',
39    directed := true,
40    details := true);
41
42SELECT set_eq('q1', 'q2', '1: Right: from point ARRAY[-1] to -5 same as one to one');
43SELECT set_eq('q11', 'q21', '2: Right: from point ARRAY[-1] to -3 same as one to one');
44
45PREPARE q3 AS
46SELECT path_seq, node, agg_cost FROM pgr_withPoints(
47    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
48    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
49    ARRAY[-4], ARRAY[-5],
50    driving_side := 'r',
51    directed := true,
52    details := true);
53
54PREPARE q31 AS
55SELECT path_seq, node, agg_cost FROM pgr_withPoints(
56    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
57    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
58    ARRAY[-4], ARRAY[-3],
59    driving_side := 'r',
60    directed := true,
61    details := true);
62
63PREPARE q4 AS
64SELECT path_seq, node, agg_cost FROM pgr_withPoints(
65    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
66    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
67    -4, -5,
68    driving_side := 'r',
69    directed := true,
70    details := true);
71
72PREPARE q41 AS
73SELECT path_seq, node, agg_cost FROM pgr_withPoints(
74    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
75    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
76    -4, -3,
77    driving_side := 'r',
78    directed := true,
79    details := true);
80
81SELECT set_eq('q3','q4','3: Right: from ARRAY[-4] to -5 same as one to one');
82SELECT set_eq('q31','q41','4: Right: from ARRAY[-4] to -3 same as one to one');
83
84PREPARE q5 AS
85SELECT path_seq, node, agg_cost FROM pgr_withPoints(
86    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
87    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
88    ARRAY[-1, -4], ARRAY[-5,-3],
89    driving_side := 'r',
90    directed := true,
91    details := true);
92
93SELECT set_has('q5', 'q1', '5: Right: from point ARRAY[-1,-4] to -5 has results of from point -1 to -5');
94SELECT set_has('q5', 'q2', '6: Right: from point ARRAY[-1,-4] to -5 has results of from point -1 to -5');
95SELECT set_has('q5', 'q3', '7: Right: from point ARRAY[-1,-4] to -5 has results of from point -4 to -5');
96SELECT set_has('q5', 'q4', '8: Right: from point ARRAY[-1,-4] to -5 has results of from point -4 to -5');
97SELECT set_has('q5', 'q11', '9: Right: from point ARRAY[-1,-4] to -5 has results of from point -1 to -3');
98SELECT set_has('q5', 'q21', '10: Right: from point ARRAY[-1,-4] to -5 has results of from point -1 to -3');
99SELECT set_has('q5', 'q31', '11: Right: from point ARRAY[-1,-4] to -5 has results of from point -4 to -3');
100SELECT set_has('q5', 'q41', '12: Right: from point ARRAY[-1,-4] to -5 has results of from point -4 to -3');
101
102
103
104PREPARE q9 AS
105SELECT  -1 AS start_vid, -5 AS end_vid,  agg_cost FROM pgr_withPoints(
106    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
107    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
108    ARRAY[-1], ARRAY[-5],
109    driving_side := 'r',
110    directed := true,
111    details := true) WHERE edge = -1;
112
113
114PREPARE q10 AS
115SELECT *  FROM pgr_withPointsCost(
116    'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
117    'SELECT pid, edge_id, fraction, side from pointsOfInterest',
118    -1, -5,
119    driving_side := 'r',
120    directed := true);
121
122SELECT set_eq('q10','q9','Right, directed: Cost is the last row');
123
124
125SELECT * FROM finish();
126ROLLBACK;
127