different results for ST_Relate with 3 parameters compared to those for ST_Relate with 2 parameters

Scott public at postholer.com
Wed Oct 15 10:45:24 PDT 2025


Not sure if it matters, but 3 variants of st_relate exist. The WHERE for 
bool is variant 1 and the WHERE for text is variant 2. Variant 2 and 3 
return text, but are different return types. Maybe 2 different results 
is to be expected?

Docs:

https://postgis.net/docs/ST_Relate.html

Scott



On 10/15/25 10:28, Paul Ramsey via postgis-users wrote:
> Maybe you have found an old bug? Running exactly the same SQL as you, I 
> get two rows from each query.
> 
> postgis=# SELECT d.id <http://d.id>,                                     
>                                                                          
>                                                 ST_Relate(d.geom, 
> l.geom) as patternMatrix                                                 
>                                                                      
> FROM docks as d, lakes as l                                             
>                                                                          
>                   WHERE ST_Relate(d.geom, l.geom, '1FF00F212');
>   id | patternmatrix
> ----+---------------
>    1 | 1FF00F212
>    2 | 1FF00F212
> (2 rows)
> 
> postgis=# SELECT
> postgis-# d.id <http://d.id>,
> postgis-#   ST_Relate(d.geom, l.geom) as patternMatrix
> postgis-# FROM docks as d, lakes as l
> postgis-# WHERE ST_Relate(d.geom, l.geom) = '1FF00F212';
>   id | patternmatrix
> ----+---------------
>    1 | 1FF00F212
>    2 | 1FF00F212
> (2 rows)
> 
> postgis=#
> postgis=# select postgis_full_version();
>                                                                          
>                                                                          
>                                                                          
>            postgis_full_version
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>   POSTGIS="3.7.0dev 3.6.0rc2-134-g5dc95f1bc" [EXTENSION] PGSQL="180" 
> GEOS="3.15.0dev-CAPI-1.21.0" PROJ="9.6.2 NETWORK_ENABLED=ON 
> URL_ENDPOINT=https://cdn.proj.org <https://cdn.proj.org> 
> USER_WRITABLE_DIRECTORY=/Users/pramsey/Library/Application Support/proj 
> DATABASE_PATH=/opt/homebrew/Cellar/proj/9.6.2/share/proj/ 
> proj.db" (compiled against PROJ 9.6.2) LIBXML="2.9.13" LIBJSON="0.18" 
> LIBPROTOBUF="1.5.2" WAGYU="0.5.0 (Internal)" (core procs from "3.7.0dev 
> 3.6.0rc2-125-g747d7732b" need upgrade)
> 
> On Wed, Oct 15, 2025 at 9:22 AM Antonio Valanzano <anvalanz at gmail.com 
> <mailto:anvalanz at gmail.com>> wrote:
> 
>     I am following the "Introduction to PostGIS " tutorial  at https://
>     postgis.net/workshops/postgis-intro/ <https://postgis.net/workshops/
>     postgis-intro/>
>     and for chapter 26 "Dimensionally Extended 9-Intersection Model"  I
>     am trying to replicate the examples.
> 
>     If I use the two different versions of ST_Relate I do not obtain the
>     same result
> 
>     SELECT
>     d.id <http://d.id>,
>        ST_Relate(d.geom, l.geom) as patternMatrix
>     FROM docks as d, lakes as l
>     WHERE ST_Relate(d.geom, l.geom, '1FF00F212') = true;
>     -- 1 row
>     "id" "patternmatrix"
>     1    "1FF00F212"
> 
> 
> 
>     SELECT
>     d.id <http://d.id>,
>        ST_Relate(d.geom, l.geom) as patternMatrix
>     FROM docks as d, lakes as l
>     WHERE ST_Relate(d.geom, l.geom) = '1FF00F212';
>     -- 2 rows
>     "id" "patternmatrix"
>     1    "1FF00F212"
>     2    "1FF00F212"
> 
>     Could someone give me an explanation of such a difference ?
> 
> 



More information about the postgis-users mailing list