Commit cda136b3 authored by Bas Couwenberg's avatar Bas Couwenberg

Imported Upstream version 2.2.3

parent 9b17bafe
......@@ -27,7 +27,6 @@ branches:
only:
- master
- develop
- hotFix/issue552
env:
- POSTGRESQL_VERSION=9.1
......@@ -79,12 +78,12 @@ before_script:
script:
- ./tools/travis/pgrouting_build.sh $POSTGRESQL_VERSION $POSTGIS_VERSION
after_script:
# note: right takes the travis default
- ./tools/travis/pgrouting_test.sh $POSTGRESQL_VERSION postgres
- ./tools/testers/pg_prove_tests.sh postgres
after_script:
# nothing
#after_success:
#- ./tools/travis/pgrouting_deploy.sh $POSTGRESQL_VERSION $POSTGIS_VERSION
......@@ -31,7 +31,7 @@ SET(POSTGRESQL_BIN "" CACHE STRING "Define optional path to PostgreSQL binaries
# PGROUTING version number.
set(PGROUTING_VERSION_MAJOR "2")
set(PGROUTING_VERSION_MINOR "2")
set(PGROUTING_VERSION_PATCH "2")
set(PGROUTING_VERSION_PATCH "3")
set(PGROUTING_VERSION_STRING "${PGROUTING_VERSION_MAJOR}.${PGROUTING_VERSION_MINOR}.${PGROUTING_VERSION_PATCH}")
set(PGROUTING_VERSION "${PGROUTING_VERSION_MAJOR}.${PGROUTING_VERSION_MINOR}")
......@@ -41,7 +41,7 @@ set(POSTGIS_MINIMUM_VERSION "2.0.0")
file(STRINGS "${PGROUTING_SOURCE_DIR}/VERSION" PGROUTING_BUILD_STRING)
set(PGROUTING_GIT_TAG "pgrouting-2.2.2")
set(PGROUTING_GIT_TAG "pgrouting-2.2.3")
#string(REGEX REPLACE "^(.+)-([0-9]+)-g([0-9a-f]+) (.*)$" "\\1" PGROUTING_GIT_TAG ${PGROUTING_BUILD_STRING})
string(REGEX REPLACE "^(.+)-([^-]+)-[0-9]+-g([0-9a-f]+) (.*)$" "\\2" PGROUTING_GIT_BUILD ${PGROUTING_BUILD_STRING})
string(REGEX REPLACE "^(.+)-([0-9]+)-g([0-9a-f]+) (.*)$" "\\3" PGROUTING_GIT_HASH ${PGROUTING_BUILD_STRING})
......
Changes for 2.2.3
-------------------------------------------------------------------------------
- Fixed compatibility issues with PostgreSQL 9.6.
Changes for 2.2.2
-------------------------------------------------------------------------------
......
......@@ -6,7 +6,7 @@
### Branches
The *master* branch reflects the current 2.2.2 release.
The *master* branch reflects the current 2.2.3 release.
The *develop* branch reflects the 2.3.0-dev
......
pgrouting-2.2.2-12-g544044b master
pgrouting-2.2.3-4-g6d05b9b master
......@@ -177,6 +177,7 @@ Change Log
:ref:`change_log`
- :ref:`changelog_2_2_3`
- :ref:`changelog_2_2_2`
- :ref:`changelog_2_2_1`
- :ref:`changelog_2_2_0`
......
..
****************************************************************************
pgRouting Manual
Copyright(c) pgRouting Contributors
This documentation is licensed under a Creative Commons Attribution-Share
Alike 3.0 License: http://creativecommons.org/licenses/by-sa/3.0/
****************************************************************************
.. _changelog_2_2_3:
pgRouting 2.2.3 Release Notes
===============================================================================
With the release of pgRouting 2.2.e fixes compatibility issues with PostgreSQL 9.6.
- To see the full list of changes check the list of `Git commits <https://github.com/pgRouting/pgrouting/commits>`_ on Github.
- To see the issues closed by this release see the `Git closed issues <https://github.com/pgRouting/pgrouting/issues?q=milestone%3ARelease-2.2.3+is%3Aclosed>`_ on Github.
- For important changes see the following release notes.
Release Notes
-------------------------------------------------------------------------------
Changes for release 2.2.3
* Fixed compatibility issues with PostgreSQL 9.6.
......@@ -12,6 +12,7 @@
Release Notes
===============================================================================
- :ref:`changelog_2_2_3`
- :ref:`changelog_2_2_2`
- :ref:`changelog_2_2_1`
- :ref:`changelog_2_2_0`
......@@ -22,6 +23,7 @@ Release Notes
.. toctree::
:hidden:
2_2_3
2_2_2
2_2_1
2_2_0
......
......@@ -164,22 +164,22 @@ floydWarshall(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
/*********************************************************************/
values = palloc(3 * sizeof(Datum));
nulls = palloc(3 * sizeof(char));
nulls = palloc(3 * sizeof(bool));
// postgres starts counting from 1
values[0] = Int64GetDatum(result_tuples[call_cntr].from_vid);
nulls[0] = ' ';
nulls[0] = false;
values[1] = Int64GetDatum(result_tuples[call_cntr].to_vid);
nulls[1] = ' ';
nulls[1] = false;
values[2] = Float8GetDatum(result_tuples[call_cntr].cost);
nulls[2] = ' ';
nulls[2] = false;
/*********************************************************************/
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
result = HeapTupleGetDatum(tuple);
SRF_RETURN_NEXT(funcctx, result);
} else {
......
......@@ -161,7 +161,7 @@ johnson(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
/*********************************************************************/
/* MODIFY AS NEEDED */
......@@ -171,19 +171,19 @@ johnson(PG_FUNCTION_ARGS) {
// OUT cost float)
values = palloc(3 * sizeof(Datum));
nulls = palloc(3 * sizeof(char));
nulls = palloc(3 * sizeof(bool));
// postgres starts counting from 1
values[0] = Int64GetDatum(result_tuples[call_cntr].from_vid);
nulls[0] = ' ';
nulls[0] = false;
values[1] = Int64GetDatum(result_tuples[call_cntr].to_vid);
nulls[1] = ' ';
nulls[1] = false;
values[2] = Float8GetDatum(result_tuples[call_cntr].cost);
nulls[2] = ' ';
nulls[2] = false;
/*********************************************************************/
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
result = HeapTupleGetDatum(tuple);
SRF_RETURN_NEXT(funcctx, result);
} else {
......
......@@ -366,7 +366,7 @@ Datum alphashape(PG_FUNCTION_ARGS)
*/
values = palloc(2 * sizeof(Datum));
nulls = palloc(2 * sizeof(char));
nulls = palloc(2 * sizeof(bool));
x = res[call_cntr].x;
y = res[call_cntr].y;
......@@ -374,20 +374,20 @@ Datum alphashape(PG_FUNCTION_ARGS)
{
values[0] = 0;
values[1] = 0;
nulls[0] = 'n';
nulls[1] = 'n';
nulls[0] = true;
nulls[1] = true;
}
else
{
values[0] = Float8GetDatum(x);
values[1] = Float8GetDatum(y);
nulls[0] = ' ';
nulls[1] = ' ';
nulls[0] = false;
nulls[1] = false;
}
PGR_DBG("Heap making\n");
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
PGR_DBG("Datum making\n");
......
......@@ -460,23 +460,23 @@ shortest_path_astar(PG_FUNCTION_ARGS)
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
values = palloc(4 * sizeof(Datum));
nulls = palloc(4 * sizeof(char));
nulls = palloc(4 * sizeof(bool));
values[0] = Int32GetDatum(call_cntr);
nulls[0] = ' ';
nulls[0] = false;
values[1] = Int32GetDatum(path[call_cntr].vertex_id);
nulls[1] = ' ';
nulls[1] = false;
values[2] = Int32GetDatum(path[call_cntr].edge_id);
nulls[2] = ' ';
nulls[2] = false;
values[3] = Float8GetDatum(path[call_cntr].cost);
nulls[3] = ' ';
nulls[3] = false;
PGR_DBG("Heap making\n");
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
PGR_DBG("Datum making\n");
......
......@@ -459,23 +459,23 @@ bidir_astar_shortest_path(PG_FUNCTION_ARGS)
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
values = palloc(4 * sizeof(Datum));
nulls = palloc(4 * sizeof(char));
nulls = palloc(4 * sizeof(bool));
values[0] = Int32GetDatum(call_cntr);
nulls[0] = ' ';
nulls[0] = false;
values[1] = Int32GetDatum(path[call_cntr].vertex_id);
nulls[1] = ' ';
nulls[1] = false;
values[2] = Int32GetDatum(path[call_cntr].edge_id);
nulls[2] = ' ';
nulls[2] = false;
values[3] = Float8GetDatum(path[call_cntr].cost);
nulls[3] = ' ';
nulls[3] = false;
PGR_DBG("Heap making\n");
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
PGR_DBG("Datum making\n");
......
......@@ -391,21 +391,21 @@ bidir_dijkstra_shortest_path(PG_FUNCTION_ARGS)
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
values = palloc(4 * sizeof(Datum));
nulls = palloc(4 * sizeof(char));
nulls = palloc(4 * sizeof(bool));
values[0] = Int32GetDatum(call_cntr);
nulls[0] = ' ';
nulls[0] = false;
values[1] = Int32GetDatum(path[call_cntr].vertex_id);
nulls[1] = ' ';
nulls[1] = false;
values[2] = Int32GetDatum(path[call_cntr].edge_id);
nulls[3] = ' ';
nulls[3] = false;
values[3] = Float8GetDatum(path[call_cntr].cost);
nulls[3] = ' ';
nulls[3] = false;
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
// make the tuple into a datum
result = HeapTupleGetDatum(tuple);
......
......@@ -24,8 +24,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#pragma once
#ifndef __cplusplus
#include "postgres.h"
#endif
#include <stdint.h>
#include <stdbool.h>
typedef struct edge_astar
{
......
......@@ -193,7 +193,7 @@ dijkstraVia(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
/*******************************************************************************/
/* MODIFY AS NEEDED */
......@@ -201,10 +201,10 @@ dijkstraVia(PG_FUNCTION_ARGS) {
size_t numb_out = 10;
values = palloc(numb_out * sizeof(Datum));
nulls = palloc(numb_out * sizeof(char));
nulls = palloc(numb_out * sizeof(bool));
size_t i;
for(i = 0; i< numb_out; ++i) {
nulls[i] = ' ';
nulls[i] = false;
}
// postgres starts counting from 1
......@@ -221,7 +221,7 @@ dijkstraVia(PG_FUNCTION_ARGS) {
/*******************************************************************************/
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
result = HeapTupleGetDatum(tuple);
SRF_RETURN_NEXT(funcctx, result);
} else {
......
......@@ -202,7 +202,7 @@ many_to_many_dijkstra(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
/*********************************************************************/
/* MODIFY AS NEEDED */
......@@ -216,11 +216,11 @@ many_to_many_dijkstra(PG_FUNCTION_ARGS) {
// OUT agg_cost float)
values = palloc(8 * sizeof(Datum));
nulls = palloc(8 * sizeof(char));
nulls = palloc(8 * sizeof(bool));
size_t i;
for (i = 0; i < 8; ++i) {
nulls[i] = ' ';
nulls[i] = false;
}
values[0] = Int32GetDatum(call_cntr + 1);
......@@ -233,7 +233,7 @@ many_to_many_dijkstra(PG_FUNCTION_ARGS) {
values[7] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
/*********************************************************************/
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
result = HeapTupleGetDatum(tuple);
SRF_RETURN_NEXT(funcctx, result);
} else {
......
......@@ -194,7 +194,7 @@ many_to_one_dijkstra(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
/*********************************************************************/
/* MODIFY AS NEEDED */
......@@ -208,11 +208,11 @@ many_to_one_dijkstra(PG_FUNCTION_ARGS) {
// OUT agg_cost FLOAT)
values = palloc(7 * sizeof(Datum));
nulls = palloc(7 * sizeof(char));
nulls = palloc(7 * sizeof(bool));
size_t i;
for (i = 0; i < 7; ++i) {
nulls[i] = ' ';
nulls[i] = false;
}
// postgres starts counting from 1
......@@ -225,7 +225,7 @@ many_to_one_dijkstra(PG_FUNCTION_ARGS) {
values[6] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
/*********************************************************************/
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
result = HeapTupleGetDatum(tuple);
SRF_RETURN_NEXT(funcctx, result);
} else {
......
......@@ -194,7 +194,7 @@ one_to_many_dijkstra(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
/*********************************************************************/
/* MODIFY AS NEEDED */
......@@ -207,12 +207,12 @@ one_to_many_dijkstra(PG_FUNCTION_ARGS) {
// OUT agg_cost float)
values = palloc(7 * sizeof(Datum));
nulls = palloc(7 * sizeof(char));
nulls = palloc(7 * sizeof(bool));
size_t i;
for (i = 0; i < 7; ++i) {
nulls[i] = ' ';
nulls[i] = false;
}
// postgres starts counting from 1
......@@ -225,7 +225,7 @@ one_to_many_dijkstra(PG_FUNCTION_ARGS) {
values[6] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
/*********************************************************************/
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
result = HeapTupleGetDatum(tuple);
SRF_RETURN_NEXT(funcctx, result);
} else {
......
......@@ -189,7 +189,7 @@ one_to_one_dijkstra(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
/**********************************************************************/
/* MODIFY AS NEEDED */
......@@ -201,12 +201,12 @@ one_to_one_dijkstra(PG_FUNCTION_ARGS) {
// OUT agg_cost FLOAT
values = palloc(6 * sizeof(Datum));
nulls = palloc(6 * sizeof(char));
nulls = palloc(6 * sizeof(bool));
size_t i;
for (i = 0; i < 6; ++i) {
nulls[i] = ' ';
nulls[i] = false;
}
// postgres starts counting from 1
......@@ -218,7 +218,7 @@ one_to_one_dijkstra(PG_FUNCTION_ARGS) {
values[5] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
/**********************************************************************/
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
result = HeapTupleGetDatum(tuple);
SRF_RETURN_NEXT(funcctx, result);
} else {
......
......@@ -156,25 +156,25 @@ driving_distance(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
values = palloc(5 * sizeof(Datum));
nulls = palloc(5 * sizeof(char));
nulls = palloc(5 * sizeof(bool));
// TODO version 3.0 change to
// values[0] = Int64GetDatum(ret_path[call_cntr].seq + 1);
nulls[0] = ' ';
nulls[1] = ' ';
nulls[2] = ' ';
nulls[3] = ' ';
nulls[4] = ' ';
nulls[0] = false;
nulls[1] = false;
nulls[2] = false;
nulls[3] = false;
nulls[4] = false;
values[0] = Int32GetDatum(ret_path[call_cntr].seq + 1);
values[1] = Int64GetDatum(ret_path[call_cntr].node);
values[2] = Int64GetDatum(ret_path[call_cntr].edge);
values[3] = Float8GetDatum(ret_path[call_cntr].cost);
values[4] = Float8GetDatum(ret_path[call_cntr].agg_cost);
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
/* make the tuple into a datum */
result = HeapTupleGetDatum(tuple);
......
......@@ -158,17 +158,17 @@ driving_many_to_dist(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
values = palloc(6 * sizeof(Datum));
nulls = palloc(6 * sizeof(char));
nulls = palloc(6 * sizeof(bool));
// id, start_v, node, edge, cost, tot_cost
nulls[0] = ' ';
nulls[1] = ' ';
nulls[2] = ' ';
nulls[3] = ' ';
nulls[4] = ' ';
nulls[5] = ' ';
nulls[0] = false;
nulls[1] = false;
nulls[2] = false;
nulls[3] = false;
nulls[4] = false;
nulls[5] = false;
values[0] = Int32GetDatum(call_cntr + 1);
values[1] = Int64GetDatum(ret_path[call_cntr].start_id);
values[2] = Int64GetDatum(ret_path[call_cntr].node);
......@@ -176,7 +176,7 @@ driving_many_to_dist(PG_FUNCTION_ARGS) {
values[4] = Float8GetDatum(ret_path[call_cntr].cost);
values[5] = Float8GetDatum(ret_path[call_cntr].agg_cost);
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
/* make the tuple into a datum */
result = HeapTupleGetDatum(tuple);
......
......@@ -233,17 +233,17 @@ many_withPointsDD(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
values = palloc(6 * sizeof(Datum));
nulls = palloc(6 * sizeof(char));
nulls = palloc(6 * sizeof(bool));
// id, start_v, node, edge, cost, tot_cost
nulls[0] = ' ';
nulls[1] = ' ';
nulls[2] = ' ';
nulls[3] = ' ';
nulls[4] = ' ';
nulls[5] = ' ';
nulls[0] = false;
nulls[1] = false;
nulls[2] = false;
nulls[3] = false;
nulls[4] = false;
nulls[5] = false;
values[0] = Int32GetDatum(call_cntr + 1);
values[1] = Int64GetDatum(result_tuples[call_cntr].start_id);
values[2] = Int64GetDatum(result_tuples[call_cntr].node);
......@@ -251,7 +251,7 @@ many_withPointsDD(PG_FUNCTION_ARGS) {
values[4] = Float8GetDatum(result_tuples[call_cntr].cost);
values[5] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
/* make the tuple into a datum */
result = HeapTupleGetDatum(tuple);
......
......@@ -230,7 +230,7 @@ withPoints_dd(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
/*******************************************************************************/
/* MODIFY AS NEEDED */
......@@ -242,11 +242,11 @@ withPoints_dd(PG_FUNCTION_ARGS) {
values = palloc(5 * sizeof(Datum));
nulls = palloc(5 * sizeof(char));
nulls = palloc(5 * sizeof(bool));
size_t i;
for(i = 0; i < 6; ++i) {
nulls[i] = ' ';
nulls[i] = false;
}
......@@ -258,7 +258,7 @@ withPoints_dd(PG_FUNCTION_ARGS) {
values[4] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
/*******************************************************************************/
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
result = HeapTupleGetDatum(tuple);
SRF_RETURN_NEXT(funcctx, result);
} else {
......
......@@ -240,16 +240,16 @@ withPoints_ksp(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
/*******************************************************************************/
/* MODIFY AS NEEDED */
values = palloc(7 * sizeof(Datum));
nulls = palloc(7 * sizeof(char));
nulls = palloc(7 * sizeof(bool));
size_t i;
for(i = 0; i < 7; ++i) {
nulls[i] = ' ';
nulls[i] = false;
}
/*
......@@ -269,7 +269,7 @@ withPoints_ksp(PG_FUNCTION_ARGS) {
values[6] = Float8GetDatum(result_tuples[call_cntr].agg_cost);
/*******************************************************************************/
tuple =heap_formtuple(tuple_desc, values, nulls);
tuple =heap_form_tuple(tuple_desc, values, nulls);
result = HeapTupleGetDatum(tuple);
SRF_RETURN_NEXT(funcctx, result);
} else {
......
......@@ -138,21 +138,21 @@ vrppdtw(PG_FUNCTION_ARGS) {
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
PGR_DBG("Till hereee ", NULL);
values = palloc(4 * sizeof(Datum));
nulls = palloc(4 * sizeof(char));
nulls = palloc(4 * sizeof(bool));
nulls[0] = ' ';
nulls[1] = ' ';
nulls[2] = ' ';
nulls[3] = ' ';
nulls[0] = false;
nulls[1] = false;
nulls[2] = false;
nulls[3] = false;
values[0] = Int32GetDatum(results[call_cntr].seq);
values[1] = Int64GetDatum(results[call_cntr].rid);
values[2] = Int64GetDatum(results[call_cntr].nid);
values[3] = Float8GetDatum(results[call_cntr].cost);
tuple = heap_formtuple(tuple_desc, values, nulls);
tuple = heap_form_tuple(tuple_desc, values, nulls);
/* make the tuple into a datum */
result = HeapTupleGetDatum(tuple);
......
......@@ -541,21 +541,21 @@ shortest_path_shooting_star(PG_FUNCTION_ARGS)
HeapTuple tuple;
Datum result;
Datum *values;
char* nulls;
bool* nulls;
values = palloc(4 * sizeof(Datum));
nulls = palloc(4 * sizeof(char));
nulls = palloc(4 * sizeof(bool));
values[0] = Int32GetDatum(call_cntr);
nulls[0] = ' ';
nulls[0] = false;
values[1] = Int32GetDatum(path[call_cntr].vertex_id);
nulls[1] = ' ';
nulls[1] = false;
values[2] = Int32GetDatum(path[call_cntr].edge_id);
nulls[2] = ' ';
nulls[2] = false;