forked from pgRouting/pgrouting
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathempty_set_NO_default_strict.sql
258 lines (230 loc) · 7.37 KB
/
empty_set_NO_default_strict.sql
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
\i setup.sql
SELECT plan(20);
----------------------------------------------------------------------------------------------------------------
-- testing from an existing starting vertex to a non-existing destination
----------------------------------------------------------------------------------------------------------------
-- in directed graph
-- with restrictions
PREPARE q1 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict WHERE id IN (1)',
2, 3,
strict := false
);
-- in undirected graph
-- with restrictions
PREPARE q2 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict WHERE id IN (1)',
2, 3,
FALSE,
strict := false
);
-- in directed graph
-- without restrictions
PREPARE q3 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict where id > 10',
2, 3,
strict := false
);
-- in undirected graph
-- without restrictions
PREPARE q4 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict where id > 10',
2, 3,
FALSE,
strict := false
);
----------------------------------------------------------------------------------------------------------------
-- testing from an non-existing starting vertex to an existing destination
----------------------------------------------------------------------------------------------------------------
-- in directed graph
-- with restrictions
PREPARE q5 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict WHERE id IN (1)',
6, 8,
strict := false
);
-- in undirected graph
-- with restrictions
PREPARE q6 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict WHERE id IN (1)',
6, 8,
FALSE,
strict := false
);
-- in directed graph
-- without restrictions
PREPARE q7 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict where id > 10',
6, 8,
strict := false
);
-- in undirected graph
-- without restrictions
PREPARE q8 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict where id > 10',
6, 8,
FALSE,
strict := false
);
----------------------------------------------------------------------------------------------------------------
-- testing from a non-existing starting vertex to a non-existing destination
----------------------------------------------------------------------------------------------------------------
-- in directed graph
-- with restrictions
PREPARE q9 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict WHERE id IN (1)',
1, 17,
strict := false
);
-- in undirected graph
-- with restrictions
PREPARE q10 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict WHERE id IN (1)',
1, 17,
FALSE,
strict := false
);
-- in directed graph
-- without restrictions
PREPARE q11 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict where id > 10',
1, 17,
strict := false
);
-- in undirected graph
-- without restrictions
PREPARE q12 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict where id > 10',
1, 17,
FALSE,
strict := false
);
----------------------------------------------------------------------------------------------------------------
-- testing from an existing starting vertex to the same destination
----------------------------------------------------------------------------------------------------------------
-- in directed graph
-- with restrictions
PREPARE q13 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict WHERE id IN (1)',
2, 2,
strict := false
);
-- in undirected graph
-- with restrictions
PREPARE q14 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict WHERE id IN (1)',
2, 2,
FALSE,
strict := false
);
-- in directed graph
-- without restrictions
PREPARE q15 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict where id > 10',
2, 2,
strict := false
);
-- in undirected graph
-- without restrictions
PREPARE q16 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id = 4 OR id = 7',
'SELECT * FROM restrict where id > 10',
2, 2,
FALSE,
strict := false
);
----------------------------------------------------------------------------------------------------------------
-- testing from an existing starting vertex in one component to an existing destination in another component
----------------------------------------------------------------------------------------------------------------
-- in directed graph
-- with restrictions
PREPARE q17 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
'SELECT * FROM restrict WHERE id IN (1)',
2, 14,
strict := false
);
-- in undirected graph
-- with restrictions
PREPARE q18 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
'SELECT * FROM restrict WHERE id IN (1)',
2, 14,
FALSE,
strict := false
);
-- in directed graph
-- without restrictions
PREPARE q19 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
'SELECT * FROM restrict where id > 10',
2, 14,
strict := false
);
-- in undirected graph
-- without restrictions
PREPARE q20 AS
SELECT * FROM pgr_dijkstraTRSP(
'SELECT id, source, target, cost, reverse_cost FROM edge_table WHERE id IN (4, 7, 17)',
'SELECT * FROM restrict where id > 10',
2, 14,
FALSE,
strict := false
);
----------------------------------------------------------------------------------------------------------------
SELECT is_empty('q1');
SELECT is_empty('q2');
SELECT is_empty('q3');
SELECT is_empty('q4');
SELECT is_empty('q5');
SELECT is_empty('q6');
SELECT is_empty('q7');
SELECT is_empty('q8');
SELECT is_empty('q9');
SELECT is_empty('q10');
SELECT is_empty('q11');
SELECT is_empty('q12');
SELECT is_empty('q13');
SELECT is_empty('q14');
SELECT is_empty('q15');
SELECT is_empty('q16');
SELECT is_empty('q17');
SELECT is_empty('q18');
SELECT is_empty('q19');
SELECT is_empty('q20');
SELECT * FROM finish();
ROLLBACK;