Skip to content

Remove deprecated signatures of pgr_withPointsKSP #2896

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ milestone for 4.0.0
* pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)
* pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)

* [#2895](https://github.com/pgRouting/pgrouting/issues/2895):
pgr_withPointsKSP

* pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)

**Removal of SQL deprecated functions**

* [#2681](https://github.com/pgRouting/pgrouting/issues/2681):
Expand Down Expand Up @@ -105,8 +110,11 @@ milestone for 4.0.0
* _pgr_trsp(text,text,bigint,anyarray,boolean)
* _pgr_trsp(text,text,bigint,bigint,boolean)
* _pgr_trspviavertices(text,integer[],boolean,boolean,text)
* _pgr_withpointsvia(text,bigint[],double precision[],boolean)
* _pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)
* _pgr_withpointsksp(text,text,anyarray,anyarray,integer,character,boolean,boolean,boolean,boolean)
* _pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)
* _pgr_withpointsksp(text,text,text,integer,character,boolean,boolean,boolean)
* _pgr_withpointsvia(text,bigint[],double precision[],boolean)
* _trsp(text,text,anyarray,anyarray,boolean)
* _v4trsp(text,text,anyarray,anyarray,boolean)
* _v4trsp(text,text,text,boolean)
Expand Down
10 changes: 9 additions & 1 deletion doc/src/release_notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,11 @@ milestone for 4.0.0
* pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)
* pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)

* `#2895 <https://github.com/pgRouting/pgrouting/issues/2895>`__:
pgr_withPointsKSP

* pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)

.. rubric:: Removal of SQL deprecated functions

* `#2681 <https://github.com/pgRouting/pgrouting/issues/2681>`__:
Expand Down Expand Up @@ -135,8 +140,11 @@ milestone for 4.0.0
* _pgr_trsp(text,text,bigint,anyarray,boolean)
* _pgr_trsp(text,text,bigint,bigint,boolean)
* _pgr_trspviavertices(text,integer[],boolean,boolean,text)
* _pgr_withpointsvia(text,bigint[],double precision[],boolean)
* _pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)
* _pgr_withpointsksp(text,text,anyarray,anyarray,integer,character,boolean,boolean,boolean,boolean)
* _pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)
* _pgr_withpointsksp(text,text,text,integer,character,boolean,boolean,boolean)
* _pgr_withpointsvia(text,bigint[],double precision[],boolean)
* _trsp(text,text,anyarray,anyarray,boolean)
* _v4trsp(text,text,anyarray,anyarray,boolean)
* _v4trsp(text,text,text,boolean)
Expand Down
25 changes: 21 additions & 4 deletions locale/en/LC_MESSAGES/pgrouting_doc_strings.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pgRouting v3.8\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-21 22:35+0000\n"
"POT-Creation-Date: 2025-05-22 03:51+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
Expand Down Expand Up @@ -4037,6 +4037,14 @@ msgid ""
"precision,boolean,character,boolean)"
msgstr ""

msgid ""
"`#2895 <https://github.com/pgRouting/pgrouting/issues/2895>`__: "
"pgr_withPointsKSP"
msgstr ""

msgid "pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)"
msgstr ""

msgid "Removal of SQL deprecated functions"
msgstr ""

Expand Down Expand Up @@ -4127,14 +4135,23 @@ msgstr ""
msgid "_pgr_trspviavertices(text,integer[],boolean,boolean,text)"
msgstr ""

msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)"
msgstr ""

msgid ""
"_pgr_withpointsdd(text,text,anyarray,double "
"precision,boolean,character,boolean,boolean)"
msgstr ""

msgid "_pgr_withpointsksp(text,text,anyarray,anyarray,integer,character,boolean,boolean,boolean,boolean)"
msgstr ""

msgid "_pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)"
msgstr ""

msgid "_pgr_withpointsksp(text,text,text,integer,character,boolean,boolean,boolean)"
msgstr ""

msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)"
msgstr ""

msgid "_trsp(text,text,anyarray,anyarray,boolean)"
msgstr ""

Expand Down
21 changes: 18 additions & 3 deletions locale/pot/pgrouting_doc_strings.pot
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: pgRouting v4.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-21 22:35+0000\n"
"POT-Creation-Date: 2025-05-22 03:51+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <[email protected]>\n"
Expand Down Expand Up @@ -3622,6 +3622,12 @@ msgstr ""
msgid "pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)"
msgstr ""

msgid "`#2895 <https://github.com/pgRouting/pgrouting/issues/2895>`__: pgr_withPointsKSP"
msgstr ""

