diff --git a/.github/workflows/update.yml b/.github/workflows/update.yml index 96c7e7bee5..7aea3962c4 100644 --- a/.github/workflows/update.yml +++ b/.github/workflows/update.yml @@ -8,7 +8,28 @@ on: workflow_dispatch: push: paths: - - '.github/workflows/update.yml' + - '.github/workflows/ubuntu.yml' + - 'src/**' + - 'include/**' + - 'sql/**' + - 'pgtap/**' + - 'tools/testers/**' + - 'CMakeLists.txt' + + branches-ignore: + - 'gh-pages' + + tags: [] + + pull_request: + paths: + - '.github/workflows/check-queries.yml' + - 'src/**' + - 'include/**' + - 'sql/**' + - 'pgtap/**' + - 'tools/testers/**' + - 'CMakeLists.txt' branches-ignore: - 'gh-pages' @@ -71,9 +92,6 @@ jobs: postgresql-${PGVER}-postgis-${PGIS}-scripts \ postgresql-server-dev-${PGVER} - python -m pip install --upgrade pip - pip install -r requirements.txt - wget https://sourceforge.net/projects/boost/files/boost/1.${{ matrix.boost_minor }}.0/boost_1_${{ matrix.boost_minor }}_0.tar.bz2 sudo tar --bzip2 -xf boost_1_${{ matrix.boost_minor }}_0.tar.bz2 sudo mv boost_1_${{ matrix.boost_minor }}_0/boost /usr/include/ @@ -111,7 +129,7 @@ jobs: export PATH=/usr/lib/postgresql/${PGVER}/bin:$PATH mkdir build cd build - cmake -DPOSTGRESQL_VERSION=${PGVER} -DCMAKE_BUILD_TYPE=Release -DWITH_DOC=OFF .. + cmake -DPOSTGRESQL_VERSION=${PGVER} -DCMAKE_BUILD_TYPE=Release .. make -j 4 sudo make install diff --git a/pgtap/ordering/topologicalSort/edge_cases.pg b/pgtap/ordering/topologicalSort/edge_cases.pg index 51cddf5622..aedc2c761e 100644 --- a/pgtap/ordering/topologicalSort/edge_cases.pg +++ b/pgtap/ordering/topologicalSort/edge_cases.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 CASE WHEN NOT min_version('3.0.0') THEN plan(1) ELSE plan(8) END; +SELECT CASE WHEN min_lib_version('3.4.0') THEN plan(8) ELSE plan(7) END; CREATE OR REPLACE FUNCTION edge_cases() RETURNS SETOF TEXT AS @@ -55,8 +55,10 @@ PREPARE q2 AS FROM edges WHERE id = 7' ); -RETURN QUERY -SELECT throws_ok('q2', 'Graph is not DAG', 'throws is not DAG error'); +IF min_lib_version('3.4.0') THEN + /* On v3.4 there is an additional check */ + RETURN QUERY SELECT throws_ok('q2', 'Graph is not DAG', 'throws is not DAG error'); +END IF; -- 1 vertex test diff --git a/pgtap/withPoints/withPoints/types_check.pg b/pgtap/withPoints/withPoints/types_check.pg index 821fb34f97..b166712fd7 100644 --- a/pgtap/withPoints/withPoints/types_check.pg +++ b/pgtap/withPoints/withPoints/types_check.pg @@ -20,7 +20,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; -SELECT CASE WHEN min_version('4.0.0') THEN plan(13) WHEN min_version('3.2.0') THEN plan(12) ELSE PLAN(10) END; +SELECT CASE WHEN min_version('4.0.0') THEN plan(13) ELSE PLAN(1) END; SELECT single_path_types_check( 'pgr_withpoints', diff --git a/pgtap/withPoints/withPointsDD/edge_cases/allowed_driving_side.pg b/pgtap/withPoints/withPointsDD/edge_cases/allowed_driving_side.pg index d513256578..f47aef7cbe 100644 --- a/pgtap/withPoints/withPointsDD/edge_cases/allowed_driving_side.pg +++ b/pgtap/withPoints/withPointsDD/edge_cases/allowed_driving_side.pg @@ -19,7 +19,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. BEGIN; -SELECT CASE WHEN min_version('3.6.0') THEN PLAN(32) ELSE plan(1) END; +SELECT CASE WHEN min_version('3.6.0') AND min_lib_version('4.0.0') THEN PLAN(32) + WHEN min_version('3.6.0') THEN plan(20) ELSE plan(1) END; CREATE OR REPLACE FUNCTION test_cases() RETURNS SETOF TEXT AS @@ -58,20 +59,22 @@ SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( 'SELECT pid, edge_id, fraction, side from pointsOfInterest', -1, 4.8, 'L', directed => true)$$, 'lives: directed Left'); --- directed b, B -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - -1, 4.8, 'b', directed => true)$$, - 'lives: directed both'); - -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - -1, 4.8, 'B', directed => true)$$, +IF min_lib_version('4.0.0') THEN + -- directed b, B + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + -1, 4.8, 'b', directed => true)$$, + 'lives: directed both'); + + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + -1, 4.8, 'B', directed => true)$$, 'lives: directed Both'); +END IF; -- directed Invalid RETURN QUERY SELECT throws_ok($$ @@ -88,36 +91,38 @@ SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( -1, 4.8, 'I', directed => true)$$, 'XX000',$$Invalid value of 'driving side'$$, 'throws: directed Invalid'); --- undirected lives with b,B throws with and any other value --- undirected r, R -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - -1, 4.8, 'r', directed => false)$$, +IF min_lib_version('4.0.0') THEN + -- undirected lives with b,B throws with and any other value + -- undirected r, R + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + -1, 4.8, 'r', directed => false)$$, 'lives: undirected right'); -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - -1, 4.8, 'R', directed => false)$$, + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + -1, 4.8, 'R', directed => false)$$, 'lives: undirected Right'); --- undirected l, L -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - -1, 4.8, 'l', directed => false)$$, + -- undirected l, L + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + -1, 4.8, 'l', directed => false)$$, 'lives: undirected left'); -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - -1, 4.8, 'L', directed => false)$$, + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + -1, 4.8, 'L', directed => false)$$, 'lives: undirected Left'); +END IF; -- undirected b, B RETURN QUERY SELECT lives_ok($$ @@ -175,20 +180,22 @@ SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( 'SELECT pid, edge_id, fraction, side from pointsOfInterest', ARRAY[-1,9], 4.8, 'L', directed => true)$$, 'lives: directed Left'); --- directed b, B -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - ARRAY[-1,9], 4.8, 'b', directed => true)$$, - 'lives: directed both'); - -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - ARRAY[-1,9], 4.8, 'B', directed => true)$$, +IF min_lib_version('4.0.0') THEN + -- directed b, B + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + ARRAY[-1,9], 4.8, 'b', directed => true)$$, + 'lives: directed both'); + + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + ARRAY[-1,9], 4.8, 'B', directed => true)$$, 'lives: directed Both'); +END IF; -- directed Invalid RETURN QUERY SELECT throws_ok($$ @@ -205,36 +212,38 @@ SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( ARRAY[-1,9], 4.8, 'I', directed => true)$$, 'XX000',$$Invalid value of 'driving side'$$, 'throws: directed Invalid'); --- undirected lives with b,B throws with and any other value --- undirected r, R -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - ARRAY[-1,9], 4.8, 'r', directed => false)$$, +IF min_lib_version('4.0.0') THEN + -- undirected lives with b,B throws with and any other value + -- undirected r, R + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + ARRAY[-1,9], 4.8, 'r', directed => false)$$, 'lives: undirected right'); -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - ARRAY[-1,9], 4.8, 'R', directed => false)$$, + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + ARRAY[-1,9], 4.8, 'R', directed => false)$$, 'lives: undirected Right'); --- undirected l, L -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - ARRAY[-1,9], 4.8, 'l', directed => false)$$, + -- undirected l, L + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + ARRAY[-1,9], 4.8, 'l', directed => false)$$, 'lives: undirected left'); -RETURN QUERY SELECT lives_ok($$ -SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( - 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', - 'SELECT pid, edge_id, fraction, side from pointsOfInterest', - ARRAY[-1,9], 4.8, 'L', directed => false)$$, + RETURN QUERY SELECT lives_ok($$ + SELECT seq, node, edge, cost::TEXT, agg_cost::TEXT FROM pgr_withPointsDD( + 'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id', + 'SELECT pid, edge_id, fraction, side from pointsOfInterest', + ARRAY[-1,9], 4.8, 'L', directed => false)$$, 'lives: undirected Left'); +END IF; -- undirected b, B RETURN QUERY SELECT lives_ok($$