Strange behaviour in pgr_withPoints

Open
#760 4 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 3 days

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
postgresql
Domain
databases

Research direction

The issue involves the pgr_withPoints function in pgRouting. Start by examining the function's source code in the repository, likely in src/withPoints/. Reproduce the bug using the provided SQL backup to understand the data and query behavior. Compare the two queries to identify why the second returns no results, focusing on how the function handles the points of interest table. Look for existing tests related to pgr_withPoints to see expected behavior.

Written by the indexing model from the issue text.

Description

Bug Report Discussion Documentation Enhancement withPoints

Hello everybody, I'm using the proposed function pgr_withPoints, but it seems there is a bug

Expected behavior and actual behavior

The expected result is the one I obtain if I select all the point of interests "limiting" the results for example in this way:

select * from pgr_withPoints('SELECT gid as id, source, target, length_m as cost, length_m as reverse_cost, x1,y1,x2,y2 FROM ways', 'SELECT j.bid as pid, j.way_id as edge_id, j.fraction from join_building_ways j where bid in (13464281, 13464251, 13464250)', -13464281, -13464250);
 seq | path_seq |   node    | edge  |       cost       |     agg_cost     
-----+----------+-----------+-------+------------------+------------------
   1 |        1 | -13464281 | 85965 | 21.3940627565627 |                0
   2 |        2 |     75852 | 85957 | 9.67727907223116 | 21.3940627565627
   3 |        3 |     68330 | 85956 | 7.22238171772227 | 31.0713418287938
   4 |        4 |     71916 | 85955 | 7.18404585924898 | 38.2937235465161
   5 |        5 | -13464250 |    -1 |                0 | 45.4777694057651

If I do this:

select * from pgr_withPoints('SELECT gid as id, source, target, length_m as cost, length_m as reverse_cost, x1,y1,x2,y2 FROM ways', 'SELECT j.bid as pid, j.way_id as edge_id, j.fraction from join_building_ways j', -13464281, -13464250);
 seq | path_seq | node | edge | cost | agg_cost 
-----+----------+------+------+------+----------
(0 rows)

I have no results. Why?

Steps to reproduce the problem

create a db with this backup.
https://www.dropbox.com/s/p9pq9dh2zz1yfir/bug2.sql.zip?dl=0

Specifications like the version of pgRouting/PostGIS and PostgreSQL as well as Operating System

PostgreSQL 9.6.1 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4, 64-bit

POSTGIS="2.3.0 r15146" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.2, 08 September 2015" GDAL="GDAL 1.11.3, released 2015/09/16" LIBXML="2.9.1" RASTER

(2.3.2,v2.3.2,1f2af3c52,master,1.54.0)
Dominant language
C++
Stars
1.4k
Forks
397
Avg merge
2d 16h
Merged PRs (30d)
8

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from pgRouting/pgrouting

All issues in pgRouting/pgrouting

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.