msgid "pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)"
msgstr ""

msgid "Removal of SQL deprecated functions"
msgstr ""

Expand Down Expand Up @@ -3694,10 +3700,19 @@ msgstr ""
msgid "_pgr_trspviavertices(text,integer[],boolean,boolean,text)"
msgstr ""

msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)"
msgid "_pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)"
msgstr ""

msgid "_pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)"
msgid "_pgr_withpointsksp(text,text,anyarray,anyarray,integer,character,boolean,boolean,boolean,boolean)"
msgstr ""

msgid "_pgr_withpointsksp(text,text,bigint,bigint,integer,boolean,boolean,character,boolean)"
msgstr ""

msgid "_pgr_withpointsksp(text,text,text,integer,character,boolean,boolean,boolean)"
msgstr ""

msgid "_pgr_withpointsvia(text,bigint[],double precision[],boolean)"
msgstr ""

msgid "_trsp(text,text,anyarray,anyarray,boolean)"
Expand Down
11 changes: 5 additions & 6 deletions pgtap/ksp/withPointsKSP/edge_cases/point_in_vertex.pg
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,17 @@ CREATE OR REPLACE FUNCTION test_vertex_points() RETURNS SETOF TEXT AS
$BODY$
BEGIN

IF NOT min_version('3.6.0') THEN
RETURN QUERY SELECT skip(1, 'Signature added on 3.6.0');
RETURN;
END IF;

IF NOT min_version('3.6.0') THEN
RETURN QUERY SELECT skip(1, 'pgr_withPointsKSP testing only valid signatures on 4.0.0');
RETURN;
END IF;

PREPARE dijkstra1(BIGINT, BIGINT) AS
SELECT agg_cost::TEXT FROM pgr_KSP(
$$SELECT id, source, target, cost, reverse_cost FROM four_edges$$,
$1, $2, 3, true) WHERE edge < 0;

-- its a straigh line and one extreme are reachable
-- its a straight line and one extreme are reachable
RETURN QUERY SELECT results_eq($$dijkstra1(5,9)$$, ARRAY[4]::TEXT[]);
RETURN QUERY SELECT results_eq($$dijkstra1(9,5)$$, ARRAY[4]::TEXT[]);

Expand Down
21 changes: 8 additions & 13 deletions pgtap/ksp/withPointsKSP/inner_query.pg
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,17 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
BEGIN;

UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost);
SELECT CASE WHEN min_version('3.6.0') THEN plan(684) ELSE plan(252) END;
SELECT CASE WHEN min_version('3.6.0') THEN plan(432) ELSE plan(1) END;

CREATE OR REPLACE FUNCTION withPointsKSP_inner_query() RETURNS SETOF TEXT AS
$BODY$
BEGIN
IF min_version('3.6.0') THEN

IF NOT min_version('3.6.0') THEN
RETURN QUERY SELECT skip(1, 'pgr_withPointsKSP testing only valid signatures on 4.0.0');
RETURN;
END IF;

-- ONE TO ONE
RETURN QUERY SELECT style_dijkstra('pgr_withPointsKSP(', ', $$SELECT * from pointsOfInterest$$, 6, 10, 1, $$r$$,true)');
RETURN QUERY SELECT innerquery_points('pgr_withPointsKSP($$SELECT * FROM edges$$,', ', 6, 10, 1, $$l$$, true)');
Expand All @@ -42,17 +47,7 @@ BEGIN
RETURN QUERY SELECT style_dijkstra('pgr_withPointsKSP(', ', $$SELECT * from pointsOfInterest$$, $$SELECT * FROM combinations$$, 2, $$r$$, true)');
RETURN QUERY SELECT innerquery_points('pgr_withPointsKSP($$SELECT * FROM edges$$,', ', $$SELECT * FROM combinations$$, 2, $$r$$, true)');
RETURN QUERY SELECT innerquery_combinations('pgr_withPointsKSP($$SELECT * FROM edges$$, $$SELECT * from pointsOfInterest$$,',', 2, $$r$$, true)');
END IF;
/* TODO Remove on v4*/
-- ONE TO ONE
SET client_min_messages TO ERROR;
RETURN QUERY SELECT style_dijkstra('pgr_withPointsKSP(', ', $$SELECT * from pointsOfInterest$$, 5, 10, 2, driving_side => $$r$$, directed => true)');
RETURN QUERY SELECT innerquery_points('pgr_withPointsKSP($$SELECT * FROM edges$$,', ', 6, 10, 2, driving_side => $$r$$, directed => true)');
RETURN QUERY SELECT style_dijkstra('pgr_withPointsKSP(', ', $$SELECT * from pointsOfInterest$$, 5, 10, 2, true, true, $$r$$)');
RETURN QUERY SELECT innerquery_points('pgr_withPointsKSP($$SELECT * FROM edges$$,', ', 6, 10, 2, true, true, $$r$$)');
RETURN QUERY SELECT style_dijkstra('pgr_withPointsKSP(', ', $$SELECT * from pointsOfInterest$$, 5, 10, 2, true)');
RETURN QUERY SELECT innerquery_points('pgr_withPointsKSP($$SELECT * FROM edges$$,', ', 6, 10, 2, true)');
SET client_min_messages TO NOTICE;

