Migration Guide - pgRouting/pgrouting GitHub Wiki
- pgr_bdAstar- Signature changed
- Max Flow functions- Names changed
- pgr_pointToId- Deprecated
-
Bidirectional Functions
- pgr_bdDijkstra- Signature changed
-
Convenience Functions
- pgr_pointsToVids- Deprecated
-
TSP Functions
- pgr_TSP with distance matrix- Deprecated
- pgr_TSP with euclidean distances- Deprecated
-
Convenience Functions
- pgr_textToPoints- Deprecated
- pgr_pointsToDMatrix- Deprecated
- pgr_vidsToDMatrix- Deprecated
- pgr_flipGeometries- Deprecated
-
All Pair Functions
- pgr_kDijkstraPath- Renamed
- pgr_kDijkstraCost- Renamed
- pgr_apspJohnson- Renamed
- pgr_apspWarshall- Renamed
-
pgRouting Functions
- pgr_dijkstra - Signature changed
- pgr_KSP- Signature changed
- pgr_drivingDistance- Signature changed
- pgr_createTopology- Signature changed
- pgr_alphaShape- Signature changed
-
Developers Functions
- pgr_getColumnName- Deprecated
- pgr_getTableName- Deprecated
- pgr_isColumnIndexed- Deprecated
- pgr_isColumnInTable- Deprecated
- pgr_quote_ident- Deprecated
- pgr_versionless- Deprecated
- pgr_startPoint- Deprecated
- pgr_endPoint - Deprecated
How to detect that it needs migration
- when the output columns are
(seq, id1, id2, cost) - when the
pgr_bdAstarends with two boolean values - when the inner query columns need casting
What to do
- Adjust the returning to the new column names
(seq, path_seq, node, edge, cost, agg_cost)-
id1is nownode -
id2is nowedge
-
- Remove the inner query casting
- Remove any contradiction
- when the last boolean value has a value false: physically the column
reverse_costmust not exist in the inner query - when the last boolean value has a value true: physically the column
reverse_costmust exist in the inner query
- when the last boolean value has a value false: physically the column
- Remove the last boolean value
Example
SELECT seq, id1, id2, cost FROM pgr_bdAStar(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost, x1, y1, x2, y2
FROM edge_table',
4, 10, false, false);
migrates to
SELECT seq, path_seq, node, edge, cost, agg_cost FROM pgr_bdAStar(
'SELECT id, source, target, cost, x1, y1, x2, y2
FROM edge_table',
4, 10, false);
- pgr_maxFlowBoykovKolmogorov,
- pgr_maxFlowEdmondsKarp,
- pgr_maxFlowPushRelabel
How to detect that it needs migration
- The function has
maxFlowon the name - when the output columns are
(seq, edge_id, source, target, flow, residual_capacity)
What to do
- Adjust the returning columns to the new column names
(seq, edge, start_vid, end_vid, flow, residual_capacity)-
sourceis nowstart_vid -
targetis nowend_vid
-
- Change the name acordingly:
-
pgr_maxFlowBoykovKolmogorovtopgr_boykovKolmogorov -
pgr_maxFlowEdmondsKarptopgr_edmondsKarp -
pgr_maxFlowPushRelabeltopgr_pushRelabel
-
Example
SELECT seq, edge_id, source, target, flow, residual_capacity
FROM pgr_maxFlowBoykovKolmogorov(
'SELECT id, source, target, capacity, reverse_capacity
FROM edge_table',
6, 11
);
migrates to
SELECT seq, edge, start_vid, end_vid, flow, residual_capacity
FROM pgr_boykovKolmogorov(
'SELECT id, source, target, capacity, reverse_capacity
FROM edge_table',
6, 11
);
Availability: 2.0.x Deprecated: 2.5.0
what to do
given 'my_table' with the columns (gid, my_point_geom)
SELECT gid AS id
FROM my_table
WHERE ST_Equals( my_point_geom, ST_SetSRID(ST_Point(-71.1043443253471, 42.3150676015829),4326))
- when the output columns are
(seq, id1, id2, cost) - when the
pgr_bdAstarends with two boolean values - when the inner query columns need casting
- Adjust the returning to the new column names
(seq, path_seq, node, edge, cost, agg_cost)-
id1is nownode -
id2is nowedge
-
- Remove the inner query casting
- Remove any contradiction
- when the last boolean value has a value false: physically the column
reverse_costmust not exist in the inner query - when the last boolean value has a value true: physically the column
reverse_costmust exist in the inner query
- when the last boolean value has a value false: physically the column
- Remove the last boolean value
SELECT seq, id1, id2, cost FROM pgr_bdDijkstra(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost
FROM edge_table',
4, 10, false, false);migrates to
SELECT seq, path_seq, node, edge, cost, agg_cost FROM pgr_bdDijkstra(
'SELECT id, source, target, cost
FROM edge_table',
4, 10, false);- Availability: 2.1.0
- Deprecated: 2.3.0
- No replacement
PostGIS has ST_DWithin.
SELECT id AS Vids FROM edge_table_vertices_pgr
WHERE ST_DWithin(the_geom, ST_Point(-97, 30), 0.001);
- Availability: 2.0
- Deprecated signature: 2.2
- Has replacement
- When the first parameter is of type float8[][]
- When the result columns are
(seq, id) - When a function that return float8 was written to create the first parameter
- When you have to convert a table to a matrix to get a float8[][]
- start_vid or end_vid are INTEGER
Suppose that the function make_matrix(, ids::BIGINT[]) was written to create a distance matrix of the ids in the array using internally pgr_dijkstra and returning float8[][]
- Use pgr_dijkstraCostMatrix
- Adjust the returning columns to the new column names
(seq, node, cost, agg_cost)- before
idwas an index to the array, now its not returned
- before
- Remove the inner query casting
- start_vid or end_vid are BIGINT
- a constant has to be casted to BIGINT otherwise it will get the old signature
- a variable has to be of type BIGINT
SELECT seq, id
FROM pgr_tsp(
make_matrix(<parameters>), ARRAY[2,5,7,9]),
1); -- the `1` represents the first element of the array, that is the `2`migrates to
SELECT seq, node, cost, agg_cost FROM pgr_TSP(
$$
SELECT * FROM pgr_dijkstraCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
ARRAY[2,5,7,9],
false
)
$$,
2::BIGINT);Suppose that the table dmatrix_table has columns (start_vid, end_vid, agg_cost) and stores the values for a distance matrix of ids (2,5,7,9) and convert_to_matrix(table::TEXT) was written to create the distance matrix of the ids based on the dmatrix_table information
- use an SQL query to select all the values of
dmatrix_table - Adjust the returning columns to the new column names
(seq, node, cost, agg_cost)- before
idwas an index to the array, now its not returned
- before
- Remove the inner query casting
- start_vid or end_vid are BIGINT
- a constant has to be casted to BIGINT otherwise it will get the old signature
- a variable has to be of type BIGINT
SELECT seq, id
FROM pgr_tsp(
convert_to_matrix('dmatrix_table'),
1); -- the `1` represents the first element of the array, that is the id `2`migrates to
SELECT * FROM pgr_TSP(
$$
SELECT * FROM dmatrix_table
$$,
2::BIGINT);- Availability: 2.0
- Deprecated signature: 2.2
- Has replacement
- When the first parameter is of type text
- When the result columns are
(seq, id1, id2, cost)
- Change the name to
pgr_eucledianTSP - Adjust the returning columns to the new column names
(seq, node, cost, agg_cost)-
id1is unused -
id2is nownode
-
- Remove the inner query casting
SELECT seq, id1, id2, cost
FROM pgr_tsp(
'SELECT id::INTEGER, x, y
FROM vertex_table'
, 6, 5);migrates to
SELECT seq, node, cost, agg_cost
FROM pgr_eucledianTSP(
'SELECT id, x, y
FROM vertex_table'
, 6, 5);- Availability: 2.1.0
- Deprecated: 2.3.0
- No replacement
Nothing, PostGIS has ST_GeomFromText.
- Availability: 2.1.0
- Deprecated: 2.3.0
- No replacement
When migrating pgr_TSP use pgr_eucledianTSP.
- Availability: 2.1.0
- Deprecated: 2.3.0
- No replacement
When migrating pgr_TSP use pgr_dijkstraCost.
- Availability: 2.1.0
- Deprecated: 2.3.0
- No replacement
- Create a postgres object (function/view) that suits the application necessities
- Read How to: Flip Geometries
- Availability: 2.0.0
- Deprecated: 2.2.0
- Has a replacement
- When the name is
pgr_kDijkstraPath - When the result columns are
(seq, id1, id2, id3, cost)
- Change the name to
pgr_dijkstra - Adjust the returning to the new column names
(seq, path_seq, end_vid, node, edge, cost, agg_cost)-
id1is nowend_vid -
id1is nownode -
id2is nowedge
-
- Remove the inner query casting
- Remove any contradiction
- When the last boolean value has a value false: physically the column
reverse_costmust not exist in the inner query - When the last boolean value has a value true: physically the column
reverse_costmust exist in the inner query
- When the last boolean value has a value false: physically the column
- Remove the last boolean value
- Remove the inner query casting
SELECT seq, id1, id2, id3, cost FROM pgr_kDijkstraPath(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost
FROM edge_table',
10, array[4,12], false, false);migrates to
SELECT seq, path_seq, end_vid, node, edge, cost, agg_cost FROM pgr_dijkstra(
'SELECT id, source, target, cost
FROM edge_table',
10, array[4,12], false);- Availability: 2.0.0
- Deprecated: 2.2.0
- Has a replacement
- When the name is
pgr_kDijkstraCost - When the output columns are
(seq, id1, id2, cost)
- Change the name to
pgr_dijkstraCost - Adjust the returning to the new column names
(start_vid, end_vid, agg_cost)-
id1is nowstart_vid -
id2is nowend_vid -
costis nowagg_cost
-
- Remove the inner query casting
- Remove any contradiction
- When the last boolean value has a value false: physically the column
reverse_costmust not exist in the inner query - When the last boolean value has a value true: physically the column
reverse_costmust exist in the inner query
- When the last boolean value has a value false: physically the column
- Remove the last boolean value
SELECT seq, id1, id2, cost FROM pgr_kDijkstraCost(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost
FROM edge_table',
10, array[4,12], false, false);migrates to
SELECT start_vid, end_vid, agg_cost FROM pgr_dijkstraCost(
'SELECT id, source, target, cost
FROM edge_table',
10, array[4,12], false);- Availability: 2.0.0
- Deprecated: 2.2.0
- Has a replacement
- When the output columns are
(seq, id1, id2, cost) - When it has
apspas part of the name. - When the inner query columns need casting
- When the sequence starts with 0
- Only worked for directed graph
- Change the name to
pgr_johnson - Adjust the returning to the new column names
(start_vid, end_vid, agg_cost)-
id1is nowstart_vid -
id2is nowend_vid -
costis nowagg_cost
-
- Remove the inner query casting
SELECT seq, id1, id2, cost FROM pgr_apspJohnson(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost
FROM edge_table');migrates to
SELECT start_vid, end_vid, agg_cost FROM pgr_johnson(
'SELECT id, source, target, cost
FROM edge_table');- Availability: 2.0.0
- Deprecated: 2.2.0
- Has a replacement
- When the output columns are
(seq, id1, id2, cost) - When it has
apspas part of the name. - When the inner query columns need casting
- When the
pgr_apspWarshallends with two boolean values - When the sequence starts with 0
- Only worked for directed graph
- Change the name to
pgr_floydWarshall - Adjust the returning to the new column names
(start_vid, end_vid, agg_cost)-
id1is nowstart_vid -
id2is nowend_vid -
costis nowagg_cost
-
- Remove the inner query casting
- Remove any contradiction
- When the last boolean value has a value false: physically the column
reverse_costmust not exist in the inner query - When the last boolean value has a value true: physically the column
reverse_costmust exist in the inner query
- When the last boolean value has a value false: physically the column
- Remove the last boolean value
SELECT seq, id1, id2, cost FROM pgr_apspWarshall(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost
FROM edge_table',
true, false);migrates to
SELECT start_vid, end_vid, agg_cost FROM pgr_floydWarshall(
'SELECT id, source, target, cost
FROM edge_table',
true);- Availability: 2.0.0
- Signature Changed: 2.1.0
- A parameter was removed
- When the output columns are
(seq, id1, id2, cost) - When the
pgr_dijkstraends with two boolean values - When the inner query columns need casting
- When the sequence starts with 0
- Adjust the returning to the new column names
(seq, path_seq, node, edge, cost, agg_cost)- id1 is now node
- id2 is now edge
- Remove the inner query casting
- Remove any contradiction
- When the last boolean value has a value false: physically the column
reverse_costmust not exist in the inner query - When the last boolean value has a value true: physically the column
reverse_costmust exist in the inner query
- When the last boolean value has a value false: physically the column
- Remove the last boolean value
- The sequence starts with 1, adjust any cycle to this value
SELECT seq, id1, id2, cost FROM pgr_dijkstra(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost
FROM edge_table',
4, 10, true, false);migrates to
SELECT seq, path_seq, node, edge, cost, agg_cost FROM pgr_dijkstra(
'SELECT id, source, target, cost
FROM edge_table',
4, 10, true);- Availability: 2.0.0
- Signature Changed: 2.1.0
- A parameter was renamed
- Functionality of the renamed parameter changed
- When the output columns are
(seq, id1, id2, id3, cost) - When the
pgr_KSPends with one boolean value (has_rcost) - When the inner query columns need casting
- When the sequence starts with 0
- Only worked for directed graphs
- Adjust the returning to the new column names
seq, path_id, path_seq, node, edge, cost, agg_cost)- id1 is now path_id
- id2 is now node
- id3 is now edge
- Remove the inner query casting
- Remove any contradiction
- When the boolean value has a value false: physically the column
reverse_costmust not exist in the inner query - When the boolean value has a value true: physically the column
reverse_costmust exist in the inner query
- When the boolean value has a value false: physically the column
- Substitute the boolean value to be
directed := true - The sequence starts with 1, adjust any cycle to this value
SELECT seq, id1, id2, id3, cost FROM pgr_KSP(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost
FROM edge_table',
2, 11, 2, false);
migrates to
SELECT seq, path_seq, node, edge, cost, agg_cost FROM pgr_KSP(
'SELECT id, source, target, cost
FROM edge_table',
2, 11, 2, directed := true);- Availability: 2.0.0
- Signature Changed: 2.1.0
- A parameter was removed
- When the output columns are
(seq, id1, id2, cost) - When the
pgr_drivingDistanceends with two boolean values - When the inner query columns need casting
- When the sequence starts with 0
- Adjust the returning to the new column names
(seq, node, edge, cost, agg_cost)- id1 is now node
- id2 is now edge and was not considered useful, now its part of a spanning tree
- Remove the inner query casting
- Remove any contradiction
- When the last boolean value has a value false: physically the column
reverse_costmust not exist in the inner query - When the last boolean value has a value true: physically the column
reverse_costmust exist in the inner query
- When the last boolean value has a value false: physically the column
- Remove the last boolean value
- The sequence starts with 1, adjust any cycle to this value
SELECT seq, id1, id2, cost FROM pgr_drivingDistance(
'SELECT id::INTEGER, source::INTEGER, target::INTEGER, cost, reverse_cost
FROM edge_table',
4, 3, true, false);migrates to
SELECT seq, path_seq, node, edge, cost, agg_cost FROM pgr_drivingDistance(
'SELECT id, source, target, cost
FROM edge_table',
4, 3, true);- Availability: 2.0.0
- Signature Changed: 2.1.0
- An extra parameter was added
Nothing
- Availability: 2.0.0
- Signature Changed: 2.1.0
- An extra parameter was added
Nothing
The following functions are deprecated and no longer maintained.
- Availability: 2.0.0
- Deprecated: 2.1.0
One of the parameters is the column name
- Its like having
f(x,y) returns y - Instead of calling the function, use the second parameter
- Availability: 2.0.0
- Deprecated: 2.1.0
The parameters is the table name:
- Its like having
f(x) returns x - Instead of calling the function, use the parameter
- Availability: 2.0.0
- Deprecated: 2.1.0
This SQL lists the indexes on the table, Modify to suit your needs
SELECT * FROM pg_indexes WHERE tablename = 'edge_table';- Availability: 2.0.0
- Deprecated: 2.1.0
To see if the_column is in the table my_table
SELECT count(*) = 1
FROM information_schema.columns
WHERE table_name='my_table' AND column_name = 'the_column';- Availability: 2.0.0
- Deprecated: 2.1.0
Use PostgreSQL function quote_ident instead.
- Availability: 2.0.0
- Deprecated: 2.1.0
Use the method of your choice. Here is a link on how to compare versions using PostgreSQL.
- Availability: 2.0.0
- Deprecated: 2.1.0
Use PostGIS function ST_StartPoint instead.
- Availability: 2.0.0
- Deprecated: 2.1.0
Use PostGIS function ST_EndPoint instead.