<div dir="ltr">Paul,<div><br></div><div>Unfortunately, when we use the _ST_DistanceUncached via the _st_distance() stored procedure change, we start to see failures in other places.  As I said, I am trying to isolate them, but the failures that we start to see are fairly random: the initial issue is fixed, but we start to receive bad data back from other queries, and not repeatable through two test runs.  That makes it much harder to isolate, given the size of our application.</div>
<div><br></div><div>Thus, this fix introduces a bit of "randomness".</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Mon, Feb 3, 2014 at 4:19 PM, Paul Ramsey <span dir="ltr"><<a href="mailto:pramsey@cleverelephant.ca" target="_blank">pramsey@cleverelephant.ca</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Jerry,<br>
<br>
Pretty important to isolate them, as that function's at the bottom of<br>
the cached tree algorithm, so even if I fix the gap in the cache logic<br>
I think I have found, you'll still run into other issues later.<br>
<br>
_ST_DistanceUncached uses brute force (aka 2.0) methods, and should<br>
work without change from previous versions (would be nice to hear<br>
confirmation of *that* assumption at least)<br>
<div class="im HOEnZb"><br>
P.<br>
<br>
On Mon, Feb 3, 2014 at 12:55 PM, Jerry Sievert<br>
<<a href="mailto:jerry@legitimatesounding.com">jerry@legitimatesounding.com</a>> wrote:<br>
</div><div class="HOEnZb"><div class="h5">> The workaround as provided exposes multiple other issues for us. I can try<br>
> to isolate them, but essentially it causes random looking test failures in<br>
> our app.<br>
><br>
> On Feb 1, 2014, at 6:55 PM, "Paragon Corporation" <<a href="mailto:lr@pcorp.us">lr@pcorp.us</a>> wrote:<br>
><br>
> Jerry,<br>
> We know it's a PostGIS bug.  The bug I think came in 2.1.0.  It was the<br>
> change in geography to use geography cache /tree as I recall.  You aren't<br>
> the first to notice (though you provided a very succinct example).  It's a<br>
> hard bug to nail where it's happening. My naive guess is that it's somewhere<br>
> around here - that's about as far into tracing I've gotten unfortunately.<br>
><br>
> <a href="http://postgis.net/docs/doxygen/2.2/d8/de3/geography__measurement__trees_8c_a399a5e30071a3979b414ce094ff94de9.html#a399a5e30071a3979b414ce094ff94de9" target="_blank">http://postgis.net/docs/doxygen/2.2/d8/de3/geography__measurement__trees_8c_a399a5e30071a3979b414ce094ff94de9.html#a399a5e30071a3979b414ce094ff94de9</a><br>

