4.9.0 (2026-09-28)
Features
- Add PostGIS geometry validation and repair functions through
ST_MakeValidandST_IsValidReason(#772) (ee07212) - Add PostGIS OGC element accessors (#775) (13585e8)
- Add PostGIS WKT and EWKT text conversion functions (#773) (63d3f61)
- Add support for
geometry_typeandsridoptions togeometry[]andgeography[](#824) (ad8bda5) - Add support for the aggregate
FILTERclause (#792) (f98c93d) - Add support for the ordered-set aggregates (
MODE(),PERCENTILE_DISC(),PERCENTILE_CONT()) (#793) (8c0c8fd) - Add support for the ranking window functions (
ROW_NUMBER,RANK,DENSE_RANK,PERCENT_RANK,CUME_DIST,NTILE) (#799) (e6188f5) - Add support for the value window functions (
LAG,LEAD,FIRST_VALUE,LAST_VALUE,NTH_VALUE) (#800) (e0f978c) - Add support for window functions through
OVER(#798) (4209935) - Let
WktSpatialDataparse under the same-namedfromStringmethod like every other value object (#767) (5a95db7) - Value objects throw their own exception (#752) (a50c9db)
Bug Fixes
- Accept
LCAwith an array of paths (#850) (d02ccf8) - Accept
ST_COLLECTIONEXTRACTwith only a geometry (#846) (131da97) - Accept
ST_SCALEwith a geometry factor (#847) (d973e71) - Accept
ST_SUBDIVIDEwith only a geometry (#845) (4981c85) - Accept
TO_TIMESTAMPwith a Unix epoch (#848) (77da8cd) - Accept
WIDTH_BUCKETwith an array of thresholds (#849) (8a5542d) - Accept a signed number wherever a DQL function takes a numeric argument (#833) (8f0b9b9)
- Accept every real and double precision array item PostgreSQL accepts (#838) (9ff6c1d)
- Accept only digits and letter numbers in
lqueryandltxtquerylabels (#840) (bd40ec6) - Keep a fetch-joined collection's order out of an aggregate's
ORDER BY(#830) (a9753fa) - Keep an empty ltree inside an ltree array (#829) (df4ad76)
- Keep every decimal when reading geometry and geography columns (#825) (3370ecd)
- Keep every microsecond of long interval times (#834) (710b8cf)
- Keep every significant digit of floats in composite fields and numeric ranges (#831) (0fc765f)
- Keep every significant digit of the floats a WKT point is built from (#853) (b3198c1)
- Keep the sign of a range bound of positive infinity below or negative infinity above (#832) (e309d3d)
- Read and write range bounds with a five-digit year or a BC date (#836) (2181392)
- Read geometry and geography arrays through the ORM (#821) (4771a42)
- Read geometry and geography columns through the ORM on ORM 2 (#823) (631e73c)
- Read PostgreSQL arrays whose index does not start at one (#839) (e0124fa)
- Read the glued dimensional modifier spelling in the scalar spatial types (#827) (6bffe41)
- Reject a
DATE_EXTRACTfield that is not a string literal (#844) (774c638) - Reject a cidr with bits set right of its netmask (#837) (3d91660)
- Remove
ND_BOUNDING_BOX_DISTANCE, whose<<#>>operator was never released in a stable PostGIS version (#813) (1be13d3) - Swap the inverted exception family on some DBAL types (#781) (7f02b8d)
- Treat a discrete range with no value between its bounds as empty (#835) (03cd58a)
- Write text array and vector floats through PostgresFloat (#841) (568909a)