END
$BODY$
LANGUAGE plpgsql VOLATILE;
Expand Down
47 changes: 8 additions & 39 deletions pgtap/ksp/withPointsKSP/no_crash_test.pg
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
BEGIN;

UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost);
SELECT CASE WHEN min_version('3.6.0') THEN plan(164) ELSE plan(26) END;
SELECT CASE WHEN min_version('3.6.0') THEN plan(137) ELSE plan(1) END;

PREPARE edges AS
SELECT id, source, target, cost, reverse_cost FROM edges;
Expand All @@ -33,17 +33,20 @@ SELECT array_agg(id) FROM vertices WHERE id IN (-1);
PREPARE null_ret_arr AS
SELECT array_agg(id) FROM vertices WHERE id IN (-1);

SELECT isnt_empty('edges', 'Should be not empty to tests be meaningful');
SELECT set_eq('null_ret', 'SELECT NULL::BIGINT[]', 'Should be empty to tests be meaningful');

CREATE OR REPLACE FUNCTION test_function()
RETURNS SETOF TEXT AS
$BODY$
DECLARE
params TEXT[];
subs TEXT[];
BEGIN
IF min_version('3.6.0') THEN

IF NOT min_version('3.6.0') THEN
RETURN QUERY SELECT skip(1, 'pgr_withPointsKSP testing only valid signatures on 4.0.0');
RETURN;
END IF;

