@@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20
20
BEGIN;
21
21
22
22
UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost);
23
- SELECT CASE WHEN min_version('3.4.0') THEN plan(12 ) ELSE plan(1) END;
23
+ SELECT CASE WHEN min_version('3.4.0') THEN plan(16 ) ELSE plan(1) END;
24
24
25
25
26
26
CREATE OR REPLACE FUNCTION edge_cases()
@@ -59,11 +59,13 @@ BEGIN
59
59
SELECT * FROM pgr_degree('edges','SELECT id, out_edges FROM vertices');
60
60
61
61
RETURN QUERY SELECT lives_ok('query_1', 'Good execution');
62
- RETURN QUERY SELECT throws_ok ('query_2', 'P0001', 'Missing column', 'Incomlete data -> throws ');
63
- RETURN QUERY SELECT throws_ok ('query_3', 'P0001', 'Missing column', 'Incomlete data -> throws ');
64
- RETURN QUERY SELECT throws_ok ('query_4', 'P0001', 'Missing column', 'Incomlete data -> throws ');
62
+ RETURN QUERY SELECT column_missing ('query_2', 'id ');
63
+ RETURN QUERY SELECT column_missing ('query_3', 'in_edges ');
64
+ RETURN QUERY SELECT column_missing ('query_4', 'id ');
65
65
RETURN QUERY SELECT lives_ok('query_5', 'Missing column out_edges but usable');
66
66
RETURN QUERY SELECT lives_ok('query_5', 'Missing column in_edges but usable');
67
+ RETURN QUERY SELECT wrong_relation($$SELECT * FROM pgr_degree('SELECT id FROM foo', 'SELECT * FROM vertices')$$, 'foo');
68
+ RETURN QUERY SELECT wrong_relation($$SELECT * FROM pgr_degree('SELECT id FROM edges', 'SELECT * FROM bar')$$, 'bar');
67
69
68
70
PREPARE subedges AS
69
71
SELECT id FROM edges WHERE id < 17;
@@ -90,12 +92,29 @@ BEGIN
90
92
SELECT * FROM pgr_degree('subedges','SELECT id, out_edges FROM vertices');
91
93
92
94
RETURN QUERY SELECT lives_ok('query_7', 'Good execution');
93
- RETURN QUERY SELECT throws_ok ('query_8', 'P0001', 'Missing column', 'Incomlete data -> throws ');
94
- RETURN QUERY SELECT throws_ok ('query_9', 'P0001', 'Missing column', 'Incomlete data -> throws ');
95
- RETURN QUERY SELECT throws_ok ('query_10', 'P0001', 'Missing column', 'Incomlete data -> throws ');
95
+ RETURN QUERY SELECT column_missing ('query_8', 'id ');
96
+ RETURN QUERY SELECT column_missing ('query_9', 'in_edges ');
97
+ RETURN QUERY SELECT column_missing ('query_10', 'id ');
96
98
RETURN QUERY SELECT lives_ok('query_11', 'Missing column out_edges but usable');
97
99
RETURN QUERY SELECT lives_ok('query_12', 'Missing column in_edges but usable');
98
100
101
+ PREPARE empty_vertices AS
102
+ SELECT * FROM pgr_degree('SELECT id FROM edges', 'SELECT * FROM vertices WHERE id > 20');
103
+ RETURN QUERY SELECT is_empty('empty_vertices', 'Empty vertices give empty result');
104
+
105
+ PREPARE empty_graph AS
106
+ SELECT * FROM pgr_degree('SELECT id FROM edges WHERE id > 20', 'SELECT * FROM vertices') ORDER BY node;
107
+ RETURN QUERY
108
+ SELECT CASE WHEN min_version('3.8.0') THEN
109
+ collect_tap(
110
+ is_empty('empty_graph', 'is empty: Empty edges give 0 count on all vertices so none is in result')
111
+ )
112
+ ELSE
113
+ collect_tap(
114
+ results_eq('empty_graph', 'SELECT generate_series (1,17)::BIGINT, 0::BIGINT', 'Empty edges give 0 count')
115
+ )
116
+ END;
117
+
99
118
END;
100
119
$BODY$
101
120
LANGUAGE plpgsql;
0 commit comments