Skip to content

Commit

Permalink
(C/C++) dijkstra: simplification of code
Browse files Browse the repository at this point in the history
  • Loading branch information
cvvergara committed Jan 23, 2025
1 parent 4838a07 commit c1b21c2
Show file tree
Hide file tree
Showing 9 changed files with 112 additions and 121 deletions.
1 change: 0 additions & 1 deletion sql/dijkstra/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ SET(LOCAL_FILES
dijkstraCostMatrix.sql
_dijkstraVia.sql
dijkstraVia.sql
_dijkstraNear.sql
dijkstraNear.sql
dijkstraNearCost.sql
)
Expand Down
94 changes: 4 additions & 90 deletions sql/dijkstra/_dijkstra.sql
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/

---------------
---------------
-- dijkstra
---------------
---------------

--v3.2
CREATE FUNCTION _pgr_dijkstra(
--v4.0
CREATE FUNCTION _pgr_dijkstrav4(
edges_sql TEXT,
combinations_sql TEXT,
start_vids ANYARRAY,
end_vids ANYARRAY,
directed BOOLEAN,
Expand All @@ -55,87 +50,6 @@ CREATE FUNCTION _pgr_dijkstra(
OUT agg_cost FLOAT)
RETURNS SETOF RECORD AS
'MODULE_PATHNAME'
LANGUAGE C VOLATILE STRICT;


--v3.2
CREATE FUNCTION _pgr_dijkstra(
edges_sql TEXT,
combinations_sql TEXT,
directed BOOLEAN,
only_cost BOOLEAN,
n_goals BIGINT,
global BOOLEAN,

OUT seq INTEGER,
OUT path_seq INTEGER,
OUT start_vid BIGINT,
OUT end_vid BIGINT,
OUT node BIGINT,
OUT edge BIGINT,
OUT cost FLOAT,
OUT agg_cost FLOAT)
RETURNS SETOF RECORD AS
'MODULE_PATHNAME'
LANGUAGE C VOLATILE STRICT;

-- COMMENTS

COMMENT ON FUNCTION _pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, BOOLEAN, BOOLEAN, BIGINT, BOOLEAN)
IS 'pgRouting internal function';

COMMENT ON FUNCTION _pgr_dijkstra(TEXT, TEXT, BOOLEAN, BOOLEAN, BIGINT, BOOLEAN)
IS 'pgRouting internal function';


/** The following are kept for backward compatibility on signatures **/
--v3.0
CREATE FUNCTION _pgr_dijkstra(
edges_sql TEXT,
start_vids ANYARRAY,
end_vids ANYARRAY,
directed BOOLEAN DEFAULT true,
only_cost BOOLEAN DEFAULT false,
normal BOOLEAN DEFAULT true,
n_goals BIGINT DEFAULT 0,

OUT seq INTEGER,
OUT path_seq INTEGER,
OUT start_vid BIGINT,
OUT end_vid BIGINT,
OUT node BIGINT,
OUT edge BIGINT,
OUT cost FLOAT,
OUT agg_cost FLOAT)
RETURNS SETOF RECORD AS
'MODULE_PATHNAME'
LANGUAGE C VOLATILE STRICT;


--v3.1
CREATE FUNCTION _pgr_dijkstra(
edges_sql TEXT,
combinations_sql TEXT,
directed BOOLEAN DEFAULT true,
only_cost BOOLEAN DEFAULT false,
normal BOOLEAN DEFAULT true,

OUT seq INTEGER,
OUT path_seq INTEGER,
OUT start_vid BIGINT,
OUT end_vid BIGINT,
OUT node BIGINT,
OUT edge BIGINT,
OUT cost FLOAT,
OUT agg_cost FLOAT)
RETURNS SETOF RECORD AS
'MODULE_PATHNAME'
LANGUAGE C VOLATILE STRICT;

-- COMMENTS
LANGUAGE C VOLATILE;

COMMENT ON FUNCTION _pgr_dijkstra(TEXT, ANYARRAY, ANYARRAY, BOOLEAN, BOOLEAN, BOOLEAN, BIGINT)
IS 'pgRouting internal function';

COMMENT ON FUNCTION _pgr_dijkstra(TEXT, TEXT, BOOLEAN, BOOLEAN, BOOLEAN)
IS 'pgRouting internal function';
10 changes: 5 additions & 5 deletions sql/dijkstra/dijkstra.sql
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ CREATE FUNCTION pgr_dijkstra(
RETURNS SETOF RECORD AS
$BODY$
SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, true, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -79,7 +79,7 @@ CREATE FUNCTION pgr_dijkstra(
RETURNS SETOF RECORD AS
$BODY$
SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, false, true, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -105,7 +105,7 @@ CREATE FUNCTION pgr_dijkstra(
RETURNS SETOF RECORD AS
$BODY$
SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, false, false, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -131,7 +131,7 @@ CREATE FUNCTION pgr_dijkstra(
RETURNS SETOF RECORD AS
$BODY$
SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, false, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, $2::BIGINT[], $3::BIGINT[], $4, false, true, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -156,7 +156,7 @@ CREATE FUNCTION pgr_dijkstra(
RETURNS SETOF RECORD AS
$BODY$
SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), _pgr_get_statement($2), $3, false, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), _pgr_get_statement($2), NULL::BIGINT[], NULL::BIGINT[], $3, false, true, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand Down
10 changes: 5 additions & 5 deletions sql/dijkstra/dijkstraCost.sql
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ CREATE FUNCTION pgr_dijkstraCost(
RETURNS SETOF RECORD AS
$BODY$
SELECT start_vid, end_vid, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, ARRAY[$2]::BIGINT[], ARRAY[$3]::BIGINT[], $4, true, true, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -66,7 +66,7 @@ CREATE FUNCTION pgr_dijkstraCost(
RETURNS SETOF RECORD AS
$BODY$
SELECT start_vid, end_vid, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, ARRAY[$2]::BIGINT[], $3::BIGINT[], $4, true, true, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -90,7 +90,7 @@ CREATE FUNCTION pgr_dijkstraCost(
RETURNS SETOF RECORD AS
$BODY$
SELECT start_vid, end_vid, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, $2::BIGINT[], ARRAY[$3]::BIGINT[], $4, true, false, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -114,7 +114,7 @@ CREATE FUNCTION pgr_dijkstraCost(
RETURNS SETOF RECORD AS
$BODY$
SELECT start_vid, end_vid, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], $4, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, $2::BIGINT[], $3::BIGINT[], $4, true, true, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -134,7 +134,7 @@ CREATE FUNCTION pgr_dijkstraCost(
RETURNS SETOF RECORD AS
$BODY$
SELECT start_vid, end_vid, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), _pgr_get_statement($2), $3, true, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), _pgr_get_statement($2), NULL::BIGINT[], NULL::BIGINT[], $3, true, true, 0, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand Down
2 changes: 1 addition & 1 deletion sql/dijkstra/dijkstraCostMatrix.sql
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ CREATE FUNCTION pgr_dijkstraCostMatrix(
RETURNS SETOF RECORD AS
$BODY$
SELECT a.start_vid, a.end_vid, a.agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), $2, $2, $3, TRUE) a;
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, $2, $2, $3, true, true, 0, false) a;
$BODY$
LANGUAGE SQL VOLATILE STRICT
COST 100
Expand Down
8 changes: 4 additions & 4 deletions sql/dijkstra/dijkstraNear.sql
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ CREATE FUNCTION pgr_dijkstraNear(
RETURNS SETOF RECORD AS
$BODY$
SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], directed, false, true, cap);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, ARRAY[$2]::BIGINT[], $3::BIGINT[], directed, false, true, cap, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -76,7 +76,7 @@ CREATE FUNCTION pgr_dijkstraNear(
RETURNS SETOF RECORD AS
$BODY$
SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, false, cap);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, $2::BIGINT[], ARRAY[$3]::BIGINT[], directed, false, false, cap, false);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand Down Expand Up @@ -104,7 +104,7 @@ CREATE FUNCTION pgr_dijkstraNear(
RETURNS SETOF RECORD AS
$BODY$
SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, false, true, cap, global);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, $2::BIGINT[], $3::BIGINT[], directed, false, true, cap, global);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -131,7 +131,7 @@ CREATE FUNCTION pgr_dijkstraNear(
RETURNS SETOF RECORD AS
$BODY$
SELECT seq, path_seq, start_vid, end_vid, node, edge, cost, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), _pgr_get_statement($2), directed, false, cap, global);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), _pgr_get_statement($2), NULL::BIGINT[], NULL::BIGINT[], directed, false, true, cap, global);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand Down
8 changes: 4 additions & 4 deletions sql/dijkstra/dijkstraNearCost.sql
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ CREATE FUNCTION pgr_dijkstraNearCost(
RETURNS SETOF RECORD AS
$BODY$
SELECT start_vid, end_vid, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), ARRAY[$2]::BIGINT[], $3::BIGINT[], directed, true, true, cap, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, ARRAY[$2]::BIGINT[], $3::BIGINT[], directed, true, true, cap, true);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -66,7 +66,7 @@ CREATE FUNCTION pgr_dijkstraNearCost(
RETURNS SETOF RECORD AS
$BODY$
SELECT start_vid, end_vid, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], ARRAY[$3]::BIGINT[], directed, true, false, cap, true);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, $2::BIGINT[], ARRAY[$3]::BIGINT[], directed, true, false, cap, true);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -89,7 +89,7 @@ CREATE FUNCTION pgr_dijkstraNearCost(
RETURNS SETOF RECORD AS
$BODY$
SELECT start_vid, end_vid, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), $2::BIGINT[], $3::BIGINT[], directed, true, true, cap, global);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), NULL::TEXT, $2::BIGINT[], $3::BIGINT[], directed, true, true, cap, global);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand All @@ -111,7 +111,7 @@ CREATE FUNCTION pgr_dijkstraNearCost(
RETURNS SETOF RECORD AS
$BODY$
SELECT start_vid, end_vid, agg_cost
FROM _pgr_dijkstra(_pgr_get_statement($1), _pgr_get_statement($2), directed, true, cap, global);
FROM _pgr_dijkstrav4(_pgr_get_statement($1), _pgr_get_statement($2), NULL::BIGINT[], NULL::BIGINT[], directed, true, true, cap, global);
$BODY$
LANGUAGE sql VOLATILE STRICT
COST 100
Expand Down
8 changes: 1 addition & 7 deletions sql/sigs/pgrouting--4.0.sig
Original file line number Diff line number Diff line change
Expand Up @@ -115,22 +115,16 @@ pgr_dijkstranearcost(text,anyarray,anyarray,boolean,bigint,boolean)
pgr_dijkstranearcost(text,anyarray,bigint,boolean,bigint)
pgr_dijkstranearcost(text,bigint,anyarray,boolean,bigint)
pgr_dijkstranearcost(text,text,boolean,bigint,boolean)
_pgr_dijkstranear(text,anyarray,anyarray,bigint,boolean)
pgr_dijkstranear(text,anyarray,anyarray,boolean,bigint,boolean)
_pgr_dijkstranear(text,anyarray,bigint,bigint,boolean)
pgr_dijkstranear(text,anyarray,bigint,boolean,bigint)
_pgr_dijkstranear(text,bigint,anyarray,bigint,boolean)
pgr_dijkstranear(text,bigint,anyarray,boolean,bigint)
pgr_dijkstranear(text,text,boolean,bigint,boolean)
pgr_dijkstra(text,anyarray,anyarray,boolean)
_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint)
_pgr_dijkstra(text,anyarray,anyarray,boolean,boolean,boolean,bigint,boolean)
pgr_dijkstra(text,anyarray,bigint,boolean)
pgr_dijkstra(text,bigint,anyarray,boolean)
pgr_dijkstra(text,bigint,bigint,boolean)
pgr_dijkstra(text,text,boolean)
_pgr_dijkstra(text,text,boolean,boolean,bigint,boolean)
_pgr_dijkstra(text,text,boolean,boolean,boolean)
_pgr_dijkstrav4(text,text,anyarray,anyarray,boolean,boolean,boolean,bigint,boolean)
_pgr_dijkstravia(text,anyarray,boolean,boolean,boolean)
pgr_dijkstravia(text,anyarray,boolean,boolean,boolean)
_pgr_drivingdistance(text,anyarray,double precision,boolean,boolean)
Expand Down
Loading

0 comments on commit c1b21c2

Please sign in to comment.