[geos-devel] Is GEOS 3.11 C-API upward compatible with GEOS 3.9.0

Regina Obe lr at pcorp.us
Sun Dec 5 09:12:40 PST 2021


I was always under the assumption that the C-API should be upward compatible
(only the C++ API is unstable).

Normally  I can do the following:

Compile PostGIS with GEOS say 3.9.0

Launch my PostgreSQL with GEOS 3.9.0

Then launch again with newer GEOS - in this case GEOS 3.11.

So my PostGIS is compiled with GEOS 3.9.0, but it should work with GEOS
3.11.

What I am finding is it is not.  I thought maybe I had the paths wrong so I
double-checked a couple of times.

This is what I get when I swap out the older GEOS 3.9.0 with newer GEOS 3.11
(main branch)

And then run any PostGIS function.

ERROR:  could not load library
"C:/ming64gcc81/projects/postgresql/rel/pg14w64gcc81/lib/postgis-3.2.dll":
The specified module could not be found.

I then tried to swap with GEOS 3.10.0  and that worked okay.
POSTGIS="3.2.0dev 3.2.0beta3-2-g0b32bdd14" [EXTENSION] PGSQL="140"
GEOS="3.10.0-CAPI-1.16.0" PROJ="7.2.1" GDAL="GDAL 3.3.3, released
2021/10/25" LIBXML="2.9.9" LIBJSON="0.12" LIBPROTOBUF="1.2.1" WAGYU="0.5.0
(Internal)" TOPOLOGY RASTER

GEOS 3.10.1 - errors
ERROR:  could not load library
"C:/ming64gcc81/projects/postgresql/rel/pg14w64gcc81/lib/postgis-3.2.dll":
The specified module could not be found.

Can someone confirm that?  If it's just an issue with PostGIS 3.2, I guess
that is okay, though I would think it would mean just the newer features
like MakeValid would not be enabled by swapping out with a newer GEOS, but
it shouldn't break install.  Also why GEOS 3.10.0 works and GEOS 3.10.1
doesn't is very concerning.

FWIW:  all were built under CMake.  Though I think the ENABLE_INLINE
whatever that CMAKE switch is might be different between the working and
non-working versions.

Thanks,
Regina



More information about the geos-devel mailing list