diff --git a/pgtap/allpairs/floydWarshall/types_check.pg b/pgtap/allpairs/floydWarshall/types_check.pg index 3b180fd1463..d6581e6d36c 100644 --- a/pgtap/allpairs/floydWarshall/types_check.pg +++ b/pgtap/allpairs/floydWarshall/types_check.pg @@ -31,10 +31,9 @@ SELECT set_eq( ('{"","directed","start_vid","end_vid","agg_cost"}'::TEXT[]) $$); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_floydwarshall'$$, +SELECT function_types_eq('pgr_floydwarshall', $$VALUES - ('{25,16,20,20,701}'::OID[]) + ('{text,bool,int8,int8,float8}'::TEXT[]) $$); SELECT finish(); diff --git a/pgtap/allpairs/johnson/types_check.pg b/pgtap/allpairs/johnson/types_check.pg index e087f3d2f35..f27ec550ecc 100644 --- a/pgtap/allpairs/johnson/types_check.pg +++ b/pgtap/allpairs/johnson/types_check.pg @@ -31,10 +31,9 @@ SELECT set_eq( ('{"","directed","start_vid","end_vid","agg_cost"}'::TEXT[]) $$); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_johnson'$$, +SELECT function_types_eq('pgr_johnson', $$VALUES - ('{25,16,20,20,701}'::OID[]) + ('{text,bool,int8,int8,float8}'::TEXT[]) $$); SELECT finish(); diff --git a/pgtap/alpha_shape/types_check.pg b/pgtap/alpha_shape/types_check.pg index 95260663218..6fd6b4c4a32 100644 --- a/pgtap/alpha_shape/types_check.pg +++ b/pgtap/alpha_shape/types_check.pg @@ -24,13 +24,9 @@ SELECT plan(4); SELECT has_function('pgr_alphashape'); /* pgtap does not like geometry type, this is a workaround */ -SELECT set_eq( - $$WITH a AS (SELECT unnest(proargtypes) from pg_proc where proname = 'pgr_alphashape') - SELECT typname from a JOIN pg_type ON(oid = unnest)$$, - $$VALUES - ('float8'), - ('geometry') - $$); +SELECT function_types_eq('pgr_alphashape', + $$VALUES ('{geometry,float8}'::TEXT[]) $$); + SELECT set_eq( $$WITH a AS (SELECT prorettype from pg_proc where proname = 'pgr_alphashape') SELECT typname from a JOIN pg_type ON(oid = prorettype)$$, diff --git a/pgtap/bdDijkstra/bdDijkstraCost/types_check.pg b/pgtap/bdDijkstra/bdDijkstraCost/types_check.pg index 0abdc306d1e..3273de76778 100644 --- a/pgtap/bdDijkstra/bdDijkstraCost/types_check.pg +++ b/pgtap/bdDijkstra/bdDijkstraCost/types_check.pg @@ -60,14 +60,14 @@ WHEN min_version('3.2.0') THEN ('{"","","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]), ('{"","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_bddijkstracost'$$, + + function_types_eq('pgr_bddijkstracost', $$VALUES - ('{25,25,16,20,20,701}'::OID[]), - ('{25,20,20,16,20,20,701}'::OID[]), - ('{25,20,2277,16,20,20,701}'::OID[]), - ('{25,2277,20,16,20,20,701}'::OID[]), - ('{25,2277,2277,16,20,20,701}'::OID[]) + ('{text,text,bool,int8,int8,float8}'::TEXT[]), + ('{text,int8,int8,bool,int8,int8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int8,int8,float8}'::TEXT[]) $$) ) ELSE @@ -80,13 +80,13 @@ ELSE ('{"","","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]), ('{"","","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_bddijkstracost'$$, + + function_types_eq('pgr_bddijkstracost', $$VALUES - ('{25,20,20,16,20,20,701}'::OID[]), - ('{25,20,2277,16,20,20,701}'::OID[]), - ('{25,2277,20,16,20,20,701}'::OID[]), - ('{25,2277,2277,16,20,20,701}'::OID[]) + ('{text,int8,int8,bool,int8,int8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int8,int8,float8}'::TEXT[]) $$) ) END; diff --git a/pgtap/bdDijkstra/bdDijkstraCostMatrix/types_check.pg b/pgtap/bdDijkstra/bdDijkstraCostMatrix/types_check.pg index b4f90ccbc5c..277d9dbf110 100644 --- a/pgtap/bdDijkstra/bdDijkstraCostMatrix/types_check.pg +++ b/pgtap/bdDijkstra/bdDijkstraCostMatrix/types_check.pg @@ -31,10 +31,9 @@ SELECT set_eq( ('{"","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]) $$); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_bddijkstracostmatrix'$$, +SELECT function_types_eq('pgr_bddijkstracostmatrix', $$VALUES - ('{25,2277,16,20,20,701}'::OID[]) + ('{text,anyarray,bool,int8,int8,float8}'::TEXT[]) $$); SELECT finish(); diff --git a/pgtap/bellman_ford/bellman_ford/types_check.pg b/pgtap/bellman_ford/bellman_ford/types_check.pg index 291ddab79b7..9ec4a763f3e 100644 --- a/pgtap/bellman_ford/bellman_ford/types_check.pg +++ b/pgtap/bellman_ford/bellman_ford/types_check.pg @@ -64,14 +64,13 @@ BEGIN $$ ), - set_has( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_bellmanford'$$, + function_types_eq('pgr_bellmanford', $$VALUES - ('{25,20,20,16,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ) ) @@ -87,13 +86,12 @@ BEGIN $$ ), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_bellmanford'$$, + function_types_eq('pgr_bellmanford', $$VALUES - ('{25,20,20,16,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ) ) diff --git a/pgtap/bellman_ford/edwardMoore/types_check.pg b/pgtap/bellman_ford/edwardMoore/types_check.pg index 0a21644c8cf..668b76d0665 100644 --- a/pgtap/bellman_ford/edwardMoore/types_check.pg +++ b/pgtap/bellman_ford/edwardMoore/types_check.pg @@ -64,14 +64,13 @@ BEGIN $$ ), - set_has( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_edwardmoore'$$, + function_types_eq('pgr_edwardmoore', $$VALUES - ('{25,20,20,16,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ) ) @@ -87,13 +86,12 @@ BEGIN $$ ), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_edwardmoore'$$, + function_types_eq('pgr_edwardmoore', $$VALUES - ('{25,20,20,16,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ) ) diff --git a/pgtap/chinese/chinesePostman/types_check.pg b/pgtap/chinese/chinesePostman/types_check.pg index 8cf7d599083..f1cc3907e59 100644 --- a/pgtap/chinese/chinesePostman/types_check.pg +++ b/pgtap/chinese/chinesePostman/types_check.pg @@ -31,10 +31,7 @@ SELECT set_eq( $$SELECT '{"", "seq", "node", "edge", "cost", "agg_cost"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_chinesepostman'$$, - $$SELECT '{25,23,20,20,701,701}'::OID[] $$ -); +SELECT function_types_eq('pgr_chinesepostman', $$SELECT '{text,int4,int8,int8,float8,float8}'::TEXT[] $$); SELECT * FROM finish(); ROLLBACK; diff --git a/pgtap/chinese/chinesePostmanCost/types_check.pg b/pgtap/chinese/chinesePostmanCost/types_check.pg index 8becde73f77..674b8006f37 100644 --- a/pgtap/chinese/chinesePostmanCost/types_check.pg +++ b/pgtap/chinese/chinesePostmanCost/types_check.pg @@ -36,11 +36,9 @@ SELECT set_eq( $$SELECT 701 $$ ); -SELECT set_eq( - $$SELECT proargtypes from pg_proc where proname = 'pgr_chinesepostmancost'$$, - $$SELECT '[0:0]={25}'::OID[] $$ +SELECT function_types_eq('pgr_chinesepostmancost', + $$SELECT '{text}'::TEXT[] $$ ); - SELECT * FROM finish(); ROLLBACK; diff --git a/pgtap/circuits/hawickCircuits/types_check.pg b/pgtap/circuits/hawickCircuits/types_check.pg index b870bb7bda9..7632889d813 100644 --- a/pgtap/circuits/hawickCircuits/types_check.pg +++ b/pgtap/circuits/hawickCircuits/types_check.pg @@ -47,10 +47,9 @@ SELECT set_eq( $$); RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_hawickcircuits'$$, +SELECT function_types_eq('pgr_hawickcircuits', $$VALUES - ('{25,23,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$); END; diff --git a/pgtap/coloring/bipartite/types_check.pg b/pgtap/coloring/bipartite/types_check.pg index bfc4cbf9c74..ed33a94aa65 100644 --- a/pgtap/coloring/bipartite/types_check.pg +++ b/pgtap/coloring/bipartite/types_check.pg @@ -43,10 +43,9 @@ BEGIN ); RETURN QUERY - SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_bipartite'$$, + SELECT function_types_eq('pgr_bipartite', $$VALUES - ('{25,20,20}'::OID[]) + ('{text,int8,int8}'::TEXT[]) $$ ); END; diff --git a/pgtap/coloring/edgeColoring/types_check.pg b/pgtap/coloring/edgeColoring/types_check.pg index ed0559f9667..5773dabd660 100644 --- a/pgtap/coloring/edgeColoring/types_check.pg +++ b/pgtap/coloring/edgeColoring/types_check.pg @@ -43,10 +43,9 @@ BEGIN ); RETURN QUERY - SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_edgecoloring'$$, + SELECT function_types_eq('pgr_edgecoloring', $$VALUES - ('{25,20,20}'::OID[]) + ('{text,int8,int8}'::TEXT[]) $$ ); diff --git a/pgtap/coloring/sequentialVertexColoring/types_check.pg b/pgtap/coloring/sequentialVertexColoring/types_check.pg index db676a9debe..e0c0368b25d 100644 --- a/pgtap/coloring/sequentialVertexColoring/types_check.pg +++ b/pgtap/coloring/sequentialVertexColoring/types_check.pg @@ -43,10 +43,9 @@ BEGIN ); RETURN QUERY - SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_sequentialvertexcoloring'$$, + SELECT function_types_eq('pgr_sequentialvertexcoloring', $$VALUES - ('{25,20,20}'::OID[]) + ('{text,int8,int8}'::TEXT[]) $$ ); END; diff --git a/pgtap/components/articulationPoints/types_check.pg b/pgtap/components/articulationPoints/types_check.pg index eb80c7ca442..01002c53515 100644 --- a/pgtap/components/articulationPoints/types_check.pg +++ b/pgtap/components/articulationPoints/types_check.pg @@ -31,9 +31,8 @@ SELECT set_eq( $$SELECT '{"", "node"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_articulationpoints'$$, - $$SELECT '{25,20}'::OID[] $$ +SELECT function_types_eq('pgr_articulationpoints', + $$SELECT '{text,int8}'::TEXT[] $$ ); SELECT * FROM finish(); diff --git a/pgtap/components/biconnectedComponents/types_check.pg b/pgtap/components/biconnectedComponents/types_check.pg index 9770e657ccd..2112fb0a60b 100644 --- a/pgtap/components/biconnectedComponents/types_check.pg +++ b/pgtap/components/biconnectedComponents/types_check.pg @@ -31,9 +31,8 @@ SELECT set_eq( $$SELECT '{"", "seq","component","edge"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_biconnectedcomponents'$$, - $$SELECT '{25,20,20,20}'::OID[] $$ +SELECT function_types_eq('pgr_biconnectedcomponents', + $$SELECT '{text,int8,int8,int8}'::TEXT[] $$ ); SELECT * FROM finish(); diff --git a/pgtap/components/bridges/types_check.pg b/pgtap/components/bridges/types_check.pg index e9c6797d3ce..68d2e7f9c91 100644 --- a/pgtap/components/bridges/types_check.pg +++ b/pgtap/components/bridges/types_check.pg @@ -31,9 +31,8 @@ SELECT set_eq( $$SELECT '{"", "edge"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_bridges'$$, - $$SELECT '{25,20}'::OID[] $$ +SELECT function_types_eq('pgr_bridges', + $$SELECT '{text,int8}'::TEXT[] $$ ); SELECT * FROM finish(); diff --git a/pgtap/components/connectedComponenes/types_check.pg b/pgtap/components/connectedComponenes/types_check.pg index a5bac50eca0..8ed10268894 100644 --- a/pgtap/components/connectedComponenes/types_check.pg +++ b/pgtap/components/connectedComponenes/types_check.pg @@ -30,9 +30,8 @@ SELECT set_eq( $$SELECT '{"", "seq","component","node"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_connectedcomponents'$$, - $$SELECT '{25,20,20,20}'::OID[] $$ +SELECT function_types_eq('pgr_connectedcomponents', + $$SELECT '{text,int8,int8,int8}'::TEXT[] $$ ); SELECT * FROM finish(); diff --git a/pgtap/components/makeConnected/types_check.pg b/pgtap/components/makeConnected/types_check.pg index bb36128492d..af6e7fdbfbd 100644 --- a/pgtap/components/makeConnected/types_check.pg +++ b/pgtap/components/makeConnected/types_check.pg @@ -42,10 +42,9 @@ BEGIN ); RETURN QUERY - SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_makeconnected'$$, + SELECT function_types_eq('pgr_makeconnected', $$VALUES - ('{25,20,20,20}'::OID[]) + ('{text,int8,int8,int8}'::TEXT[]) $$ ); END; diff --git a/pgtap/components/strongComponenets/types_check.pg b/pgtap/components/strongComponenets/types_check.pg index 3b5a7f79ddb..ad4a4f1a70e 100644 --- a/pgtap/components/strongComponenets/types_check.pg +++ b/pgtap/components/strongComponenets/types_check.pg @@ -31,9 +31,8 @@ SELECT set_eq( $$SELECT '{"", "seq","component","node"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_strongcomponents'$$, - $$SELECT '{25,20,20,20}'::OID[] $$ +SELECT function_types_eq('pgr_strongcomponents', + $$SELECT '{text,int8,int8,int8}'::TEXT[] $$ ); SELECT * FROM finish(); diff --git a/pgtap/contraction/contraction/types_check.pg b/pgtap/contraction/contraction/types_check.pg index f5650b3004f..2141e9e52d5 100644 --- a/pgtap/contraction/contraction/types_check.pg +++ b/pgtap/contraction/contraction/types_check.pg @@ -36,7 +36,7 @@ BEGIN ('{"",directed,methods,cycles,forbidden,type,id,contracted_vertices,source,target,cost}'::TEXT[]) $$,'pgr_contraction: Column names'); - RETURN QUERY SELECT function_types('pgr_contraction', + RETURN QUERY SELECT function_types_eq('pgr_contraction', $$VALUES ('{text,bool,_int4,int4,_int8,text,int8,_int8,int8,int8,float8}'::TEXT[]), ('{text,_int8,int4,_int8,bool,text,int8,_int8,int8,int8,float8}'::TEXT[]) $$); @@ -48,9 +48,8 @@ BEGIN ('{"", "", "max_cycles", "forbidden_vertices", "directed", "type", "id", "contracted_vertices", "source", "target", "cost"}'::TEXT[]) $$); - RETURN QUERY SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_contraction'$$, - $$SELECT '{25,1016,23,1016,16,25,20,1016,20,20,701}'::OID[] $$ + RETURN QUERY SELECT function_types_eq('pgr_contraction', + $$SELECT '{text,_int8,int4,_int8,bool,text,int8,_int8,int8,int8,float8}'::TEXT[] $$ ); END IF; diff --git a/pgtap/contraction/contractionDeadEnd/types_check.pg b/pgtap/contraction/contractionDeadEnd/types_check.pg index cff291a86e5..0cd24b9d50b 100644 --- a/pgtap/contraction/contractionDeadEnd/types_check.pg +++ b/pgtap/contraction/contractionDeadEnd/types_check.pg @@ -40,7 +40,7 @@ BEGIN ('{"","directed","forbidden","type","id","contracted_vertices","source","target","cost"}'::TEXT[]) $$); - RETURN QUERY SELECT function_types('pgr_contractiondeadend', + RETURN QUERY SELECT function_types_eq('pgr_contractiondeadend', $$VALUES ('{text,bool,_int8,text,int8,_int8,int8,int8,float8}'::TEXT[]) $$); END; diff --git a/pgtap/contraction/contractionLinear/types_check.pg b/pgtap/contraction/contractionLinear/types_check.pg index f40ea19975d..f94984ec22b 100644 --- a/pgtap/contraction/contractionLinear/types_check.pg +++ b/pgtap/contraction/contractionLinear/types_check.pg @@ -40,7 +40,7 @@ BEGIN ('{"",directed,forbidden,type,id,contracted_vertices,source,target,cost}'::TEXT[]) $$,'pgr_contractionlinear: Column names'); - RETURN QUERY SELECT function_types('pgr_contractionlinear', + RETURN QUERY SELECT function_types_eq('pgr_contractionlinear', $$VALUES ('{text,bool,_int8,text,int8,_int8,int8,int8,float8}'::TEXT[]) $$); END; diff --git a/pgtap/dijkstra/dijkstraCost/types_check.pg b/pgtap/dijkstra/dijkstraCost/types_check.pg index 1704cbae5bb..4ecb879e6ad 100644 --- a/pgtap/dijkstra/dijkstraCost/types_check.pg +++ b/pgtap/dijkstra/dijkstraCost/types_check.pg @@ -60,14 +60,13 @@ WHEN min_version('3.1.0') THEN ('{"","","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]), ('{"","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_dijkstracost'$$, + function_types_eq('pgr_dijkstracost', $$VALUES - ('{25,25,16,20,20,701}'::OID[]), - ('{25,20,20,16,20,20,701}'::OID[]), - ('{25,20,2277,16,20,20,701}'::OID[]), - ('{25,2277,20,16,20,20,701}'::OID[]), - ('{25,2277,2277,16,20,20,701}'::OID[]) + ('{text,text,bool,int8,int8,float8}'::TEXT[]), + ('{text,int8,int8,bool,int8,int8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int8,int8,float8}'::TEXT[]) $$) ) ELSE @@ -80,13 +79,12 @@ ELSE ('{"","","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]), ('{"","","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_dijkstracost'$$, + function_types_eq('pgr_dijkstracost', $$VALUES - ('{25,20,20,16,20,20,701}'::OID[]), - ('{25,20,2277,16,20,20,701}'::OID[]), - ('{25,2277,20,16,20,20,701}'::OID[]), - ('{25,2277,2277,16,20,20,701}'::OID[]) + ('{text,int8,int8,bool,int8,int8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int8,int8,float8}'::TEXT[]) $$) ) END; diff --git a/pgtap/dijkstra/dijkstraCostMatrix/types_check.pg b/pgtap/dijkstra/dijkstraCostMatrix/types_check.pg index bf6bd77811e..08bd04742c1 100644 --- a/pgtap/dijkstra/dijkstraCostMatrix/types_check.pg +++ b/pgtap/dijkstra/dijkstraCostMatrix/types_check.pg @@ -31,10 +31,9 @@ SELECT set_eq( ('{"","","directed","start_vid","end_vid","agg_cost"}'::TEXT[]) $$); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_dijkstracostmatrix'$$, +SELECT function_types_eq('pgr_dijkstracostmatrix', $$VALUES - ('{25,2277,16,20,20,701}'::OID[]) + ('{text,anyarray,bool,int8,int8,float8}'::TEXT[]) $$); SELECT finish(); diff --git a/pgtap/dijkstra/dijkstraNear/types_check.pg b/pgtap/dijkstra/dijkstraNear/types_check.pg index 1153e77e15f..8cc8e5fa28d 100644 --- a/pgtap/dijkstra/dijkstraNear/types_check.pg +++ b/pgtap/dijkstra/dijkstraNear/types_check.pg @@ -60,13 +60,12 @@ SELECT set_eq( -- parameter types RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_dijkstranear'$$, +SELECT function_types_eq('pgr_dijkstranear', $$VALUES - ('{25,2277,20,16,20,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,20,16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,16,20,16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,20,2277,16,20,23,23,20,20,20,20,701,701}'::OID[]); + ('{text,anyarray,int8,bool,int8,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int8,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,bool,int8,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int8,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]); $$ ); END; diff --git a/pgtap/dijkstra/dijkstraNearCost/types_check.pg b/pgtap/dijkstra/dijkstraNearCost/types_check.pg index dec4f6077a5..aec84c3e6f9 100644 --- a/pgtap/dijkstra/dijkstraNearCost/types_check.pg +++ b/pgtap/dijkstra/dijkstraNearCost/types_check.pg @@ -60,13 +60,12 @@ SELECT set_eq( -- parameter types RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_dijkstranearcost'$$, +SELECT function_types_eq('pgr_dijkstranearcost', $$VALUES - ('{25,2277,20,16,20,20,20,701}'::OID[]), - ('{25,25,16,20,16,20,20,701}'::OID[]), - ('{25,20,2277,16,20,20,20,701}'::OID[]), - ('{25,2277,2277,16,20,16,20,20,701}'::OID[]); + ('{text,anyarray,int8,bool,int8,int8,int8,float8}'::TEXT[]), + ('{text,text,bool,int8,bool,int8,int8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int8,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int8,bool,int8,int8,float8}'::TEXT[]); $$ ); END; diff --git a/pgtap/dijkstra/driving_distance/types_check.pg b/pgtap/dijkstra/driving_distance/types_check.pg index 0068a8629f2..5e4fc1066e2 100644 --- a/pgtap/dijkstra/driving_distance/types_check.pg +++ b/pgtap/dijkstra/driving_distance/types_check.pg @@ -44,11 +44,10 @@ SELECT set_eq( $$); RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$, +SELECT function_types_eq('pgr_drivingdistance', $$VALUES - ('{25,20,701,16,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,701,16,16,20,20,20,20,20,20,701,701}'::OID[]) + ('{text,int8,float8,bool,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,float8,bool,bool,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$); ELSE -- old signatures @@ -61,11 +60,10 @@ SELECT set_eq( $$); RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_drivingdistance'$$, +SELECT function_types_eq('pgr_drivingdistance', $$VALUES - ('{25,20,701,16,23,20,20,701,701}'::OID[]), - ('{25,2277,701,16,16,23,20,20,20,701,701}'::OID[]) + ('{text,int8,float8,bool,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,float8,bool,bool,int4,int8,int8,int8,float8,float8}'::TEXT[]) $$); END IF; END; diff --git a/pgtap/dominator/lengauerTarjanDominatorTree/types_check.pg b/pgtap/dominator/lengauerTarjanDominatorTree/types_check.pg index 891ffad12f4..1f78f67c624 100644 --- a/pgtap/dominator/lengauerTarjanDominatorTree/types_check.pg +++ b/pgtap/dominator/lengauerTarjanDominatorTree/types_check.pg @@ -1,4 +1,3 @@ - /*PGR-GNU***************************************************************** Copyright (c) 2018 pgRouting developers @@ -44,12 +43,11 @@ SELECT bag_has( ); RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_lengauertarjandominatortree'$$, +SELECT function_types_eq('pgr_lengauertarjandominatortree', $$VALUES - ('{25,20,23,20,20}'::OID[]) - $$ -); + ('{text,int8,int4,int8,int8}'::TEXT[]) + $$); + END; $BODY$ LANGUAGE plpgsql; diff --git a/pgtap/ksp/ksp/types_check.pg b/pgtap/ksp/ksp/types_check.pg index 53b433fde9e..bfa3667a902 100644 --- a/pgtap/ksp/ksp/types_check.pg +++ b/pgtap/ksp/ksp/types_check.pg @@ -51,14 +51,13 @@ BEGIN ('{"","","","directed","heap_paths","seq","path_id","path_seq",start_vid,end_vid,"node","edge","cost","agg_cost"}'::TEXT[]), ('{"","","","","directed","heap_paths","seq","path_id","path_seq",start_vid,end_vid,"node","edge","cost","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes FROM pg_proc WHERE proname = 'pgr_ksp'$$, + function_types_eq('pgr_ksp', $$VALUES - ('{25,25,23,16,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,20,20,23,16,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,20,2277,23,16,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,2277,20,23,16,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,23,16,16,23,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,text,int4,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,int8,int4,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,int4,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,int4,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,int4,bool,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ) ) @@ -68,9 +67,8 @@ BEGIN $$SELECT proargnames from pg_proc WHERE proname = 'pgr_ksp'$$, $$SELECT '{"","","","","directed","heap_paths","seq","path_id","path_seq","node","edge","cost","agg_cost"}'::TEXT[] $$ ), - set_eq( - $$SELECT proallargtypes FROM pg_proc WHERE proname = 'pgr_ksp'$$, - $$SELECT '{25,20,20,23,16,16,23,23,23,20,20,701,701}'::OID[] $$ + function_types_eq('pgr_ksp', + $$SELECT '{text,int8,int8,int4,bool,bool,int4,int4,int4,int8,int8,float8,float8}'::TEXT[] $$ ) ) END; diff --git a/pgtap/ksp/turnRestrictedPath/types_check.pg b/pgtap/ksp/turnRestrictedPath/types_check.pg index f8c6b8c5ee0..76eb1145a04 100644 --- a/pgtap/ksp/turnRestrictedPath/types_check.pg +++ b/pgtap/ksp/turnRestrictedPath/types_check.pg @@ -31,9 +31,8 @@ SELECT set_eq( $$SELECT '{"","","","","","directed","heap_paths","stop_on_first","strict","seq","path_id","path_seq","node","edge","cost","agg_cost"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes FROM pg_proc WHERE proname = 'pgr_turnrestrictedpath'$$, - $$SELECT '{25,25,20,20,23,16,16,16,16,23,23,23,20,20,701,701}'::OID[] $$ +SELECT function_types_eq('pgr_turnrestrictedpath', + $$SELECT '{text,text,int8,int8,int4,bool,bool,bool,bool,int4,int4,int4,int8,int8,float8,float8}'::TEXT[] $$ ); SELECT finish(); ROLLBACK; diff --git a/pgtap/ksp/withPointsKSP/types_check.pg b/pgtap/ksp/withPointsKSP/types_check.pg index cc1427d654e..a7625320e66 100644 --- a/pgtap/ksp/withPointsKSP/types_check.pg +++ b/pgtap/ksp/withPointsKSP/types_check.pg @@ -48,15 +48,15 @@ BEGIN ('{"","","","","","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[]) $$), - set_eq( - $$SELECT proallargtypes FROM pg_proc WHERE proname = 'pgr_withpointsksp'$$, + + function_types_eq('pgr_withpointsksp', $$VALUES - ('{25,25,20,20,23,1042,16,16,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,20,2277,23,1042,16,16,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,2277,20,23,1042,16,16,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,2277,2277,23,1042,16,16,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,25,23,1042,16,16,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,20,20,23,16,16,1042,16,23,23,23,20,20,701,701}'::OID[]) + ('{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( @@ -64,9 +64,9 @@ BEGIN $$SELECT proargnames from pg_proc WHERE proname = 'pgr_withpointsksp'$$, $$SELECT '{"","","","","","directed","heap_paths","driving_side","details","seq","path_id","path_seq","node","edge","cost","agg_cost"}'::TEXT[] $$ ), - set_eq( - $$SELECT proallargtypes FROM pg_proc WHERE proname = 'pgr_withpointsksp'$$, - $$SELECT '{25,25,20,20,23,16,16,1042,16,23,23,23,20,20,701,701}'::OID[] $$ + + function_types_eq('pgr_withpointsksp', + $$SELECT '{text,text,int8,int8,int4,bool,bool,bpchar,bool,int4,int4,int4,int8,int8,float8,float8}'::TEXT[] $$ ) )END; diff --git a/pgtap/lineGraph/lineGraph/types_check.pg b/pgtap/lineGraph/lineGraph/types_check.pg index d2275ee7e10..c420944e7b5 100644 --- a/pgtap/lineGraph/lineGraph/types_check.pg +++ b/pgtap/lineGraph/lineGraph/types_check.pg @@ -30,9 +30,8 @@ SELECT set_eq( $$SELECT '{"","directed","seq","source","target","cost","reverse_cost"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes FROM pg_proc WHERE proname = 'pgr_linegraph'$$, - $$SELECT '{25,16,23,20,20,701,701}'::OID[] $$ +SELECT function_types_eq('pgr_linegraph', + $$SELECT '{text,bool,int4,int8,int8,float8,float8}'::TEXT[] $$ ); SELECT finish(); diff --git a/pgtap/lineGraph/lineGraphFull/types_check.pg b/pgtap/lineGraph/lineGraphFull/types_check.pg index 1fec6734916..6a25b78c4d7 100644 --- a/pgtap/lineGraph/lineGraphFull/types_check.pg +++ b/pgtap/lineGraph/lineGraphFull/types_check.pg @@ -30,9 +30,8 @@ SELECT set_eq( $$SELECT '{"","seq","source","target","cost","edge"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes FROM pg_proc WHERE proname = 'pgr_linegraphfull'$$, - $$SELECT '{25,23,20,20,701,20}'::OID[] $$ +SELECT function_types_eq('pgr_linegraphfull', + $$SELECT '{text,int4,int8,int8,float8,int8}'::TEXT[] $$ ); SELECT finish(); diff --git a/pgtap/max_flow/edgedisjointpaths/types_check.pg b/pgtap/max_flow/edgedisjointpaths/types_check.pg index 6bbe585d564..433c3ef1ed4 100644 --- a/pgtap/max_flow/edgedisjointpaths/types_check.pg +++ b/pgtap/max_flow/edgedisjointpaths/types_check.pg @@ -57,14 +57,13 @@ WHEN min_version('3.2.0') THEN ('{"","","directed","seq","path_id","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_edgedisjointpaths'$$, + function_types_eq('pgr_edgedisjointpaths', $$VALUES - ('{25,20,20,16,23,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,16,23,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int4,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$) ) ELSE @@ -78,13 +77,12 @@ ELSE ('{"","","","directed","seq","path_id","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_edgedisjointpaths'$$, + function_types_eq('pgr_edgedisjointpaths', $$VALUES - ('{25,20,20,16,23,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int4,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$) ) END; diff --git a/pgtap/max_flow/maxCardinalityMatch/types_check.pg b/pgtap/max_flow/maxCardinalityMatch/types_check.pg index deed03cae60..d649b0d7306 100644 --- a/pgtap/max_flow/maxCardinalityMatch/types_check.pg +++ b/pgtap/max_flow/maxCardinalityMatch/types_check.pg @@ -40,11 +40,10 @@ WHEN min_version('3.4.0') THEN $$ ), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_maxcardinalitymatch'$$, + function_types_eq('pgr_maxcardinalitymatch', $$VALUES - ('{25,16,23,20,20,20}'::OID[]), - ('{25,20}'::OID[]) + ('{text,bool,int4,int8,int8,int8}'::TEXT[]), + ('{text,int8}'::TEXT[]) $$ )) ELSE @@ -54,9 +53,8 @@ ELSE $$SELECT '{"","directed","seq","edge","source","target"}'::TEXT[]$$ ), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_maxcardinalitymatch'$$, - $$SELECT '{25,16,23,20,20,20}'::OID[]$$ + function_types_eq('pgr_maxcardinalitymatch', + $$SELECT '{text,bool,int4,int8,int8,int8}'::TEXT[]$$ )) END; diff --git a/pgtap/max_flow/maxFlow/types_check.pg b/pgtap/max_flow/maxFlow/types_check.pg index b41c10b1cfe..78a4f238869 100644 --- a/pgtap/max_flow/maxFlow/types_check.pg +++ b/pgtap/max_flow/maxFlow/types_check.pg @@ -20,7 +20,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 plan(14); +SELECT plan(13); SELECT has_function('pgr_maxflow'); @@ -48,30 +48,26 @@ SELECT set_eq( $$SELECT proargnames FROM pg_proc WHERE proname = 'pgr_maxflow'$$, $$SELECT NULL::TEXT[] $$); -SELECT set_eq( - $$SELECT prorettype FROM pg_proc WHERE proname = 'pgr_maxflow'$$, - $$SELECT 20::OID $$); - SELECT CASE WHEN min_version('3.2.0') THEN - set_eq( - $$SELECT array(SELECT unnest(proargtypes)) FROM pg_proc WHERE proname = 'pgr_maxflow'$$, + + function_types_eq('pgr_maxflow', $$VALUES - ('{25,25}'::OID[]), - ('{25,20,20}'::OID[]), - ('{25,20,2277}'::OID[]), - ('{25,2277,20}'::OID[]), - ('{25,2277,2277}'::OID[]) - $$ - ) + ('{text,text}'::TEXT[]), + ('{text,int8,int8}'), + ('{text,int8,anyarray}'), + ('{text,anyarray,int8}'), + ('{text,anyarray,anyarray}') + $$) + ELSE - set_eq( - $$SELECT array(SELECT unnest(proargtypes)) FROM pg_proc WHERE proname = 'pgr_maxflow'$$, + + function_types_eq('pgr_maxflow', $$VALUES - ('{25,20,20}'::OID[]), - ('{25,20,2277}'::OID[]), - ('{25,2277,20}'::OID[]), - ('{25,2277,2277}'::OID[]) + ('{text,int8,int8}'::TEXT[]), + ('{text,int8,anyarray}'), + ('{text,anyarray,int8}'), + ('{text,anyarray,anyarray}') $$) END; diff --git a/pgtap/max_flow/maxFlowMinCost/types_check.pg b/pgtap/max_flow/maxFlowMinCost/types_check.pg index 4911aebfd0c..aa17987a14a 100644 --- a/pgtap/max_flow/maxFlowMinCost/types_check.pg +++ b/pgtap/max_flow/maxFlowMinCost/types_check.pg @@ -60,14 +60,14 @@ WHEN min_version('3.2.0') THEN ('{"","","","seq","edge","source","target","flow","residual_capacity","cost","agg_cost"}'::TEXT[]), ('{"","","seq","edge","source","target","flow","residual_capacity","cost","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_maxflowmincost'$$, + + function_types_eq('pgr_maxflowmincost', $$VALUES - ('{25,20,20,23,20,20,20,20,20,701,701}'::OID[]), - ('{25,20,2277,23,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,20,23,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,23,20,20,20,20,20,701,701}'::OID[]), - ('{25,25,23,20,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,int4,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,int4,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,int4,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,int4,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,int4,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$) ) ELSE @@ -80,13 +80,13 @@ ELSE ('{"","","","seq","edge","source","target","flow","residual_capacity","cost","agg_cost"}'::TEXT[]), ('{"","","","seq","edge","source","target","flow","residual_capacity","cost","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_maxflowmincost'$$, + + function_types_eq('pgr_maxflowmincost', $$VALUES - ('{25,20,20,23,20,20,20,20,20,701,701}'::OID[]), - ('{25,20,2277,23,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,20,23,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,23,20,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,int4,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,int4,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,int4,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,int4,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$) ) END; diff --git a/pgtap/max_flow/maxFlowMinCost_Cost/types_check.pg b/pgtap/max_flow/maxFlowMinCost_Cost/types_check.pg index c278fa4a080..2e83c74158c 100644 --- a/pgtap/max_flow/maxFlowMinCost_Cost/types_check.pg +++ b/pgtap/max_flow/maxFlowMinCost_Cost/types_check.pg @@ -1,4 +1,3 @@ - /*PGR-GNU***************************************************************** Copyright (c) 2018 pgRouting developers @@ -19,7 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ********************************************************************PGR-GNU*/ BEGIN; -SELECT plan(14); +SELECT plan(13); SELECT has_function('pgr_maxflowmincost_cost'); @@ -47,29 +46,23 @@ SELECT set_eq( $$SELECT proargnames FROM pg_proc WHERE proname = 'pgr_maxflowmincost_cost'$$, $$SELECT NULL::TEXT[] $$); -SELECT set_eq( - $$SELECT prorettype FROM pg_proc WHERE proname = 'pgr_maxflowmincost_cost'$$, - $$SELECT 701::OID $$); - SELECT CASE WHEN min_version('3.2.0') THEN - set_eq( - $$SELECT array(SELECT unnest(proargtypes)) FROM pg_proc WHERE proname = 'pgr_maxflowmincost_cost'$$, + function_types_eq('pgr_maxflow', $$VALUES - ('{25,25}'::OID[]), - ('{25,20,20}'::OID[]), - ('{25,20,2277}'::OID[]), - ('{25,2277,20}'::OID[]), - ('{25,2277,2277}'::OID[]) + ('{text,text}'::TEXT[]), + ('{text,int8,int8}'), + ('{text,int8,anyarray}'), + ('{text,anyarray,int8}'), + ('{text,anyarray,anyarray}') $$) ELSE - set_eq( - $$SELECT array(SELECT unnest(proargtypes)) FROM pg_proc WHERE proname = 'pgr_maxflowmincost_cost'$$, + function_types_eq('pgr_maxflow', $$VALUES - ('{25,20,20}'::OID[]), - ('{25,20,2277}'::OID[]), - ('{25,2277,20}'::OID[]), - ('{25,2277,2277}'::OID[]) + ('{text,int8,int8}'::TEXT[]), + ('{text,int8,anyarray}'), + ('{text,anyarray,int8}'), + ('{text,anyarray,anyarray}') $$) END; diff --git a/pgtap/metrics/betweennessCentrality/types_check.pg b/pgtap/metrics/betweennessCentrality/types_check.pg index 032556df946..def9d24b70e 100644 --- a/pgtap/metrics/betweennessCentrality/types_check.pg +++ b/pgtap/metrics/betweennessCentrality/types_check.pg @@ -47,10 +47,9 @@ SELECT set_eq( $$); RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_betweennesscentrality'$$, +SELECT function_types_eq('pgr_betweennesscentrality', $$VALUES - ('{25,16,20,701}'::OID[]) + ('{text,bool,int8,float8}'::TEXT[]) $$); END; diff --git a/pgtap/metrics/degree/types_check.pg b/pgtap/metrics/degree/types_check.pg index 7c242e33053..26b0b3c027b 100644 --- a/pgtap/metrics/degree/types_check.pg +++ b/pgtap/metrics/degree/types_check.pg @@ -48,11 +48,11 @@ BEGIN ('{"","","dryrun","node","degree"}'::TEXT[]) $$, 'proargnames'), - set_eq($$SELECT proallargtypes from pg_proc where proname = 'pgr_degree'$$, + function_types_eq('pgr_degree', $$VALUES - ('{25,16,20,20}'::OID[]), - ('{25,25,16,20,20}'::OID[]) - $$, 'proallargtypes') + ('{text,bool,int8,int8}'::TEXT[]), + ('{text,text,bool,int8,int8}'::TEXT[]) + $$) ) ELSE collect_tap( @@ -60,8 +60,8 @@ BEGIN set_eq($$SELECT proargnames from pg_proc where proname = 'pgr_degree'$$, $$VALUES ('{"","","dryrun","node","degree"}'::TEXT[]) $$, 'proargnames'), - set_eq($$SELECT proallargtypes from pg_proc where proname = 'pgr_degree'$$, - $$VALUES ('{25,25,16,20,20}'::OID[])$$, 'proallargtypes') + function_types_eq('pgr_degree', + $$VALUES ('{text,text,bool,int8,int8}'::TEXT[])$$) ) END; diff --git a/pgtap/mincut/stoerWagner/types_check.pg b/pgtap/mincut/stoerWagner/types_check.pg index 5be2ceec020..22d2673174f 100644 --- a/pgtap/mincut/stoerWagner/types_check.pg +++ b/pgtap/mincut/stoerWagner/types_check.pg @@ -33,10 +33,9 @@ SELECT set_eq( ('{"","seq","edge","cost","mincut"}'::TEXT[]) $$); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_stoerwagner'$$, +SELECT function_types_eq('pgr_stoerwagner', $$VALUES - ('{25,23,20,701,701}'::OID[]) + ('{text,int4,int8,float8,float8}'::TEXT[]) $$);; SELECT finish(); diff --git a/pgtap/ordering/cuthillMckeeOrdering/types_check.pg b/pgtap/ordering/cuthillMckeeOrdering/types_check.pg index 6740e8ee377..10d0424fabc 100644 --- a/pgtap/ordering/cuthillMckeeOrdering/types_check.pg +++ b/pgtap/ordering/cuthillMckeeOrdering/types_check.pg @@ -43,10 +43,9 @@ BEGIN ); RETURN QUERY - SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_cuthillmckeeordering'$$, + SELECT function_types_eq('pgr_cuthillmckeeordering', $$VALUES - ('{25,20,20}'::OID[]) + ('{text,int8,int8}'::TEXT[]) $$ ); END; diff --git a/pgtap/ordering/topologicalSort/inner_query.pg b/pgtap/ordering/topologicalSort/inner_query.pg new file mode 100644 index 00000000000..d817dabb291 --- /dev/null +++ b/pgtap/ordering/topologicalSort/inner_query.pg @@ -0,0 +1,28 @@ + +/*PGR-GNU***************************************************************** + +Copyright (c) 2018 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +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; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT plan(24); + +SELECT style_dijkstra('pgr_topologicalsort(',')'); + +SELECT finish(); +ROLLBACK; diff --git a/pgtap/ordering/topologicalSort/no_crash_test.pg b/pgtap/ordering/topologicalSort/no_crash_test.pg new file mode 100644 index 00000000000..cd7578c73af --- /dev/null +++ b/pgtap/ordering/topologicalSort/no_crash_test.pg @@ -0,0 +1,76 @@ + +/*PGR-GNU***************************************************************** + +Copyright (c) 2018 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +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; + +UPDATE edges SET cost = sign(cost), reverse_cost = sign(reverse_cost); +SELECT plan(5); + +CREATE TABLE edges1 ( + id serial, + source integer, + target integer, + cost double precision, + reverse_cost double precision +); +INSERT INTO edges1 (source,target,cost,reverse_cost) VALUES ( 1, 2,0,0); +INSERT INTO edges1 (source,target,cost,reverse_cost) VALUES (2,3,0,0); + +SELECT has_function('pgr_topologicalsort'); + +SELECT function_returns('pgr_topologicalsort', ARRAY['text'], 'setof record'); + +-- flags +-- error +SELECT throws_ok( + 'SELECT * FROM pgr_topologicalsort( + ''SELECT id, source, target, cost, reverse_cost FROM edges id < 2'', + 3 + )','42883','function pgr_topologicalsort(unknown, integer) does not exist', + '6: Documentation says it does not work with 1 flags'); + + +SELECT lives_ok( + 'SELECT * FROM pgr_topologicalsort( + ''SELECT id, source, target, cost, reverse_cost FROM edges WHERE id = 2 '' + )', + '4: Documentation says works with no flags'); + + +-- prepare for testing return types + +PREPARE all_return AS +SELECT + 'integer'::text AS t1, + 'bigint'::text AS t2; + +PREPARE q1 AS +SELECT pg_typeof(seq)::text AS t1, + pg_typeof(sorted_v)::text AS t2 + FROM ( + SELECT * FROM pgr_topologicalsort( + 'SELECT id, source, target, cost, reverse_cost FROM edges WHERE id = 2' + ) ) AS a + limit 1; + + +SELECT set_eq('q1', 'all_return', 'Expected returning, columns names & types'); + +SELECT * FROM finish(); +ROLLBACK; diff --git a/pgtap/ordering/topologicalSort/types_check.pg b/pgtap/ordering/topologicalSort/types_check.pg new file mode 100644 index 00000000000..e81d57863cc --- /dev/null +++ b/pgtap/ordering/topologicalSort/types_check.pg @@ -0,0 +1,53 @@ + +/*PGR-GNU***************************************************************** + +Copyright (c) 2018 pgRouting developers +Mail: project@pgrouting.org + +------ +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +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 plan(5); + +CREATE OR REPLACE FUNCTION types_check() +RETURNS SETOF TEXT AS +$BODY$ +BEGIN + + RETURN QUERY SELECT has_function('pgr_topologicalsort'); + RETURN QUERY SELECT has_function('pgr_topologicalsort', ARRAY['text']); + RETURN QUERY SELECT function_returns('pgr_topologicalsort', ARRAY['text'], 'setof record'); + + RETURN QUERY + SELECT bag_has( + $$SELECT proargnames from pg_proc where proname = 'pgr_topologicalsort'$$, + $$SELECT '{"","seq","sorted_v"}'::TEXT[] $$ + ); + + RETURN QUERY + SELECT function_types_eq('pgr_topologicalsort', + $$VALUES + ('{text,int4,int8}'::TEXT[]) + $$ + ); + +END; +$BODY$ +LANGUAGE plpgsql; + +SELECT types_check(); + +SELECT * FROM finish(); +ROLLBACK; diff --git a/pgtap/pickDeliver/pickDeliver/types_check.pg b/pgtap/pickDeliver/pickDeliver/types_check.pg index 07736262eb3..f9a0f169f3d 100644 --- a/pgtap/pickDeliver/pickDeliver/types_check.pg +++ b/pgtap/pickDeliver/pickDeliver/types_check.pg @@ -33,10 +33,10 @@ SELECT set_eq( "travel_time","arrival_time","wait_time","service_time","departure_time"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_pickdeliver'$$, - $$SELECT '{25,25,25,701,23,23,23,23,20,23,23,20,20,701,701,701,701,701,701}'::OID[] $$ -); +SELECT function_types_eq('pgr_pickdeliver', + $$SELECT + '{text,text,text,float8,int4,int4,int4,int4,int8,int4,int4,int8,int8,float8,float8,float8,float8,float8,float8}'::TEXT[] + $$); SELECT finish(); ROLLBACK; diff --git a/pgtap/pickDeliver/pickDeliverEuclidean/types_check.pg b/pgtap/pickDeliver/pickDeliverEuclidean/types_check.pg index 1ff747be0a5..b492428484e 100644 --- a/pgtap/pickDeliver/pickDeliverEuclidean/types_check.pg +++ b/pgtap/pickDeliver/pickDeliverEuclidean/types_check.pg @@ -34,10 +34,10 @@ SELECT bag_has( "travel_time","arrival_time","wait_time","service_time","departure_time"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_pickdelivereuclidean'$$, - $$SELECT '{25,25,701,23,23,23,23,20,23,23,20,701,701,701,701,701,701}'::OID[] $$ -); +SELECT function_types_eq('pgr_pickdelivereuclidean', + $$SELECT + '{text,text,float8,int4,int4,int4,int4,int8,int4,int4,int8,float8,float8,float8,float8,float8,float8}'::TEXT[] + $$); SELECT finish(); ROLLBACK; diff --git a/pgtap/topology/analyzeGraph/types_check.pg b/pgtap/topology/analyzeGraph/types_check.pg index 660f9517823..0542bf22820 100644 --- a/pgtap/topology/analyzeGraph/types_check.pg +++ b/pgtap/topology/analyzeGraph/types_check.pg @@ -30,9 +30,9 @@ SELECT set_eq( $$SELECT '{"","","the_geom","id","source","target","rows_where"}'::TEXT[]$$ ); -SELECT set_eq( - $$SELECT proargtypes from pg_proc where proname = 'pgr_analyzegraph'$$, - $$SELECT '[0:6]={25,701,25,25,25,25,25}'::OID[]$$ + +SELECT function_types_eq('pgr_analyzegraph', + $$SELECT '{text,float8,text,text,text,text,text}'::TEXT[]$$ ); SELECT set_eq( diff --git a/pgtap/topology/analyzeOneWay/types_check.pg b/pgtap/topology/analyzeOneWay/types_check.pg index 6bd2ea2435b..9f48cebecc5 100644 --- a/pgtap/topology/analyzeOneWay/types_check.pg +++ b/pgtap/topology/analyzeOneWay/types_check.pg @@ -30,9 +30,8 @@ SELECT set_eq( $$SELECT '{"","","","","","two_way_if_null","oneway","source","target"}'::TEXT[]$$ ); -SELECT set_eq( - $$SELECT proargtypes from pg_proc where proname = 'pgr_analyzeoneway'$$, - $$SELECT '[0:8]={25,1009,1009,1009,1009,16,25,25,25}'::OID[]$$ +SELECT function_types_eq('pgr_analyzeoneway', + $$SELECT '{text,_text,_text,_text,_text,bool,text,text,text}'::TEXT[]$$ ); SELECT set_eq( diff --git a/pgtap/topology/createTopology/types_check.pg b/pgtap/topology/createTopology/types_check.pg index 5d0c5bd0857..d6dceba3c8d 100644 --- a/pgtap/topology/createTopology/types_check.pg +++ b/pgtap/topology/createTopology/types_check.pg @@ -30,9 +30,8 @@ SELECT set_eq( $$SELECT '{"","","the_geom","id","source","target","rows_where","clean"}'::TEXT[]$$ ); -SELECT set_eq( - $$SELECT proargtypes from pg_proc where proname = 'pgr_createtopology'$$, - $$SELECT '[0:7]={25,701,25,25,25,25,25,16}'::OID[]$$ +SELECT function_types_eq('pgr_createtopology', + $$SELECT '{text,float8,text,text,text,text,text,bool}'::TEXT[]$$ ); SELECT set_eq( diff --git a/pgtap/topology/createVerticesTable/types_check.pg b/pgtap/topology/createVerticesTable/types_check.pg index 5854342e35b..c1e2649b00a 100644 --- a/pgtap/topology/createVerticesTable/types_check.pg +++ b/pgtap/topology/createVerticesTable/types_check.pg @@ -30,9 +30,8 @@ SELECT set_eq( $$SELECT '{"","the_geom","source","target","rows_where"}'::TEXT[]$$ ); -SELECT set_eq( - $$SELECT proargtypes from pg_proc where proname = 'pgr_createverticestable'$$, - $$SELECT '[0:4]={25,25,25,25,25}'::OID[]$$ +SELECT function_types_eq('pgr_createverticestable', + $$SELECT '{text,text,text,text,text}'::TEXT[]$$ ); SELECT set_eq( diff --git a/pgtap/topology/extractVertices/types_check.pg b/pgtap/topology/extractVertices/types_check.pg index 19205416910..1da11a6f4b4 100644 --- a/pgtap/topology/extractVertices/types_check.pg +++ b/pgtap/topology/extractVertices/types_check.pg @@ -30,13 +30,8 @@ SELECT set_eq( $$SELECT '{"","dryrun","id","in_edges","out_edges","x","y","geom"}'::TEXT[] $$ ); -PREPARE fn_types AS -SELECT ARRAY[25,16,20,1016,1016,701,701,oid] FROM pg_type WHERE typname = 'geometry'; - -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_extractvertices'$$, - $$fn_types$$ -); +SELECT function_types_eq('pgr_extractvertices', + $$VALUES ('{text,bool,int8,_int8,_int8,float8,float8,geometry}'::TEXT[]) $$); SELECT finish(); diff --git a/pgtap/topology/nodeNetwork/types_check.pg b/pgtap/topology/nodeNetwork/types_check.pg index f8b181c07b2..5e9e37ed090 100644 --- a/pgtap/topology/nodeNetwork/types_check.pg +++ b/pgtap/topology/nodeNetwork/types_check.pg @@ -30,9 +30,8 @@ SELECT set_eq( $$SELECT '{"","","id","the_geom","table_ending","rows_where","outall"}'::TEXT[]$$ ); -SELECT set_eq( - $$SELECT proargtypes from pg_proc where proname = 'pgr_nodenetwork'$$, - $$SELECT '[0:6]={25,701,25,25,25,25,16}'::OID[]$$ +SELECT function_types_eq('pgr_nodenetwork', + $$SELECT '{text,float8,text,text,text,text,bool}'::TEXT[]$$ ); SELECT set_eq( diff --git a/pgtap/transitiveClosure/types_check.pg b/pgtap/transitiveClosure/types_check.pg index e430e02b3d8..ac94d774ef5 100644 --- a/pgtap/transitiveClosure/types_check.pg +++ b/pgtap/transitiveClosure/types_check.pg @@ -37,10 +37,9 @@ BEGIN ); RETURN QUERY - SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_transitiveclosure'$$, + SELECT function_types_eq('pgr_transitiveclosure', $$VALUES - ('{25,23,20,1016}'::OID[]) + ('{text,int4,int8,_int8}'::TEXT[]) $$ ); diff --git a/pgtap/traversal/binaryBreadthFirstSearch/types_check.pg b/pgtap/traversal/binaryBreadthFirstSearch/types_check.pg index 0b226c30086..c434defee67 100644 --- a/pgtap/traversal/binaryBreadthFirstSearch/types_check.pg +++ b/pgtap/traversal/binaryBreadthFirstSearch/types_check.pg @@ -64,14 +64,14 @@ BEGIN ('{"","","directed","seq","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$ ), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_binarybreadthfirstsearch'$$, + + function_types_eq('pgr_binarybreadthfirstsearch', $$VALUES - ('{25,20,20,16,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ) ) @@ -86,13 +86,13 @@ BEGIN ('{"","","","directed","seq","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$ ), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_binarybreadthfirstsearch'$$, + + function_types_eq('pgr_binarybreadthfirstsearch', $$VALUES - ('{25,20,20,16,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ) ) diff --git a/pgtap/traversal/breadthFirstSearch/types_check.pg b/pgtap/traversal/breadthFirstSearch/types_check.pg index b69ce221b5a..4a148875f9e 100644 --- a/pgtap/traversal/breadthFirstSearch/types_check.pg +++ b/pgtap/traversal/breadthFirstSearch/types_check.pg @@ -38,11 +38,10 @@ SELECT set_eq( $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_breadthfirstsearch'$$, +SELECT function_types_eq('pgr_breadthfirstsearch', $$VALUES - ('{25,20,20,16,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,20,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ); diff --git a/pgtap/traversal/depthFirstSearch/types_check.pg b/pgtap/traversal/depthFirstSearch/types_check.pg index b737eb9e44f..a0990e40a90 100644 --- a/pgtap/traversal/depthFirstSearch/types_check.pg +++ b/pgtap/traversal/depthFirstSearch/types_check.pg @@ -48,11 +48,10 @@ SELECT bag_has( -- parameter types RETURN QUERY -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_depthfirstsearch'$$, +SELECT function_types_eq('pgr_depthfirstsearch', $$VALUES - ('{25,20,16,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,16,20,20,20,20,20,20,701,701}'::OID[]) + ('{text,int8,bool,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,bool,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ); END; diff --git a/pgtap/trsp/trsp/types_check.pg b/pgtap/trsp/trsp/types_check.pg index 4e6629ac42a..3af93736656 100644 --- a/pgtap/trsp/trsp/types_check.pg +++ b/pgtap/trsp/trsp/types_check.pg @@ -37,12 +37,16 @@ SELECT bag_has( ('{"","","","","","","","turn_restrict_sql","seq","id1","id2","cost"}'::TEXT[]) $$, 'old signature names'); -SELECT bag_has( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_trsp'$$, +SELECT function_types_eq('pgr_trsp', $$VALUES - ('{25,23,23,16,16,25,23,23,23,701}'::OID[]), - ('{25,23,701,23,701,16,16,25,23,23,23,701}'::OID[]) - $$, 'old signature types'); + ('{text,text,anyarray,int8,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int4,int4,bool,bool,text,int4,int4,int4,float8}'), + ('{text,text,int8,int8,bool,int4,int4,int8,int8,int8,int8,float8,float8}'), + ('{text,int4,float8,int4,float8,bool,bool,text,int4,int4,int4,float8}'), + ('{text,text,int8,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'), + ('{text,text,text,bool,int4,int4,int8,int8,int8,int8,float8,float8}'), + ('{text,text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}') + $$); SELECT types_check_general('pgr_trsp'); diff --git a/pgtap/trsp/trspViaEdges/types_check.pg b/pgtap/trsp/trspViaEdges/types_check.pg index 632cda71f8b..d5472f90db2 100644 --- a/pgtap/trsp/trspViaEdges/types_check.pg +++ b/pgtap/trsp/trspViaEdges/types_check.pg @@ -35,10 +35,9 @@ SELECT set_eq( ('{"","","","","","turn_restrict_sql","seq","id1","id2","id3","cost"}'::TEXT[]) $$); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_trspviaedges'$$, +SELECT function_types_eq('pgr_trspviaedges', $$VALUES - ('{25,1007,1022,16,16,25,23,23,23,23,701}'::OID[]) + ('{text,_int4,_float8,bool,bool,text,int4,int4,int4,int4,float8}'::TEXT[]) $$); SELECT finish(); diff --git a/pgtap/trsp/trspViaVertices/types_check.pg b/pgtap/trsp/trspViaVertices/types_check.pg index 8f48cfe2ccc..a8fa6d325c4 100644 --- a/pgtap/trsp/trspViaVertices/types_check.pg +++ b/pgtap/trsp/trspViaVertices/types_check.pg @@ -34,10 +34,9 @@ SELECT set_eq( ('{"","","","","restrictions_sql","seq","id1","id2","id3","cost"}'::TEXT[]) $$); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_trspviavertices'$$, +SELECT function_types_eq('pgr_trspviavertices', $$VALUES - ('{25,2277,16,16,25,23,23,23,23,701}'::OID[]) + ('{text,anyarray,bool,bool,text,int4,int4,int4,int4,float8}'::TEXT[]) $$); SELECT finish(); diff --git a/pgtap/utilities/findCloseEdges/types_check.pg b/pgtap/utilities/findCloseEdges/types_check.pg index b022f60b3b9..d1c7f1edbd7 100644 --- a/pgtap/utilities/findCloseEdges/types_check.pg +++ b/pgtap/utilities/findCloseEdges/types_check.pg @@ -55,7 +55,7 @@ BEGIN 'proargnames'); RETURN QUERY - SELECT function_types('pgr_findcloseedges', + SELECT function_types_eq('pgr_findcloseedges', $$ VALUES ('{text,_geometry,float8,int4,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]), ('{text,geometry,float8,int4,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]), @@ -74,7 +74,7 @@ BEGIN 'proargnames'); RETURN QUERY - SELECT function_types('pgr_findcloseedges', + SELECT function_types_eq('pgr_findcloseedges', $$ VALUES ('{text,geometry,float8,int4,bool,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]), ('{text,_geometry,float8,int4,bool,bool,int8,float8,bpchar,float8,geometry,geometry}'::TEXT[]) diff --git a/pgtap/version/full_version/types_check.pg b/pgtap/version/full_version/types_check.pg index 7860413a6f9..d09dd6714d1 100644 --- a/pgtap/version/full_version/types_check.pg +++ b/pgtap/version/full_version/types_check.pg @@ -34,9 +34,8 @@ SELECT set_eq( ); -- parameter types -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_full_version'$$, - $$SELECT '{25,25,25,25,25,25,25,25,25}'::OID[] $$ +SELECT function_types_eq('pgr_full_version', + $$SELECT '{text,text,text,text,text,text,text,text,text}'::TEXT[] $$ ); diff --git a/pgtap/version/version/types_check.pg b/pgtap/version/version/types_check.pg index 0364b1210ed..2ef435cb967 100644 --- a/pgtap/version/version/types_check.pg +++ b/pgtap/version/version/types_check.pg @@ -21,27 +21,12 @@ 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 plan(6); +SELECT plan(3); SELECT has_function('pgr_version'); SELECT has_function('pgr_version', ARRAY[]::text[]); SELECT function_returns('pgr_version', ARRAY[]::text[], 'text'); -SELECT set_eq( - $$SELECT proargnames from pg_proc where proname = 'pgr_version'$$, - $$SELECT NULL::TEXT[] $$ -); - -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_version'$$, - $$SELECT NULL::OID[] $$ -); - -SELECT set_eq( - $$SELECT prorettype from pg_proc where proname = 'pgr_version'$$, - $$VALUES ('25'::OID)$$ -); - SELECT finish(); ROLLBACK; diff --git a/pgtap/vrp_basic/types_check.pg b/pgtap/vrp_basic/types_check.pg index 6af8628fdd8..d88cb1b51be 100644 --- a/pgtap/vrp_basic/types_check.pg +++ b/pgtap/vrp_basic/types_check.pg @@ -29,10 +29,8 @@ SELECT set_eq( $$SELECT '{"","","","","oid","opos","vid","tarrival","tdepart"}'::TEXT[] $$ ); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_vrponedepot'$$, - $$SELECT '{25,25,25,23,23,23,23,23,23}'::OID[] $$ -); +SELECT function_types_eq('pgr_vrponedepot', + $$SELECT '{text,text,text,int4,int4,int4,int4,int4,int4}'::TEXT[] $$); SELECT finish(); ROLLBACK; diff --git a/pgtap/withPoints/withPoints/types_check.pg b/pgtap/withPoints/withPoints/types_check.pg index a666638d9f3..e2fd00f0cac 100644 --- a/pgtap/withPoints/withPoints/types_check.pg +++ b/pgtap/withPoints/withPoints/types_check.pg @@ -60,14 +60,13 @@ WHEN min_version('3.2.0') THEN ('{"","","","directed","driving_side","details","seq","path_seq","start_pid","end_pid","node","edge","cost","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_withpoints'$$, + function_types_eq('pgr_withpoints', $$VALUES - ('{25,25,20,20,16,1042,16,23,23,20,20,701,701}'::OID[]), - ('{25,25,20,2277,16,1042,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,25,2277,20,16,1042,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,25,2277,2277,16,1042,16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,25,16,1042,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,text,int8,int8,bool,bpchar,bool,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,anyarray,anyarray,bool,bpchar,bool,int4,int4,int8,int8,int8,int8,float8,float8}'), + ('{text,text,anyarray,int8,bool,bpchar,bool,int4,int4,int8,int8,int8,float8,float8}'), + ('{text,text,int8,anyarray,bool,bpchar,bool,int4,int4,int8,int8,int8,float8,float8}'), + ('{text,text,text,bool,bpchar,bool,int4,int4,int8,int8,int8,int8,float8,float8}') $$) ) ELSE @@ -81,13 +80,12 @@ ELSE ('{"","","","","directed","driving_side","details","seq","path_seq","start_pid","end_pid","node","edge","cost","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_withpoints'$$, + function_types_eq('pgr_withpoints', $$VALUES - ('{25,25,20,20,16,1042,16,23,23,20,20,701,701}'::OID[]), - ('{25,25,20,2277,16,1042,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,25,2277,20,16,1042,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,25,2277,2277,16,1042,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,text,int8,int8,16,1042,bool,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,int8,anyarray,16,1042,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,anyarray,int8,16,1042,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,anyarray,anyarray,16,1042,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$) ) END; diff --git a/pgtap/withPoints/withPointsCost/types_check.pg b/pgtap/withPoints/withPointsCost/types_check.pg index 8aa9c1d2e38..45107486382 100644 --- a/pgtap/withPoints/withPointsCost/types_check.pg +++ b/pgtap/withPoints/withPointsCost/types_check.pg @@ -60,14 +60,14 @@ WHEN min_version('3.2.0') THEN ('{"","","","","directed","driving_side","start_pid","end_pid","agg_cost"}'::TEXT[]), ('{"","","","directed","driving_side","start_pid","end_pid","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_withpointscost'$$, + + function_types_eq('pgr_withpointscost', $$VALUES - ('{25,25,25,16,1042,20,20,701}'::OID[]), - ('{25,25,20,20,16,1042,20,20,701}'::OID[]), - ('{25,25,20,2277,16,1042,20,20,701}'::OID[]), - ('{25,25,2277,20,16,1042,20,20,701}'::OID[]), - ('{25,25,2277,2277,16,1042,20,20,701}'::OID[]) + ('{text,text,text,bool,bpchar,int8,int8,float8}'::TEXT[]), + ('{text,text,int8,int8,bool,bpchar,int8,int8,float8}'::TEXT[]), + ('{text,text,int8,anyarray,bool,bpchar,int8,int8,float8}'::TEXT[]), + ('{text,text,anyarray,int8,bool,bpchar,int8,int8,float8}'::TEXT[]), + ('{text,text,anyarray,anyarray,bool,bpchar,int8,int8,float8}'::TEXT[]) $$) ) ELSE @@ -80,13 +80,13 @@ ELSE ('{"","","","","directed","driving_side","start_pid","end_pid","agg_cost"}'::TEXT[]), ('{"","","","","directed","driving_side","start_pid","end_pid","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_withpointscost'$$, + + function_types_eq('pgr_withpointscost', $$VALUES - ('{25,25,20,20,16,1042,20,20,701}'::OID[]), - ('{25,25,20,2277,16,1042,20,20,701}'::OID[]), - ('{25,25,2277,20,16,1042,20,20,701}'::OID[]), - ('{25,25,2277,2277,16,1042,20,20,701}'::OID[]) + ('{text,text,int8,int8,bool,bpchar,int8,int8,float8}'::TEXT[]), + ('{text,text,int8,anyarray,bool,bpchar,int8,int8,float8}'::TEXT[]), + ('{text,text,anyarray,int8,bool,bpchar,int8,int8,float8}'::TEXT[]), + ('{text,text,anyarray,anyarray,bool,bpchar,int8,int8,float8}'::TEXT[]) $$) ) END; diff --git a/pgtap/withPoints/withPointsCostMatrix/types_check.pg b/pgtap/withPoints/withPointsCostMatrix/types_check.pg index 92de372fc73..8407d91b9ec 100644 --- a/pgtap/withPoints/withPointsCostMatrix/types_check.pg +++ b/pgtap/withPoints/withPointsCostMatrix/types_check.pg @@ -31,10 +31,9 @@ SELECT set_eq( ('{"","","","directed","driving_side","start_vid","end_vid","agg_cost"}'::TEXT[]) $$); -SELECT set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_withpointscostmatrix'$$, +SELECT function_types_eq('pgr_withpointscostmatrix', $$VALUES - ('{25,25,2277,16,1042,20,20,701}'::OID[]) + ('{text,text,anyarray,bool,bpchar,int8,int8,float8}'::TEXT[]) $$); SELECT finish(); diff --git a/pgtap/withPoints/withPointsDD/types_check.pg b/pgtap/withPoints/withPointsDD/types_check.pg index 4f55b557105..66501d46c42 100644 --- a/pgtap/withPoints/withPointsDD/types_check.pg +++ b/pgtap/withPoints/withPointsDD/types_check.pg @@ -54,13 +54,13 @@ THEN collect_tap ( ('{"","","","","directed","driving_side","details","seq","node","edge","cost","agg_cost"}'::TEXT[]), ('{"","","","","directed","driving_side","details","equicost","seq","start_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_withpointsdd'$$, + + function_types_eq('pgr_withpointsdd', $$VALUES - ('{25,25,20,701,1042,16,16,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,25,2277,701,1042,16,16,16,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,25,20,701,16,1042,16,23,20,20,701,701}'::OID[]), - ('{25,25,2277,701,16,1042,16,16,23,20,20,20,701,701}'::OID[]) + ('{text,text,anyarray,float8,bpchar,bool,bool,bool,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,int8,float8,bpchar,bool,bool,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,int8,float8,bool,bpchar,bool,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,anyarray,float8,bool,bpchar,bool,bool,int4,int8,int8,int8,float8,float8}'::TEXT[]) $$) ) ELSE collect_tap( @@ -70,11 +70,11 @@ ELSE collect_tap( ('{"","","","","directed","driving_side","details","seq","node","edge","cost","agg_cost"}'::TEXT[]), ('{"","","","","directed","driving_side","details","equicost","seq","start_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$), - set_eq( - $$SELECT proallargtypes from pg_proc where proname = 'pgr_withpointsdd'$$, + + function_types_eq('pgr_withpointsdd', $$VALUES - ('{25,25,20,701,16,1042,16,23,20,20,701,701}'::OID[]), - ('{25,25,2277,701,16,1042,16,16,23,20,20,20,701,701}'::OID[]) + ('{text,text,anyarray,float8,bool,bpchar,bool,bool,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,int8,float8,bool,bpchar,bool,int4,int8,int8,float8,float8}') $$) ) END; diff --git a/tools/testers/astar_pgtap_tests.sql b/tools/testers/astar_pgtap_tests.sql index 9b9670c95c7..16dde7c7e18 100644 --- a/tools/testers/astar_pgtap_tests.sql +++ b/tools/testers/astar_pgtap_tests.sql @@ -3,12 +3,12 @@ CREATE OR REPLACE FUNCTION astar_types_check(fn TEXT) RETURNS SETOF TEXT AS $BODY$ DECLARE the_type_name TEXT = 'double precision'; -the_type_numb TEXT = '701'; +the_type_numb TEXT = 'float8'; BEGIN IF fn = 'pgr_bdastar' THEN the_type_name = 'numeric'; - the_type_numb = '1700'; + the_type_numb = 'numeric'; END IF; RETURN QUERY SELECT has_function(fn); @@ -41,15 +41,14 @@ BEGIN ('{"","","directed","heuristic","factor","epsilon","seq","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$, 'Column names'); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$,fn), + RETURN QUERY SELECT function_types_eq(fn, format($$VALUES - ('{25,20,20,16,23,%1$s,%1$s, 23,23,20,20,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,%1$s,%1$s, 23,23,20,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,%1$s,%1$s, 23,23,20,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,%1$s,%1$s,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,16,23,%1$s,%1$s, 23,23,20,20,20,20,701,701}'::OID[]) - $$,the_type_numb), 'Column types'); + ('{text,int8,int8,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,%1$s,%1$s, int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) + $$,the_type_numb)); ELSIF min_version('3.2.0') THEN RETURN QUERY SELECT set_eq( @@ -62,15 +61,14 @@ BEGIN ('{"","","directed","heuristic","factor","epsilon","seq","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$, 'Old column names'); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$,fn), + RETURN QUERY SELECT function_types_eq(fn, format($$VALUES - ('{25,20,20,16,23,%1$s,%1$s,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,%1$s,%1$s,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,%1$s,%1$s,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,%1$s,%1$s,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,16,23,%1$s,%1$s,23,23,20,20,20,20,701,701}'::OID[]) - $$,the_type_numb), 'Old column types'); + ('{text,int8,int8,bool,int4, %1$s,%1$s, int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) + $$,the_type_numb)); ELSE RETURN QUERY SELECT set_eq( format($$SELECT proargnames FROM pg_proc WHERE proname = %1$L$$,fn), @@ -81,14 +79,13 @@ BEGIN ('{"","","","directed","heuristic","factor","epsilon","seq","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$, 'Before combinations column names'); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$,fn), + RETURN QUERY SELECT function_types_eq(fn, format($$VALUES - ('{25,20,20,16,23,%1$s,%1$s,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,%1$s,%1$s,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,%1$s,%1$s,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,%1$s,%1$s,23,23,20,20,20,20,701,701}'::OID[]) - $$,the_type_numb), 'Before combinations column types'); + ('{text,int8,int8,bool,int4, %1$s,%1$s, int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4, %1$s,%1$s, int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) + $$,the_type_numb)); END IF; END; @@ -99,12 +96,12 @@ CREATE OR REPLACE FUNCTION astarcost_types_check(fn TEXT) RETURNS SETOF TEXT AS $BODY$ DECLARE the_type_name TEXT = 'double precision'; -the_type_numb TEXT = '701'; +the_type_numb TEXT = 'float8'; BEGIN IF fn = 'pgr_bdastarcost' THEN the_type_name = 'numeric'; - the_type_numb = '1700'; + the_type_numb = 'numeric'; END IF; RETURN QUERY SELECT has_function(fn); @@ -137,14 +134,13 @@ BEGIN ('{"","","","directed","heuristic","factor","epsilon","start_vid","end_vid","agg_cost"}'::TEXT[]) $$); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$,fn), + RETURN QUERY SELECT function_types_eq(fn, format($$VALUES - ('{25,20,20,16,23,%1$s,%1$s,20,20,701}'::OID[]), - ('{25,20,2277,16,23,%1$s,%1$s,20,20,701}'::OID[]), - ('{25,2277,20,16,23,%1$s,%1$s,20,20,701}'::OID[]), - ('{25,2277,2277,16,23,%1$s,%1$s,20,20,701}'::OID[]), - ('{25,25,16,23,%1$s,%1$s,20,20,701}'::OID[]) + ('{text,int8,int8,bool,int4,%1$s,%1$s,int8,int8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,%1$s,%1$s,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,%1$s,%1$s,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,%1$s,%1$s,int8,int8,float8}'::TEXT[]), + ('{text,text,bool,int4,%1$s,%1$s,int8,int8,float8}'::TEXT[]) $$,the_type_numb)); ELSE RETURN QUERY SELECT set_eq( @@ -156,13 +152,12 @@ BEGIN ('{"","","","directed","heuristic","factor","epsilon","start_vid","end_vid","agg_cost"}'::TEXT[]) $$); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$,fn), + RETURN QUERY SELECT function_types_eq(fn, format($$VALUES - ('{25,20,20,16,23,%1$s,%1$s,20,20,701}'::OID[]), - ('{25,20,2277,16,23,%1$s,%1$s,20,20,701}'::OID[]), - ('{25,2277,20,16,23,%1$s,%1$s,20,20,701}'::OID[]), - ('{25,2277,2277,16,23,%1$s,%1$s,20,20,701}'::OID[]) + ('{text,int8,int8,bool,int4, %1$s,%1$s,int8,int8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4, %1$s,%1$s,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4, %1$s,%1$s,int8,int8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,%1$s,%1$s,int8,int8,float8}'::TEXT[]) $$,the_type_numb)); END IF; @@ -174,12 +169,12 @@ CREATE OR REPLACE FUNCTION astarcostmatrix_types_check(fn TEXT) RETURNS SETOF TE $BODY$ DECLARE the_type_name TEXT = 'double precision'; -the_type_numb TEXT = '701'; +the_type_numb TEXT = 'float8'; BEGIN IF fn = 'pgr_bdastarcostmatrix' THEN the_type_name = 'numeric'; - the_type_numb = '1700'; + the_type_numb = 'numeric'; END IF; RETURN QUERY SELECT has_function(fn); @@ -194,10 +189,9 @@ BEGIN ('{"","","directed","heuristic","factor","epsilon","start_vid","end_vid","agg_cost"}'::TEXT[]) $$); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$,fn), + RETURN QUERY SELECT function_types_eq(fn, format($$VALUES - ('{25,2277,16,23,%1$s,%1$s,20,20,701}'::OID[]) + ('{text,anyarray,bool,int4,%1$s,%1$s,int8,int8,float8}'::TEXT[]) $$,the_type_numb)); END; diff --git a/tools/testers/dijkstra_pgtap_tests.sql b/tools/testers/dijkstra_pgtap_tests.sql index 46790131259..c3af2ffac36 100644 --- a/tools/testers/dijkstra_pgtap_tests.sql +++ b/tools/testers/dijkstra_pgtap_tests.sql @@ -158,15 +158,14 @@ BEGIN ('{"","","","directed","seq","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$,'proargnames'); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes from pg_proc where proname = %1$L$$,fn), + RETURN QUERY SELECT function_types_eq(fn, $$VALUES - ('{25,20,20, 16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,20,2277, 16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,2277,20, 16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25, 16,23,23,20,20,20,20,701,701}'::OID[]) - $$,'proallargtypes'); + ('{text,int8,int8,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) + $$); RETURN; END IF; @@ -185,14 +184,13 @@ IF (min_version('3.2.0') AND fn != 'pgr_dijkstra') OR (min_version('3.1.0') AND ('{"","","directed","seq","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes from pg_proc where proname = %1$L$$,fn), + RETURN QUERY SELECT function_types_eq(fn, $$VALUES - ('{25,20,20,16,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,20,20,20,20,701,701}'::OID[]), - ('{25,25,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,bool,int4,int4,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,anyarray,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,text,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$); ELSE @@ -205,13 +203,11 @@ ELSE ('{"","","","directed","seq","path_seq","start_vid","end_vid","node","edge","cost","agg_cost"}'::TEXT[]) $$); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes from pg_proc where proname = %1$L$$,fn), + RETURN QUERY SELECT function_types_eq(fn, $$VALUES - ('{25,20,20,16,23,23,20,20,701,701}'::OID[]), - ('{25,20,2277,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,20,16,23,23,20,20,20,701,701}'::OID[]), - ('{25,2277,2277,16,23,23,20,20,20,20,701,701}'::OID[]) + ('{text,int8,anyarray,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,bool,int4,int4,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,anyarray,bool,int4,int4,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$); END IF; diff --git a/tools/testers/flow_pgtap_tests.sql b/tools/testers/flow_pgtap_tests.sql index 7051ff23010..5f2bce579d4 100644 --- a/tools/testers/flow_pgtap_tests.sql +++ b/tools/testers/flow_pgtap_tests.sql @@ -198,14 +198,13 @@ BEGIN ('{"","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[]) $$), - set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn_name), + function_types_eq(fn_name, $$VALUES - ('{25,20,20,23,20,20,20,20,20}'::OID[]), - ('{25,20,2277,23,20,20,20,20,20}'::OID[]), - ('{25,2277,20,23,20,20,20,20,20}'::OID[]), - ('{25,2277,2277,23,20,20,20,20,20}'::OID[]), - ('{25,25,23,20,20,20,20,20}'::OID[]) + ('{text,int8,int8,int4,int8,int8,int8,int8,int8}'::TEXT[]), + ('{text,int8,anyarray,int4,int8,int8,int8,int8,int8}'::TEXT[]), + ('{text,anyarray,int8,int4,int8,int8,int8,int8,int8}'::TEXT[]), + ('{text,anyarray,anyarray,int4,int8,int8,int8,int8,int8}'::TEXT[]), + ('{text,text,int4,int8,int8,int8,int8,int8}'::TEXT[]) $$) ) ELSE @@ -219,13 +218,12 @@ BEGIN ('{"","","","seq","edge","start_vid","end_vid","flow","residual_capacity"}'::TEXT[]) $$), - set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn_name), + function_types_eq(fn_name, $$VALUES - ('{25,20,20,23,20,20,20,20,20}'::OID[]), - ('{25,20,2277,23,20,20,20,20,20}'::OID[]), - ('{25,2277,20,23,20,20,20,20,20}'::OID[]), - ('{25,2277,2277,23,20,20,20,20,20}'::OID[]) + ('{text,int8,int8,int4,int8,int8,int8,int8,int8}'::TEXT[]), + ('{text,int8,anyarray,int4,int8,int8,int8,int8,int8}'::TEXT[]), + ('{text,anyarray,int8,int4,int8,int8,int8,int8,int8}'::TEXT[]), + ('{text,anyarray,anyarray,int4,int8,int8,int8,int8,int8}'::TEXT[]) $$) ) END; diff --git a/tools/testers/general_pgtap_tests.sql b/tools/testers/general_pgtap_tests.sql index fa9c9f82cb7..a46e6630e28 100644 --- a/tools/testers/general_pgtap_tests.sql +++ b/tools/testers/general_pgtap_tests.sql @@ -50,18 +50,34 @@ $BODY$ END; $BODY$ LANGUAGE SQL; -CREATE OR REPLACE FUNCTION function_types(TEXT, TEXT) +CREATE OR REPLACE FUNCTION function_types_eq(TEXT, TEXT) RETURNS TEXT AS $BODY$ - SELECT set_eq(format($$ - WITH - a AS ( - SELECT oid, u.name, u.idx - FROM pg_proc p CROSS JOIN unnest(p.proallargtypes) - WITH ordinality as u(name, idx) - WHERE p.proname = '%1$s'), - b AS ( - SELECT a.*, t.typname FROM a JOIN pg_type As t on (t.oid = a.name)) - SELECT array_agg(typname ORDER BY idx) FROM b GROUP BY oid - $$, $1), $2, $1 || ': Function types'); +SELECT set_eq(format($$ + WITH + a AS ( + SELECT oid, u.name, u.idx + FROM pg_catalog.pg_proc p CROSS JOIN unnest(coalesce(p.proallargtypes, p.proargtypes)) + WITH ordinality as u(name, idx) + WHERE p.proname = '%1$s'), + b AS ( + SELECT a.*, t.typname FROM a JOIN pg_catalog.pg_type As t on (t.oid = a.name)) + SELECT array_agg(typname ORDER BY idx) FROM b GROUP BY oid + $$, $1), $2, $1 || ': Function types'); +$BODY$ LANGUAGE SQL; + +CREATE OR REPLACE FUNCTION function_types_has(TEXT, TEXT) +RETURNS TEXT AS +$BODY$ +SELECT set_has(format($$ + WITH + a AS ( + SELECT oid, u.name, u.idx + FROM pg_catalog.pg_proc p CROSS JOIN unnest(coalesce(p.proallargtypes, p.proargtypes)) + WITH ordinality as u(name, idx) + WHERE p.proname = '%1$s'), + b AS ( + SELECT a.*, t.typname FROM a JOIN pg_catalog.pg_type As t on (t.oid = a.name)) + SELECT array_agg(typname ORDER BY idx) FROM b GROUP BY oid + $$, $1), $2, $1 || ': Function types'); $BODY$ LANGUAGE SQL; diff --git a/tools/testers/spanningtree.sql b/tools/testers/spanningtree.sql index b7f0d74bd9a..452d6bbbffe 100644 --- a/tools/testers/spanningtree.sql +++ b/tools/testers/spanningtree.sql @@ -11,9 +11,8 @@ BEGIN $$SELECT '{"","edge","cost"}'::TEXT[] $$ ); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn), - $$SELECT '{25,20,701}'::OID[] $$ + RETURN QUERY SELECT function_types_eq(fn, + $$SELECT '{text,int8,float8}'::TEXT[] $$ ); END; @@ -40,11 +39,10 @@ BEGIN $$ ); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn), + RETURN QUERY SELECT function_types_eq(fn, $$VALUES - ('{25,20,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,20,20,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ); @@ -57,11 +55,10 @@ BEGIN $$ ); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn), + RETURN QUERY SELECT function_types_eq(fn, $$VALUES - ('{25,20,20,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,20,20,20,20,20,20,20,701,701}'::OID[]) + ('{text,int8,int8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,int8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ); @@ -96,15 +93,14 @@ BEGIN $$ ); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn), + RETURN QUERY SELECT function_types_eq(fn, $$VALUES - ('{25,20,701,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,701,20,20,20,20,20,701,701}'::OID[]), - ('{25,20,1700,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,1700,20,20,20,20,20,701,701}'::OID[]), - ('{25,20,701,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,701,20,20,20,20,20,701,701}'::OID[]) + ('{text,int8,float8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,float8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,numeric,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,numeric,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,float8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,float8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ); @@ -117,15 +113,14 @@ BEGIN $$ ); - RETURN QUERY SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn), + RETURN QUERY SELECT function_types_eq(fn, $$VALUES - ('{25,20,701,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,701,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,20,1700,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,1700,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,20,701,20,20,20,20,20,20,701,701}'::OID[]), - ('{25,2277,701,20,20,20,20,20,20,701,701}'::OID[]) + ('{text,int8,float8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,float8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,numeric,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,numeric,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,int8,float8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]), + ('{text,anyarray,float8,int8,int8,int8,int8,int8,int8,float8,float8}'::TEXT[]) $$ ); diff --git a/tools/testers/tsp_pgtap_tests.sql b/tools/testers/tsp_pgtap_tests.sql index 8038aed76b6..6680c7a5c53 100644 --- a/tools/testers/tsp_pgtap_tests.sql +++ b/tools/testers/tsp_pgtap_tests.sql @@ -184,9 +184,8 @@ BEGIN 'parameters', 'parameter names'); RETURN QUERY - SELECT set_eq( - format($$SELECT proargnames FROM pg_proc WHERE proname = %1$L$$, fn), - $$VALUES ('{25,20,20,23,20,701,701}'::OID[]) $$, 'parameter_types' + SELECT function_types_eq(fn, + $$VALUES ('{text,int8,int8,23,int8,float8,float8}'::TEXT[]) $$ ); END; $BODY$ @@ -233,10 +232,8 @@ BEGIN RETURN QUERY -- parameter types - SELECT set_eq( - format($$SELECT proallargtypes FROM pg_proc WHERE proname = %1$L$$, fn), - $$SELECT '{25,20,20,701,23,23,23,701,701,701,16,23,20,701,701}'::OID[] $$, - fn || ' parameter types' + SELECT function_types_eq(fn, + $$SELECT '{text,int8,int8,float823,23,23,float8float8float816,23,int8,float8,float8}'::TEXT[] $$ ); END; $BODY$