Contents
- Changelog
- Versioning
- Unreleased
- 4.5.0 - 2026-06-08
- 4.2.3 - 2025-06-24
- 4.2.2 - 2025-02-10
- 4.2.1 - 2025-02-04
- 4.2.0 - 2025-01-17
- 4.1.4 - 2024-11-06
- 4.1.3 - 2023-07-26
- 4.1.2 - 2023-02-08
- 4.1.1 - 2023-02-07
- 4.1.0 - 2023-01-18
- 4.0.3 - 2022-11-04
- 4.0.2 - 2022-09-19
- 4.0.1 - 2022-09-19
- 4.0.0 - 2022-08-24
- 3.7.2 - 2022-04-13
- 3.7.1 - 2021-06-23
- 3.7.0 - 2020-09-30
- 3.6.5 - 2020-08-14
- 3.6.4 - 2020-06-29
- 3.6.3 - 2020-04-08
- 3.6.2 - 2020-04-07
- 3.6.1 - 2019-12-09
- 3.6.0 - 2019-10-07
- 3.5.0 - 2019-08-01
- 3.4.1 - 2019-06-14
- 3.4.0 - 2019-06-13
- 1.0.6 - 2019-06-03
- 1.0.5 - 2019-02-15
- 1.0.4 - 2019-02-15
- 1.0.3 - 2019-01-27
- 1.0.2 - 2019-01-27
- 1.0.1 - 2019-01-27
- 1.0.0 - 2019-01-27
- 0.4.0 - 2019-01-12
- 0.3.2 - 2019-01-08
- 0.3.1 - 2018-12-17
- 0.3.0 - 2018-12-11
Changelog
All notable changes to this project will be documented in this file.
Critical bugfixes or breaking changes are marked using a warning symbol: ⚠️
The format is based on Keep a Changelog.
Versioning
The H3 core library adheres to Semantic Versioning.
H3-pg has a major.minor.patch version scheme. The major and minor version
numbers of H3-pg are the major and minor version of the bound core library,
respectively. The patch version is incremented independently of the core
library.
Because H3-pg is versioned in lockstep with the H3 core library, please avoid adding features or APIs which do not map onto the H3 core API.
Unreleased
4.5.0 - 2026-06-08
Project *
h3-pgnow lives under the PostGIS umbrella. Use https://github.com/postgis/h3-pg/ for releases, issues, and pull requests.New Features *
#188, Add experimental GiST operator class for
h3index; initial work in #42 (Zacharias Knudsen, Eric Schoffstall, Darafei Praliaskouski, Abel Vázquez Montoro, @mattiZed)- Add
h3_grid_ringas the preferred ring traversal API: it returns cells exactlykgrid steps from the origin and handles pentagon distortion internally (Darafei Praliaskouski) - Add
h3_get_index_digitandh3_construct_cellfor inspecting and rebuilding cell indexes from explicit resolution, base-cell, and digit components (Darafei Praliaskouski) - Add
h3_is_valid_indexfor validating any H3 index mode, including cells, directed edges, and vertices (Darafei Praliaskouski) - Add
h3_reverse_directed_edgeto reverse a directed edge without manually unpacking its origin and destination cells (Darafei Praliaskouski) Improve
h3_grid_path_cellswith upstream bidirectional path generation from bundled H3v4.5.0(Darafei Praliaskouski)Breaking Changes *
#190, ⚠️ Fix btree comparator returning wrong sign, causing reversed
ORDER BYand incorrect range scans; upgrade auto-reindexes affected indexes. If you prefer to handle that manually, drop the affected indexes before upgrade and recreate them afterwards (Eric Schoffstall)Bug Fixes *
Harden core H3 SQL bindings around null, array, polygon, and error handling; negative traversal distances now report a clear PostgreSQL parameter error (#192, Darafei Praliaskouski)
- Fix distance-result upgrade refresh to follow transitive dependencies through user wrapper functions (Darafei Praliaskouski)
- #165, #168, Fix PostgreSQL 17+ maintenance-operation failures for
h3_postgisSQL wrappers by schema-qualifying extension object references (Darafei Praliaskouski) - #168, Fix pg_dump/restore-style
search_path=''expression-index replay onh3_lat_lng_to_cell(Darafei Praliaskouski) - Fix extension upgrade validation drift for placeholder-qualified SQL, including the PostgreSQL 14 raster class summary helper (Darafei Praliaskouski)
- #181, Fix deprecated alias warnings so each wrapper warns once per backend while preserving parallel-safe behavior (Darafei Praliaskouski)
- Fix GiST union summaries to ignore the unused entry-vector slot, keeping internal bounds stable on deeper trees (Darafei Praliaskouski)
- Reject invalid cell-to-multipolygon input more strictly with bundled H3
v4.5.0(Darafei Praliaskouski) - #189, Fix SP-GiST picksplit using wrong prefix when batch has mixed parents, silently dropping containment query results (Eric Schoffstall)
- #187, Fix SP-GiST picksplit crash when tree depth exceeds cell resolution (Eric Schoffstall)
- #191, Fix
<@operator and SP-GiST returning false for self-containment (Eric Schoffstall) - #194, Fix
h3_postgisgeometry output and polygonization for low-zoom and buffered tile covers, polar seams, exact whole-world covers, disjoint polygon segments, vertex graph sizing, and polygon allocation state (Paul Ramsey, Darafei Praliaskouski) Fix Windows builds when PostgreSQL installations do not report include flags through
pg_config --cppflags(Darafei Praliaskouski)Documentation *
#183, Add the packaged h3-pg skill for agent-assisted maintenance workflows (Darafei Praliaskouski)
- Update README and package metadata links for the PostGIS repository move (Regina Obe, Darafei Praliaskouski)
- #157, Document invalid polygon inputs to
h3_polygon_to_cells*and add guidance forST_IsValid()/ST_MakeValid()workflows (Darafei Praliaskouski) - #165, #168, Add a maintainer note in migration SQL: avoid function-level
SET search_pathin these wrappers to preserve SQL-function inlining (Darafei Praliaskouski) Generate and validate GUC documentation from source comments, and teach the SQL documentation parser the operator-class syntax used by the new GiST docs (Darafei Praliaskouski, Eric Schoffstall)
Tooling *
#197, Release managers can prepare releases with
scripts/releaseandscripts/postrelease, including metadata, API-doc, changelog, next-cycle update-file, duplicate-version, and argument checks (Darafei Praliaskouski)- #184, Contributors and packagers get more reliable validation: build-tree extension-upgrade tests, explicit missing-
pg_validate_extupgradereporting, metadata checks, non-Intel PostGIS regression tolerance, and sturdier PGXN, Windows, and macOS CI (Zacharias Knudsen, @esiaero, Darafei Praliaskouski)
4.2.3 - 2025-06-24
- Add
h3_get_resolution_from_tile_zoom(see #176, thanks @sleeping-h) - Alter function names containing
lat_lngtolatlngin order to align with other SQL bindings (see #177) - Add support for PostgreSQL 18 (see #179, thanks @devrimgunduz)
4.2.2 - 2025-02-10
4.2.1 - 2025-02-04
4.2.0 - 2025-01-17
- Bump
h3tov4.2.0 - Add
h3_polygon_to_cells_experimental(see #159, thanks @jmealo) - Add experimental SP-GIST operator class (see #43, thanks @BielStela)
- Fix for MacOS in nixpkgs / NixOS (see #141, thanks @wolfgangwalther)
4.1.4 - 2024-11-06
- Fix library extension on macOS for PostgreSQL >= 16 (see #140, thanks @bayandin)
- Add support for binary I/O (see #160, thanks @robertozimek)
4.1.3 - 2023-07-26
- Add
geometry @ intandgeography @ intoperators, as shortcuts forh3_lat_lng_to_cell. - Explain PostGIS SRID expectations (see #131, thanks @rustprooflabs)
4.1.2 - 2023-02-08
4.1.1 - 2023-02-07
- Add
postgis_rasterintegration (see #112, thanks @mngr777) - Fix
h3_postgisupgrade path (see #117, thanks @mngr777)
4.1.0 - 2023-01-18
- Bump
h3tov4.1.0 - Add bindings for
h3_cell_to_child_posandh3_child_pos_to_cell. - Use CMake for entire build (see #70)
- Add helper to fix pass-by-value migration (see #111)
- Allow distance operator
<->to work for cells at different resolutions (using center child).
4.0.3 - 2022-11-04
- Add BRIN operator class (see #97, thanks @mngr777)
- Split PostGIS multipolygons by 180th meridian (see #90, thanks @mngr777)
- Add aggregate functions for
h3_postgis(see #91, thanks @mngr777) - Add recursive
h3_grid_path_cells(see #93, thanks @mngr777)
4.0.2 - 2022-09-19
4.0.1 - 2022-09-19
- Bump
h3tov4.0.1(was locked onrc5for the previous release) - Add compile flag support check (see #78, thanks @mngr777)
- Split polygons by 180th meridian (see #76, thanks @mngr777)
4.0.0 - 2022-08-24
- ⚠️ Update
h3core library tov4.0.0. Almost all functions have been renamed to align withh3corev4. Please take care when updating. You can see a list of changed function names in the core library documentation. - ⚠️ The PostGIS functions has been extracted into a separate extension
h3_postgis. Install usingCREATE EXTENSION h3_postgis;. - Enable link time optimization (see #75, thanks @mngr777)
- Handle non-polygons for
h3_polyfill(see #55, thanks @Lokks) - Take advantage of the new v4 error codes (fixes #71, thanks @kalenikaliaksandr)
3.7.2 - 2022-04-13
- Allow
NULLinholesarray forh3_polyfill(see #64, thanks @mngr777) - Allow >1Gb memory allocations for
h3_polyfill(see #65, thanks @mngr777)
3.7.1 - 2021-06-23
- Update
h3core library tov3.7.1
3.7.0 - 2020-09-30
- ⚠️ Default unit for
h3_hex_areaandh3_edge_lengthchanged to kilometers - Update
h3core library tov3.7.0 - Add
h3_point_distandh3_exact_edge_lengthbindings - Add distance operator
<-> - Fix
h3_to_geographyandh3_to_geometryrefering to removed functions if extension was upgraded from pre-1.0 - Add optional input validation in geoToH3 (see #41, thanks @trylinka)
- Support unit as string argument in
h3_hex_areaandh3_edge_length(and flag previous version for deprecation)
3.6.5 - 2020-08-14
- Add support for partitioning by hash (see #37, thanks @AbelVM)
- Fix difference in function flags between fresh install and upgrades (see #38, thanks @AbelVM)
3.6.4 - 2020-06-29
- Update
h3core library tov3.6.4
3.6.3 - 2020-04-08
3.6.2 - 2020-04-07
This update will corrupt your h3indexes unless your are using a 32-bit build of PostgreSQL (see #31). If you upgrade to 4.0.4 you can use the function h3_pg_migrate_pass_by_reference(h3index) to retrieve your old h3 cells. See #111.
- Add parallel safety flags to PostGIS functions (see #19, thanks @Komzpa)
- Add B-Tree sort support (see #24, thanks @Komzpa)
- ⚠️ Make type
h3indexpass-by-value on supported systems (see #22, #26, thanks @Komzpa) - Update
h3core library tov3.6.3
3.6.1 - 2019-12-09
- Add
&&,@>and<@operators for overlaps, contains and contained by respectively - Fix PostgreSQL 12 build (see #18, thanks @Komzpa)
- Update
h3core library tov3.6.1
3.6.0 - 2019-10-07
- Add support for
bigintcast (see #9, thanks @kmacdough) - Add
h3_to_center_childbinding - Add
h3_get_pentagon_indexesbinding - Update
h3core library tov3.6.0
3.5.0 - 2019-08-01
- Add
h3_get_facesbinding - ⚠️ Replace
h3_hex_area_m2andh3_hex_area_km2withh3_hex_area - ⚠️ Replace
h3_edge_length_mandh3_edge_length_kmwithh3_edge_length - ⚠️ Remove
hex_range,hex_rangesandhex_range_distances - Remove
h3core library version check, since we know which version we are linking - Fix PostgreSQL 12 build (see #4, thanks @Komzpa)
- Update
h3core library tov3.5.0
3.4.1 - 2019-06-14
- Fix
abswarning
3.4.0 - 2019-06-13
- ⚠️ Remove degree/radian conversion helpers (in favor of built-in RADIANS/DEGREES)
1.0.6 - 2019-06-03
- Update
h3core library tov3.4.4
1.0.5 - 2019-02-15
- Fix update path
1.0.4 - 2019-02-15
- Fix
polyfillfor polygon with multiple holes
1.0.3 - 2019-01-27
- Fix update path
1.0.2 - 2019-01-27
- Remove git tag check in
distributemakefile target, since it causes error on pgxn install
1.0.1 - 2019-01-27
- Remove usage of
FALSEinstead of 0 in conditional inASSERTmacro
1.0.0 - 2019-01-27
- Add
h3_get_extension_version() - Add hash operator class, now
WHERE INworks - ⚠️ Replace
h3_basecellswithh3_get_res_0_indexes - ⚠️ Rename all functions with double
h3_h3_prefix to use singleh3_prefix - ⚠️ Remove
h3_haversine_distancefunction - ⚠️ Change Makefile such that the
h3core library is cloned, built and statically linked - Test that upgrade path has same result as fresh install
0.4.0 - 2019-01-12
- Add
h3_linebinding - Fix
h3_h3_to_children_slow
0.3.2 - 2019-01-08
- ⚠️ Fix
btreeoperator class indexing
0.3.1 - 2018-12-17
- Add
extendflag toh3_h3_to_geo_boundarysuch that polygons are not wrapped at antimeridian
0.3.0 - 2018-12-11
- Initial public release