RETURN QUERY SELECT has_function('pgr_withpointsksp',ARRAY['text','text','bigint','bigint','integer','character','boolean','boolean','boolean']);
-- one to one
params = ARRAY[
'$$edges$$',
Expand Down Expand Up @@ -168,11 +171,6 @@ IF min_version('3.6.0') THEN
PREPARE combinations AS
SELECT source, target FROM combinations;

RETURN QUERY
SELECT isnt_empty('combinations', 'Should be not empty to tests be meaningful');
RETURN QUERY
SELECT is_empty('null_combinations', 'Should be empty to tests be meaningful');

params = ARRAY['$$edges$$',
'$$SELECT pid, edge_id, fraction from pointsOfInterest$$',
'$$combinations$$',
Expand All @@ -197,35 +195,6 @@ IF min_version('3.6.0') THEN
'NULL'
]::TEXT[];
RETURN query SELECT * FROM no_crash_test('pgr_withPointsKSP', params, subs);
END IF;

/* TODO remove tests on v4*/
-- 1 to distance
params = ARRAY[
'$$SELECT id, source, target, cost, reverse_cost FROM edges$$',
'$$SELECT pid, edge_id, fraction from pointsOfInterest$$',
'5',
'6',
'2'
]::TEXT[];
subs = ARRAY[
'NULL',
'NULL',
'(SELECT id FROM vertices WHERE id IN (-1))',
'(SELECT id FROM vertices WHERE id IN (-1))',
'NULL'
]::TEXT[];

RETURN query SELECT * FROM no_crash_test('pgr_withPointsKSP', params, subs);

subs = ARRAY[
'NULL',
'NULL',
'NULL::BIGINT',
'NULL::BIGINT',
'NULL'
]::TEXT[];
RETURN query SELECT * FROM no_crash_test('pgr_withPointsKSP', params, subs);

END
$BODY$
Expand Down
71 changes: 38 additions & 33 deletions pgtap/ksp/withPointsKSP/types_check.pg
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,20 @@ along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
********************************************************************PGR-GNU*/
BEGIN;
SELECT CASE WHEN min_version('3.6.0') THEN plan(15) ELSE plan(5) END;
SELECT CASE WHEN min_version('3.6.0') THEN plan(13) ELSE plan(2) END;

SELECT has_function('pgr_withpointsksp');

CREATE FUNCTION withPointsKSP_types_check()
RETURNS SETOF TEXT AS
$BODY$
BEGIN
IF min_version('3.6.0') THEN

IF NOT min_version('3.6.0') THEN
RETURN QUERY SELECT skip(1, 'pgr_withPointsKSP testing only valid signatures on 4.0.0');
RETURN;
END IF;

RETURN QUERY SELECT has_function('pgr_withpointsksp',ARRAY['text','text','bigint','bigint','integer','character','boolean','boolean','boolean']);
RETURN QUERY SELECT has_function('pgr_withpointsksp',ARRAY['text','text','bigint','anyarray','integer','character','boolean','boolean','boolean']);
RETURN QUERY SELECT has_function('pgr_withpointsksp',ARRAY['text','text','anyarray','bigint','integer','character','boolean','boolean','boolean']);
Expand All @@ -37,42 +42,42 @@ BEGIN
RETURN QUERY SELECT function_returns('pgr_withpointsksp',ARRAY['text','text','anyarray','bigint','integer','character','boolean','boolean','boolean'],'setof record');
RETURN QUERY SELECT function_returns('pgr_withpointsksp',ARRAY['text','text','anyarray','anyarray','integer','character','boolean','boolean','boolean'],'setof record');
RETURN QUERY SELECT function_returns('pgr_withpointsksp',ARRAY['text','text','text','integer','character','boolean','boolean','boolean'],'setof record');
END IF;
/*Remove last 1 row on v4*/
RETURN QUERY SELECT CASE WHEN min_version('3.6.0')
THEN collect_tap(

function_args_eq('pgr_withpointsksp',
$$VALUES
('{"","","","","","","directed","heap_paths","details","seq","path_id","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]),
('{"","","","","","directed","heap_paths","details","seq","path_id","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]),
('{"","","","","","directed","heap_paths","driving_side","details","seq","path_id","path_seq","node","edge","cost","agg_cost"}'::TEXT[])
$$),
IF min_version('4.0.0') THEN

RETURN QUERY SELECT function_args_eq('pgr_withpointsksp',
$$VALUES
('{"","","","","","",directed,heap_paths,details,seq,path_id,path_seq,start_vid,end_vid,node,edge,cost,agg_cost}'::TEXT[]),
('{"","","","","",directed,heap_paths,details,seq,path_id,path_seq,start_vid,end_vid,node,edge,cost,agg_cost}'::TEXT[])
$$);

RETURN QUERY SELECT function_types_eq('pgr_withpointsksp',
$$VALUES
('{text,text,int8,int8,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,int8,anyarray,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,anyarray,int8,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,anyarray,anyarray,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,text,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[])
$$);

function_types_eq('pgr_withpointsksp',
$$VALUES
('{text,text,int8,int8,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,int8,anyarray,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,anyarray,int8,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,anyarray,anyarray,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,text,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,int8,int8,int4,bool,bool,bpchar,bool,int4,int4,int4,int8,int8,float8,float8}'::TEXT[])
$$)
)
ELSE collect_tap(
ELSE

function_args_eq('pgr_withpointsksp',
$$SELECT '{"","","","","","directed","heap_paths","driving_side","details","seq","path_id","path_seq","node","edge","cost","agg_cost"}'::TEXT[] $$
),
RETURN QUERY SELECT function_args_has('pgr_withpointsksp',
$$VALUES
('{"","","","","","",directed,heap_paths,details,seq,path_id,path_seq,start_vid,end_vid,node,edge,cost,agg_cost}'::TEXT[]),
('{"","","","","",directed,heap_paths,details,seq,path_id,path_seq,start_vid,end_vid,node,edge,cost,agg_cost}'::TEXT[])
$$);

function_types_eq('pgr_withpointsksp',
$$VALUES ('{text,text,int8,int8,int4,bool,bool,bpchar,bool,int4,int4,int4,int8,int8,float8,float8}'::TEXT[])$$
)
)END;
RETURN QUERY SELECT function_types_has('pgr_withpointsksp',
$$VALUES
('{text,text,int8,int8,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,int8,anyarray,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,anyarray,int8,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,anyarray,anyarray,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]),
('{text,text,text,int4,bpchar,bool,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[])
$$);

/* TODO remove on v4*/
RETURN QUERY SELECT has_function('pgr_withpointsksp',ARRAY['text','text','bigint','bigint','integer','boolean','boolean','character','boolean']);
RETURN QUERY SELECT function_returns('pgr_withpointsksp',ARRAY['text','text','bigint','bigint','integer','boolean','boolean','character','boolean'],'setof record');
END IF;
END
$BODY$
LANGUAGE plpgsql VOLATILE;
Expand Down
Loading