-
-
Notifications
You must be signed in to change notification settings - Fork 377
Migration Guide
-
Migrating from 2.3 to 2.4
- [Bidirectional Functions](#Bidirectional Functions)
-
Convenience Functions
- pgr_pointsToVids- Deprecated
-
Migrating from 2.2 to 2.3
-
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
-
TSP Functions
-
Migrating from 2.1 to 2.2
-
All Pair Functions
- pgr_kDijkstraPath- Renamed
- pgr_kDijkstraCost- Renamed
- pgr_apspJohnson- Renamed
- pgr_apspWarshall- Renamed
-
All Pair Functions
-
Migrating from 2.0 to 2.1
-
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
-
pgRouting Functions
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_bdDijkstra(
'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_bdDijkstra(
'SELECT id, source, target, cost, x1, y1, x2, y2
FROM edge_table',
4, 10, false);
- Availability: 2.1.0
- Deprecated: 2.3.0
- No replacement
what to do
- 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
How to detect that it needs migration
- 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
Example 1
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[][]
What to do
- 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);
Example 2
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
What to do
- 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
How to detect that it needs migration
- When the first parameter is of type text
- When the result columns are
(seq, id1, id2, cost)
What to do
- 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
Example
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
what to do
PostGIS has ST_GeomFromText
Nothing
- Availability: 2.1.0
- Deprecated: 2.3.0
- No replacement
what to do
- When migrating
pgr_TSPusepgr_eucledianTSP
- Availability: 2.1.0
- Deprecated: 2.3.0
- No replacement
what to do
- When migrating
pgr_TSPusepgr_dijkstraCost
- Availability: 2.1.0
- Deprecated: 2.3.0
- No replacement
what to do
- 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
How to detect that it needs migration
- When the name is
pgr_kDijkstraPath - When the result columns are
(seq, id1, id2, id3, cost)
What to do
- 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
Example
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
How to detect that it needs migration
- When the name is
pgr_kDijkstraCost - When the output columns are
(seq, id1, id2, cost)
What to do
- 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
Example
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
How to detect that it needs migration
- 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
What to do
- 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
Example
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
How to detect that it needs migration
- 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
What to do
- 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
Example
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
How to detect that it needs migration
- 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
What to do
- 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
Example
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
How to detect that it needs migration
- 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
What to do
- 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
Example
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
How to detect that it needs migration
- 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
What to do
- 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
Example
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
What to do
Nothing
- Availability: 2.0.0
- Signature Changed: 2.1.0
- An extra parameter was added
What to do
Nothing
The following functions are deprecated and no longer maintained.
- Availability: 2.0.0
- Deprecated: 2.1.0
what to do
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
what to do
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
what to do
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
what to do
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
what to do
Use postgreSQL function quote_ident instead.
- Availability: 2.0.0
- Deprecated: 2.1.0
what to do
Here is a link on how to compare versions using postgreSQL
- Use the method of your choice
- Availability: 2.0.0
- Deprecated: 2.1.0
what to do
- Use postGIS function
ST_StartPointinstead
- Availability: 2.0.0
- Deprecated: 2.1.0
what to do
Use postGIS function ST_EndPoint instead