3.6.4 Release

Greg Troxel gdt at lexort.com
Mon Jun 8 11:04:42 PDT 2026


Thanks.  I updated from git and still have

  gmake[1]: Entering directory '/n0/gdt/SOFTWARE/GEO/POSTGIS/postgis/BUILD/postgis'
  gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -Dz_off_t=long -I/usr/include -I/usr/pkg/include/libxml2 -I/usr/include/readline -I/usr/pkg/include -fPIC -DPIC -fvisibility=hidden -I../../liblwgeom -I../liblwgeom -std=gnu11 -g -O2 -fno-math-errno -fno-signed-zeros -Wall -O2 -I../../libpgcommon -I../../deps/flatgeobuf -I../../deps/wagyu -I../../deps/uthash/include  -I/usr/pkg/include -I/usr/pkg/include -I/usr/pkg/include -I/usr/pkg/include/libxml2  -I/usr/pkg/include -I/usr/pkg/include/json-c -I/usr/pkg/include -DNDEBUG   -fPIC -DPIC -I. -I./ -I/usr/pkg/include/postgresql/server -I/usr/pkg/include/postgresql/internal -Dz_off_t=long -I/usr/include -I/usr/pkg/include/libxml2 -I/usr/include/readline -I/usr/pkg/include  -I/usr/pkg/include/libxml2 -I/usr/pkg/include -I/usr/pkg/include  -c -o mvt.o ../../postgis/mvt.c
  In file included from /usr/pkg/include/postgresql/server/storage/shmem.h:24,
                   from /usr/pkg/include/postgresql/server/storage/lock.h:25,
                   from /usr/pkg/include/postgresql/server/catalog/namespace.h:18,
                   from ../../postgis/mvt.h:35,
                   from ../../postgis/mvt.c:30:
  ../../postgis/mvt.c: In function ‘get_key_index_with_size’:
  /usr/pkg/include/postgresql/server/utils/hsearch.h:98:23: error: called object is not a function or function pointer
     98 | #define HASH_FUNCTION 0x0040 /* Set user defined hash function */
        |                       ^~~~~~
  /usr/pkg/include/uthash.h:151:3: note: in expansion of macro ‘HASH_FUNCTION’
    151 |   HASH_FUNCTION(keyptr, keylen, hashv);                                          \
        |   ^~~~~~~~~~~~~

so it looks like pgsql itself -- or at least my build -- exposes all of
utils/hsearch.h, when someone includes catalog/namespace.h.  I traced
the include chain and code reading matches the error message.


I see now that the problem is that postgis has a vendored copy of
uthash, and it's been modified rename HASH_FUNCTION to UTHASH_FUNCTION
(or something like that), but that hasn't been pushed upstream to
uthash, or they rejected it.  Really, both uthash and pgsql using
HASH_FUNCTION in a public header is a namespace pollution issues -- both
should be prefixed/etc. somehow.

The postgis package does not depend on uthash, so the compiler doesn't
see those files when building.
I suspect I just didn't have uthash installed the times I previously
built postgis from git.

I removed the uthash package, and then the build went ok (with ctype UB
warnings).


So there's nothing to be done for 3.6.4 -- I'm now confident this is not
new.


More information about the postgis-devel mailing list