This major version is released with PostgreSQL 14 compatibility and is accompanied with new features and bug fixes. You can look at the detailed changelog and download the pre-compiled binaries on the GitHub release page.
PostgreSQL 14 Beta 1 tightened its GUC naming scheme making it impossible to use multiple dots (.
) and dashes (-
) on custom GUC parameters, this caused our old HTTP Context to fail across all requests. Thankfully, @robertsosinski got the PostgreSQL team to reconsider allowing multiple dots in the GUC name, allowing us to avoid a major breaking change. You can see the full discussion here.
Still, dashes cannot be used on PostgreSQL 14 custom GUC parameters, so we changed our HTTP Context to namespace using a mix of dots and JSON <guc_req_headers_cookies_claims>
. On older PostgreSQL versions we still use the guc_legacy_names
. If you wish to use the new JSON GUCs on these versions, set the db-use-legacy-gucs
config option to false.
Historically, Resource Embedding was always done with a query that included the equivalent of a LEFT JOIN
, which meant you could not exclude any of the top-level resource rows. You can now use embedding_top_level_filter
to do the equivalent of an INNER JOIN
, thus you can filter the top-level resource rows with any of the available operators.
Partitioned tables now integrate with all the feature set. You can embed partitioned tables <embedding_partitioned_tables>
, UPSERT, INSERT(with a correctly generated Location header) and make OPTIONS requests on them. They're also included in the generated OpenAPI.
- Functions with a
single unnamed parameter <s_proc_single_unnamed>
can now be used to POST rawbytea
,text
orjson/jsonb
.
- The
unknown
value for three-valued logic can now be used on theis
operator <operators>
. - Escaping double quotes(
"
) in double-quoted surrounded strings is now possible by using backslashes, e.g.?col=in.("Double\"Quote")
. Backslashes can be escaped with a preceding backslash, e.g.?col=in.("Back\\slash")
. Seereserved-chars
.
- A
Retry-After
header is now added when PostgREST is doingautomatic_recovery
.
embed_disamb
now shows an improved error message that includes relevant hints for clearing out the ambiguous embedding.
- Added
curl
snippets to theAPI <../api>
page. - Added the
automatic_recovery
section. - Added the
nested_embedding
section. - Added the
logical_operators
section. - Added the
templates
anddevops
sections to theEcosystem </ecosystem>
.
- Correct RPC return type handling for RETURNS TABLE with a single column (#1930).
- Schema Cache query failing with
standard_conforming_strings = off
(#1992). - OpenAPI missing default values for String types (#1871).
- Dropped support for PostgreSQL 9.5 as it already reached its end-of-life according to PostgreSQL versioning policy.
- Partitions of a partitioned table are no longer included in the
../schema_cache
. This is so errors are not generated when doing resource embedding on partitioned tables. - Dropped support for doing
hint_disamb
using dots instead of exclamation marks, e.g. doingselect=*,projects.client_id(*)
instead ofselect=*,projects!client_id(*)
). Using dots was undocumented and deprecated back in v6.0.2.
Big thanks from the PostgREST team to our sponsors!
- Evans Fernandes
- Jan Sommer
- Franz Gusenbauer
- Daniel Babiak
- Tsingson Qin
- Michel Pelletier
- Jay Hannah
- Robert Stolarz
- Nicholas DiBiase
- Christopher Reid
- Nathan Bouscal
- Daniel Rafaj
- David Fenko
- Remo Rechkemmer
- Severin Ibarluzea
- Tom Saleeba
- Pawel Tyll
If you like to join them please consider supporting PostgREST development.