From de26cbe1b34e3a5b20175a314edb79425b2eefed Mon Sep 17 00:00:00 2001 From: cvvergara Date: Sun, 2 Jan 2022 09:22:41 -0600 Subject: [PATCH] [pgtap] fixing some issues with testing old 3.x version --- pgtap/bdDijkstra/bdDijkstra/types_check.pg | 4 +--- .../edge_cases/zero_one_edge_no_reverse.pg | 22 +++++++++++------ pgtap/dijkstra/dijkstra/types_check.pg | 4 +--- tools/testers/dijkstra_pgtap_tests.sql | 24 ++++++++++++++++++- 4 files changed, 40 insertions(+), 14 deletions(-) diff --git a/pgtap/bdDijkstra/bdDijkstra/types_check.pg b/pgtap/bdDijkstra/bdDijkstra/types_check.pg index 5ae604dbc7d..3c286316a36 100644 --- a/pgtap/bdDijkstra/bdDijkstra/types_check.pg +++ b/pgtap/bdDijkstra/bdDijkstra/types_check.pg @@ -1,9 +1,7 @@ BEGIN; -SET client_min_messages TO WARNING; - -SELECT plan(13); +SELECT CASE WHEN min_version('3.2.0') THEN plan(13) ELSE PLAN(11) END; SELECT dijkstra_types_check('pgr_bddijkstra'); diff --git a/pgtap/dijkstra/dijkstra/edge_cases/zero_one_edge_no_reverse.pg b/pgtap/dijkstra/dijkstra/edge_cases/zero_one_edge_no_reverse.pg index a2879b9c8be..13f29da33a1 100644 --- a/pgtap/dijkstra/dijkstra/edge_cases/zero_one_edge_no_reverse.pg +++ b/pgtap/dijkstra/dijkstra/edge_cases/zero_one_edge_no_reverse.pg @@ -1,7 +1,7 @@ BEGIN; UPDATE edge_table SET cost = sign(cost), reverse_cost = sign(reverse_cost); -SELECT plan(130); +SELECT CASE WHEN min_version('3.1.0') THEN plan(130) ELSE plan(104) END; CREATE OR REPLACE FUNCTION do_test(TEXT, BIGINT, BIGINT) RETURNS SETOF TEXT AS @@ -16,8 +16,6 @@ BEGIN SELECT is_empty(format($$SELECT * from pgr_dijkstra(%1$L, %2$s, ARRAY[%3$s])$$,$1,$2,$3), 'D. Many to one- ' || $1); RETURN QUERY SELECT is_empty(format($$SELECT * from pgr_dijkstra(%1$L, ARRAY[%2$s], ARRAY[%3$s])$$,$1,$2,$3), 'D. Many to Many- ' || $1); - RETURN QUERY - SELECT is_empty(format($$SELECT * from pgr_dijkstra(%1$L, 'combination')$$,$1), 'D. Combinations- ' || $1); -- undirected graph RETURN QUERY @@ -28,8 +26,12 @@ BEGIN SELECT is_empty(format($$SELECT * from pgr_dijkstra(%1$L, %2$s, ARRAY[%3$s], false)$$,$1,$2,$3), 'D. Many to one- ' || $1); RETURN QUERY SELECT is_empty(format($$SELECT * from pgr_dijkstra(%1$L, ARRAY[%2$s], ARRAY[%3$s], false)$$,$1,$2,$3), 'D. Many to Many- ' || $1); - RETURN QUERY - SELECT is_empty(format($$SELECT * from pgr_dijkstra(%1$L, 'combination', false)$$,$1), 'D. Combinations- ' || $1); + + IF min_version('3.1.0') THEN + RETURN QUERY SELECT is_empty(format($$SELECT * from pgr_dijkstra(%1$L, 'combination', false)$$,$1), 'D. Combinations- ' || $1); + RETURN QUERY SELECT is_empty(format($$SELECT * from pgr_dijkstra(%1$L, 'combination')$$,$1), 'D. Combinations- ' || $1); + END IF; + END; $BODY$ LANGUAGE plpgsql VOLATILE; @@ -80,14 +82,20 @@ SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', 5, 6)$$, 'D. One to o SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', ARRAY[5], 6)$$, 'D. One to many- edge_5_6 -> no result'); SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', 5, ARRAY[6])$$, 'D. Many to one- edge_5_6 -> no result'); SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', ARRAY[5], ARRAY[6])$$, 'D. Many to Many- edge_5_6 -> no result'); -SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', 'combination')$$, 'D. Combinations- edge_5_6 -> no result'); -- undirected graph SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', 5, 6, false)$$, 'U. One to one- edge_5_6 -> no result'); SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', ARRAY[5], 6, false)$$, 'U. One to many- edge_5_6 -> no result'); SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', 5, ARRAY[6], false)$$, 'U. Many to one- edge_5_6 -> no result'); SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', ARRAY[5], ARRAY[6], false)$$, 'U. Many to Many- edge_5_6 -> no result'); -SELECT isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', 'combination', false)$$, 'U. Combinations- edge_5_6 -> no result'); + +SELECT CASE +WHEN min_version('3.1.0') THEN + collect_tap( + isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', 'combination')$$, 'D. Combinations- edge_5_6 -> no result'), + isnt_empty($$SELECT * from pgr_dijkstra('edge_5_6', 'combination', false)$$, 'U. Combinations- edge_5_6 -> no result') + ) +END; SELECT * FROM finish(); ROLLBACK; diff --git a/pgtap/dijkstra/dijkstra/types_check.pg b/pgtap/dijkstra/dijkstra/types_check.pg index 9ec3de4ee25..7735ef32e82 100644 --- a/pgtap/dijkstra/dijkstra/types_check.pg +++ b/pgtap/dijkstra/dijkstra/types_check.pg @@ -1,9 +1,7 @@ BEGIN; -SET client_min_messages TO WARNING; - -SELECT plan(13); +SELECT CASE WHEN min_version('3.1.0') THEN plan(13) ELSE PLAN(11) END; SELECT dijkstra_types_check('pgr_dijkstra'); diff --git a/tools/testers/dijkstra_pgtap_tests.sql b/tools/testers/dijkstra_pgtap_tests.sql index 19e5a77f430..054cdbe5493 100644 --- a/tools/testers/dijkstra_pgtap_tests.sql +++ b/tools/testers/dijkstra_pgtap_tests.sql @@ -141,12 +141,14 @@ BEGIN RETURN QUERY SELECT has_function(fn, ARRAY['text','bigint','anyarray','boolean']); RETURN QUERY SELECT has_function(fn, ARRAY['text','anyarray','bigint','boolean']); RETURN QUERY SELECT has_function(fn, ARRAY['text','anyarray','anyarray','boolean']); - RETURN QUERY SELECT has_function(fn, ARRAY['text','text','boolean']); RETURN QUERY SELECT function_returns(fn, ARRAY['text','bigint','bigint','boolean'],'setof record'); RETURN QUERY SELECT function_returns(fn, ARRAY['text','bigint','anyarray','boolean'],'setof record'); RETURN QUERY SELECT function_returns(fn, ARRAY['text','anyarray','bigint','boolean'],'setof record'); RETURN QUERY SELECT function_returns(fn, ARRAY['text','anyarray','anyarray','boolean'],'setof record'); + +IF (min_version('3.2.0') AND fn != 'pgr_dijkstra') OR (min_version('3.1.0') AND fn = 'pgr_dijkstra') THEN + RETURN QUERY SELECT has_function(fn, ARRAY['text','text','boolean']); RETURN QUERY SELECT function_returns(fn, ARRAY['text','text','boolean'],'setof record'); RETURN QUERY SELECT set_eq( @@ -169,6 +171,26 @@ BEGIN ('{25,25,16,23,23,20,20,20,20,701,701}'::OID[]) $$); +ELSE + RETURN QUERY SELECT set_eq( + format($$SELECT proargnames from pg_proc where proname = %1$L$$,fn), + $$VALUES + ('{"","","","directed","seq","path_seq","node","edge","cost","agg_cost"}'::TEXT[]), + ('{"","","","directed","seq","path_seq","end_vid","node","edge","cost","agg_cost"}'::TEXT[]), + ('{"","","","directed","seq","path_seq","start_vid","node","edge","cost","agg_cost"}'::TEXT[]), + ('{"","","","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), + $$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[]) + $$); +END IF; + END $BODY$ LANGUAGE plpgsql VOLATILE;