> (where it computes the last distance) (<br>
><br>
> circ_tree_distance_tree(tree_cache->index, circ_tree, s, FP_TOLERANCE);<br>
><br>
><br>
> and<br>
><br>
> <a href="http://postgis.net/docs/doxygen/2.2/de/dc0/lwgeodetic__tree_8c_a15d46de87264f168426b23b4b34d75ab.html#a15d46de87264f168426b23b4b34d75ab" target="_blank">http://postgis.net/docs/doxygen/2.2/de/dc0/lwgeodetic__tree_8c_a15d46de87264f168426b23b4b34d75ab.html#a15d46de87264f168426b23b4b34d75ab</a><br>

> (circ_tree_distance_tree)<br>
><br>
> As a work around if you are in a rush and until we have the  issue resolved,<br>
> you could swap out the definition of _ST_Distance with the<br>
> _ST_DistanceUncached.  It will be slower but should produce correct results.<br>
> Basically run this:<br>
><br>
> CREATE OR REPLACE FUNCTION _st_distance(geography, geography, double<br>
> precision, boolean)<br>
>   RETURNS double precision AS<br>
> '$libdir/postgis-2.2', 'geography_distance_uncached'<br>
>   LANGUAGE c IMMUTABLE STRICT<br>
>   COST 100;<br>
><br>
><br>
> See my note here:<br>
> <a href="http://trac.osgeo.org/postgis/ticket/2556" target="_blank">http://trac.osgeo.org/postgis/ticket/2556</a><br>
><br>
> Thanks for your patience,<br>
> Regina<br>
><br>
> <a href="http://www.postgis.us" target="_blank">http://www.postgis.us</a><br>
> <a href="http://postgis.net" target="_blank">http://postgis.net</a><br>
><br>
> ________________________________<br>
> From: <a href="mailto:postgis-users-bounces@lists.osgeo.org">postgis-users-bounces@lists.osgeo.org</a><br>
> [mailto:<a href="mailto:postgis-users-bounces@lists.osgeo.org">postgis-users-bounces@lists.osgeo.org</a>] On Behalf Of Jerry Sievert<br>
> Sent: Saturday, February 01, 2014 1:24 PM<br>
> To: PostGIS Users Discussion<br>
> Subject: Re: [postgis-users] Odd Behavior with ST_Intersects (PostGIS 2.1,<br>
> Ubuntu 12.04)<br>
><br>
> After spending some time trying to track down which package/version the bug<br>
> occurs in, I found that it is actually from the upgrade of PostGIS from<br>
> 2.0.4 to 2.1.1.  I will see if I can spend more time to isolate it further,<br>
> but I did confirm that it is PostGIS, not one of the dependencies.<br>
><br>
><br>
><br>
> On Fri, Jan 31, 2014 at 8:33 PM, Paragon Corporation <<a href="mailto:lr@pcorp.us">lr@pcorp.us</a>> wrote:<br>
>><br>
>> ah found the other one:<br>
>><br>
>> <a href="http://trac.osgeo.org/postgis/ticket/2556" target="_blank">http://trac.osgeo.org/postgis/ticket/2556</a><br>
>><br>
>> ________________________________<br>
>> From: <a href="mailto:postgis-users-bounces@lists.osgeo.org">postgis-users-bounces@lists.osgeo.org</a><br>
>> [mailto:<a href="mailto:postgis-users-bounces@lists.osgeo.org">postgis-users-bounces@lists.osgeo.org</a>] On Behalf Of Paragon<br>
>> Corporation<br>
>> Sent: Friday, January 31, 2014 11:27 PM<br>
>> To: 'PostGIS Users Discussion'<br>
>> Cc: 'PostGIS Development Discussion'<br>
>> Subject: Re: [postgis-users] Odd Behavior with ST_Intersects (PostGIS<br>
>> 2.1,Ubuntu 12.04)<br>
>><br>
>> Jerry,<br>
>><br>
>> Thanks very much for the report.  I had noticed what I think might be the<br>
>> same issue, but couldn't find such a short and succinct example as yours to<br>
>> reproduce.<br>
>><br>
>> I have added to my original ticket:<br>
>> <a href="http://trac.osgeo.org/postgis/ticket/2422" target="_blank">http://trac.osgeo.org/postgis/ticket/2422</a><br>
>><br>
>> I think there is another ticket in our bug tracker that might be the same<br>
>> issue too but can't recall the number.<br>
>><br>
>> Thanks very very much for this great example.<br>
>><br>
>> Paul -- if you are watching you have work to do :)<br>
>><br>
>> Thanks,<br>
>> Regina<br>
>> <a href="http://www.postgis.us" target="_blank">http://www.postgis.us</a><br>
>> <a href="http://postgis.net" target="_blank">http://postgis.net</a><br>
>><br>
>><br>
>><br>
>><br>
>> ________________________________<br>
>> From: <a href="mailto:postgis-users-bounces@lists.osgeo.org">postgis-users-bounces@lists.osgeo.org</a><br>
>> [mailto:<a href="mailto:postgis-users-bounces@lists.osgeo.org">postgis-users-bounces@lists.osgeo.org</a>] On Behalf Of Jerry Sievert<br>
>> Sent: Friday, January 31, 2014 6:25 PM<br>
>> To: <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
>> Subject: [postgis-users] Odd Behavior with ST_Intersects (PostGIS<br>
>> 2.1,Ubuntu 12.04)<br>
>><br>
>> Hello,<br>
>><br>
>> I am using Ubuntu 12.04 with the official PostgreSQL apt repo (via<br>
>> <a href="https://wiki.postgresql.org/wiki/Apt" target="_blank">https://wiki.postgresql.org/wiki/Apt</a>).  I am running into an easily<br>
>> reproducible issue, and was hoping for some help to solve this.<br>
>><br>
>> When using ST_Intersects() not all rows that intersect are returned.  This<br>
>> was not the case in previous versions that we have upgraded from.<br>
>><br>
>> These are the steps to reproduce on a fresh install of Ubuntu 12.04 with<br>
>> all packages updated and PostGIS/PostgreSQL 9.3 installed:<br>
>><br>
>> test=# CREATE TABLE test (id serial, condition_geo geography);<br>
>> CREATE TABLE<br>
>> test=# INSERT INTO test (condition_geo) VALUES<br>
>> (ST_Buffer(ST_GeogFromWKB(ST_MakePoint(20.0,30.0)),10.0));<br>
>> INSERT 0 1<br>
>> test=# SELECT id FROM test WHERE ST_Intersects("condition_geo",<br>
>> ST_Buffer(ST_GeogFromText('POINT(20.0 30.0)'), 20.0)) IS TRUE;<br>
>>  id<br>
>> ----<br>
>>   1<br>
>> (1 row)<br>
>><br>
>> test=# INSERT INTO test (condition_geo) VALUES<br>
>> (ST_Buffer(ST_GeogFromWKB(ST_MakePoint(20.0,30.0)),10.0));<br>
>> INSERT 0 1<br>
>> test=# SELECT id FROM test WHERE ST_Intersects("condition_geo",<br>
>> ST_Buffer(ST_GeogFromText('POINT(20.0 30.0)'), 20.0)) IS TRUE;<br>
>>  id<br>
>> ----<br>
>>   1<br>
>> (1 row)<br>
>><br>
>> test=# SELECT id FROM test WHERE ST_Intersects("condition_geo",<br>
>> ST_Buffer(ST_GeogFromText('POINT(20.0 30.0)'), 20.0)) IS TRUE AND id = 2;<br>
>>  id<br>
>> ----<br>
>>   2<br>
>> (1 row)<br>
>><br>
>> Note that the SELECT should return both rows 1 and 2 in the first SELECT.<br>
>><br>
>> Any thoughts?<br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> postgis-users mailing list<br>
>> <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
>> <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
><br>
><br>
> _______________________________________________<br>
> postgis-users mailing list<br>
> <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
> <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
><br>
><br>
> _______________________________________________<br>
> postgis-users mailing list<br>
> <a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
> <a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
_______________________________________________<br>
postgis-users mailing list<br>
<a href="mailto:postgis-users@lists.osgeo.org">postgis-users@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users" target="_blank">http://lists.osgeo.org/cgi-bin/mailman/listinfo/postgis-users</a><br>
</div></div></blockquote></div><br></div>