pgRouting / pgrouting

Repository contains pgRouting library. Development branch is "develop", stable branch is "master"
https://pgrouting.org
GNU General Public License v2.0
1.12k stars 364 forks source link

pgr_nodeNetwork returns old_id as int and not bigint #2628

Open amandhaka opened 3 months ago

amandhaka commented 3 months ago

I am using pgr_nodeNetwork('edges', 0.001, 'id', 'geom', 'noded', '', f) to create the paths network. Since the table is being re-generated multiple times the value of old_id in resulting table have cross integer limit and is giving error

Where: SQL statement "INSERT INTO public."edges_node_network" (old_id,sub_id,geom) ( WITH cut_locations AS
org.postgresql.util.PSQLException: ERROR: integer out of range

I am generating a new table as partition every time and later on attaching it to the parent table. I have changed the datatype of old_id as bigint in parent table but while generating new one it's giving integer out of range error. How to solve this?

Below is the example of table generated with old_id as integer. I have printed the column_name and it's type for the resulting table. Why does pgr_nodeNetwork generate old_id as int even though it's mentioned to be generated as bigint in documentation.

Pgr Version : 3.5

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

id | bigint -- | -- old_id | integer sub_id | integer source | bigint target | bigint geom | USER-DEFINED

I assume the error lies in below code, in file nodeNetwork.sql

      EXECUTE 'CREATE TABLE '||_pgr_quote_ident(outtab)||' (
        id bigserial PRIMARY KEY,
        old_id INTEGER, //this should be BIGINT
        sub_id INTEGER,
        source BIGINT,
        target BIGINT)';
    END IF;