Contents
2.0
Release date: 2026-07-07
Enhancements
- Add error message for invalid coordinate pairs: this adds a check on the reverse call to reject invalid coordinate pairs before sending the request to the server, therefore avoiding a HTTP request that is doomed to fail.
- Add
emailandpolygon_thresholdparameters to reverse function. - Add support to PostgreSQL 10 and 11 (EOL’d versions).
- Add system view
nominatim_fdw_settingsto list all library dependencies.
Bug fixes
- Fixed memory leaks in XML parsing:
xmlGetProp()andxmlNodeGetContent()return libxml2-heap-allocated strings that were never freed withxmlFree(). Introducedxml_get_prop()andxml_node_content()helper functions that copy the result into palloc’d memory and immediately free the libxml2 string, making ownership clear at a glance. - Fixed JSON injection in
extratags,namedetails,addressdetails, andaddresspartsfields: XML values from the Nominatim response were embedded into hand-crafted JSON strings without escaping, so values containing",\, or control characters produced malformedjsonbor allowed content injection from a malicious server. PostgreSQL’s ownescape_json()(fromutils/json.h) is now used to escape all keys and values before they are appended. - Fixed
nominatim_search,nominatim_lookup, andnominatim_reverseincorrectly declared asIMMUTABLE, which allowed PostgreSQL to cache or optimize away repeated calls and return stale results. Functions are now correctly declaredVOLATILE. - Fixed build failure when specifying a custom
PG_CONFIGpointing to a PostgreSQL installation built without--with-libxml. The Makefile now usesPG_CPPFLAGS(instead ofCFLAGS) and explicitly includesxml2-config --cflags, so libxml2 include paths are always passed to the compiler regardless of whichpg_configis used. - Add missing
typeattribute: the custom data typeNominatimRecordwas missing the attributetype. Thid has been now fixed. - Fix
DEFAULTvalue foraddressdetails: it now defaults totrue, as defined in the API spec. - Set
DEFAULTvalue of reverse’szoomto-1(disabled): the previous value was 0, which is a valid zoom level. - Fix parsing of
KMLgeometries iun reverse calls: the parser was ignoring this format and returningNULLforpolygon_kmlrequests. This is now fixed.
Breaking changes
- Add
entrancescolumn to lookup, search, and reverse calls. - Rename reverse’s column
resulttodisplay_name: the previous name was mimicing the xml node retrieved from the API, which was inconsistent with the lookup and search functions. - For simplicity,
nominatim_fdw_version()now omits ssl, zblib, libSSH, and ngt http2 versions. - Rename
addresspartscolumn from reverse function toaddressdetails, so that it aligns with search and lookup.
1.3
Release date: 2026-04-12
Breaking Changes
Proxy authentication credentials moved to USER MAPPING: For improved security, proxy authentication credentials (proxy_user and proxy_password) must now be specified in USER MAPPING instead of SERVER options. This change prevents proxy passwords from being visible to all users with USAGE privilege on the foreign server, as PostgreSQL automatically hides USER MAPPING passwords from non-owners.
1.2.0
Release date: 2026-04-05
Bug fixes
- Fixed
lon/latvalues of0.0being omitted from reverse geocoding requests. - Fixed memory leaks in
curl_easy_escapecalls. - Fixed undefined behaviour from
xmlFreeNodeon document-owned nodes; replaced withxmlFreeDoc. - Fixed
IsLayerValidrejecting valid comma-separated layer lists. - Fixed duplicate
state->amenityassignment innominatim_fdw_search. - Fixed redundant
palloc0forstateinnominatim_fdw_searchandnominatim_fdw_lookup. - Fixed early (incomplete) assignment of
place->addresspartsinParseNominatimReverseData.
Security
- Enabled TLS peer verification (
CURLOPT_SSL_VERIFYPEER).
Improvements
- Moved
curl_global_init/curl_global_cleanupto_PG_init/_PG_fini— called once per backend instead of once per request. - Made attribute name lookup in
GetAttributeValueconsistently useNameStr.
1.1.0
Release date: 2024-11-01
Enhancements
- Add support to PostgreSQL 17 and 18.