# 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 `email` and `polygon_threshold` parameters to reverse function. * Add support to PostgreSQL 10 and 11 (EOL'd versions). * Add system view `nominatim_fdw_settings` to list all library dependencies. ## Bug fixes * Fixed memory leaks in XML parsing: `xmlGetProp()` and `xmlNodeGetContent()` return libxml2-heap-allocated strings that were never freed with `xmlFree()`. Introduced `xml_get_prop()` and `xml_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`, and `addressparts` fields: XML values from the Nominatim response were embedded into hand-crafted JSON strings without escaping, so values containing `"`, `\`, or control characters produced malformed `jsonb` or allowed content injection from a malicious server. PostgreSQL's own `escape_json()` (from `utils/json.h`) is now used to escape all keys and values before they are appended. * Fixed `nominatim_search`, `nominatim_lookup`, and `nominatim_reverse` incorrectly declared as `IMMUTABLE`, which allowed PostgreSQL to cache or optimize away repeated calls and return stale results. Functions are now correctly declared `VOLATILE`. * Fixed build failure when specifying a custom `PG_CONFIG` pointing to a PostgreSQL installation built without `--with-libxml`. The Makefile now uses `PG_CPPFLAGS` (instead of `CFLAGS`) and explicitly includes `xml2-config --cflags`, so libxml2 include paths are always passed to the compiler regardless of which `pg_config` is used. * Add missing `type` attribute: the custom data type `NominatimRecord` was missing the attribute `type`. Thid has been now fixed. * Fix `DEFAULT` value for `addressdetails`: it now defaults to `true`, as defined in the API spec. * Set `DEFAULT` value of reverse's `zoom` to `-1` (disabled): the previous value was 0, which is a valid zoom level. * Fix parsing of `KML` geometries iun reverse calls: the parser was ignoring this format and returning `NULL` for `polygon_kml` requests. This is now fixed. ## Breaking changes * Add `entrances` column to lookup, search, and reverse calls. * Rename reverse's column `result` to `display_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 `addressparts` column from reverse function to `addressdetails`, 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`/`lat` values of `0.0` being omitted from reverse geocoding requests. * Fixed memory leaks in `curl_easy_escape` calls. * Fixed undefined behaviour from `xmlFreeNode` on document-owned nodes; replaced with `xmlFreeDoc`. * Fixed `IsLayerValid` rejecting valid comma-separated layer lists. * Fixed duplicate `state->amenity` assignment in `nominatim_fdw_search`. * Fixed redundant `palloc0` for `state` in `nominatim_fdw_search` and `nominatim_fdw_lookup`. * Fixed early (incomplete) assignment of `place->addressparts` in `ParseNominatimReverseData`. ## Security * Enabled TLS peer verification (`CURLOPT_SSL_VERIFYPEER`). ## Improvements * Moved `curl_global_init`/`curl_global_cleanup` to `_PG_init`/`_PG_fini` — called once per backend instead of once per request. * Made attribute name lookup in `GetAttributeValue` consistently use `NameStr`. # 1.1.0 Release date: **2024-11-01** ## Enhancements * Add support to PostgreSQL 17 and 18.