[Tile-serving] [openstreetmap/osm2pgsql] Dropped ways on particular diff (#735)

Paul Norman notifications at github.com
Wed Apr 12 19:53:41 UTC 2017


I broke out gdb and stepped through to see what IDs output_multi_t::enqueue_ways is called with

When working as expected, they are
127018391
312476311
9223372036854775807 (= 2^63 - 1)

When not working, they are
85486005
127018391
9223372036854775807 (= 2^63 - 1)

The max signed signed bigint is coming from https://github.com/openstreetmap/osm2pgsql/blob/c3d17f4ca13fbfa036b9b0c033b1c08b16bc6bf4/middle-pgsql.cpp#L588. Both pending lists look correct as passed *into* the function.

When working as expected with the building the following are calls to job_queue

`output-multi.cpp:89` `job_queue.push(pending_job_t(127018391, 0));`
`output-multi.cpp:110` `job_queue.push(pending_job_t(127018391, 0));`

And the job_queue is std::stack wrapping: std::deque with 2 elements = {{osm_id = 127018391, output_id = 0}, {osm_id = 127018391, output_id = 0}}. So there's two of the building.

When not working, no job_queue push calls are made with the building.

Looking through the differences between `output_pgsql_t::enqueue_ways` and `output_multi_t::enqueue_ways` I see that the last condition is `==` for multi and `>` for pgsql. Changing that, both job queues have the one occurrence of the building, and the output checks out.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/openstreetmap/osm2pgsql/issues/735#issuecomment-293688924
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/tile-serving/attachments/20170412/2755b85e/attachment.html>


More information about the Tile-serving mailing list