Strange ST_DWithin behavior

Christian Pschierer christian.pschierer at gmx.net
Tue Jan 7 11:30:11 PST 2025


Hi,

I see a strange behavior of ST_DWithin. Below is a sample dataset with 2
airports, 4 versions each, and identical geometries for each version.

Running this query returns all 8 records.

    WITH poly AS (
         SELECT ST_SetSRID('Polygon((77.04180277777778
    11.026911111111112, -68.90305555555557 -22.5, -124.14194444444445
    51.626111111111115, 77.04180277777778
    11.026911111111112))'::geography,4326) AS geom
    )
    SELECT airportident,version,a.geom,poly.geom FROM public.airport AS
    a, poly
    WHERE TRUE
    -- AND a.version = '82765120-5874-4598-920c-35ae3379b4b1'
    -- AND ST_DWithin(a.geom::geography,poly.geom::geography,0.0)
    ORDER BY a.airportident


Adding the ST_DWithin filter should not change the result as all
geometries are within the search polygon (respectively the result should
have 0 or 4 rows if outside).
But in fact, I get 6 records! The versions with uuid
718c720b-2ba4-4600-a09a-b51710fb747d are missing!

    |airportident|version |
    |------------|------------------------------------|
    |SBAU |b25debb4-1d45-4ea8-aed0-634d6b4041fe|
    |SBAU |82765120-5874-4598-920c-35ae3379b4b1|
    |SBAU |2ece0394-31aa-47c9-99af-ed795bf2c83c|
    |URWA |b25debb4-1d45-4ea8-aed0-634d6b4041fe|
    |URWA |82765120-5874-4598-920c-35ae3379b4b1|
    |URWA |2ece0394-31aa-47c9-99af-ed795bf2c83c|


Adding the version filter as well should return 2 records, but it is only 1.

    |airportident|version |
    |------------|------------------------------------|
    |URWA |82765120-5874-4598-920c-35ae3379b4b1|

Do I miss something? My first thought was it is a corrupt index, but the
trick works without index as well. I can reproduce this effect with
PostGIS 3.4.2 / Postgresql 16.3 on Windows, as well as 3.3.3/16.4 on MS
Azure.

Greetings
Christian

Sample Data:

CREATE TABLE public.airport (
airportident character varying(5) NOT NULL,
version uuid NOT NULL,
geom public.geometry(Point,4326)
);
INSERT INTO public.airport VALUES ('SBAU',
'718c720b-2ba4-4600-a09a-b51710fb747d',
'0101000020E6100000E9933EE9933649C0B5814E1BE82435C0');
INSERT INTO public.airport VALUES ('SBAU',
'b25debb4-1d45-4ea8-aed0-634d6b4041fe',
'0101000020E6100000E9933EE9933649C0B5814E1BE82435C0');
INSERT INTO public.airport VALUES ('SBAU',
'82765120-5874-4598-920c-35ae3379b4b1',
'0101000020E6100000E9933EE9933649C0B5814E1BE82435C0');
INSERT INTO public.airport VALUES ('SBAU',
'2ece0394-31aa-47c9-99af-ed795bf2c83c',
'0101000020E6100000E9933EE9933649C0B5814E1BE82435C0');
INSERT INTO public.airport VALUES ('URWA',
'718c720b-2ba4-4600-a09a-b51710fb747d',
'0101000020E6100000F36AE259D10048404444444444244740');
INSERT INTO public.airport VALUES ('URWA',
'b25debb4-1d45-4ea8-aed0-634d6b4041fe',
'0101000020E6100000F36AE259D10048404444444444244740');
INSERT INTO public.airport VALUES ('URWA',
'82765120-5874-4598-920c-35ae3379b4b1',
'0101000020E6100000F36AE259D10048404444444444244740');
INSERT INTO public.airport VALUES ('URWA',
'2ece0394-31aa-47c9-99af-ed795bf2c83c',
'0101000020E6100000F36AE259D10048404444444444244740');
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-users/attachments/20250107/c470e0d2/attachment.htm>


More information about the postgis-users mailing list