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