Skip to content

Latest commit

 

History

History
130 lines (86 loc) · 6.06 KB

v9.0.0.rst

File metadata and controls

130 lines (86 loc) · 6.06 KB

PostgREST 9.0.0

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.

Features

PostgreSQL 14 compatibility

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.

Resource Embedding with Top-level Filtering

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

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(RPC)

  • Functions with a single unnamed parameter <s_proc_single_unnamed> can now be used to POST raw bytea, text or json/jsonb.

Horizontal Filtering

  • The unknown value for three-valued logic can now be used on the is 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"). See reserved-chars.

Administration

  • A Retry-After header is now added when PostgREST is doing automatic_recovery.

Error messages

  • embed_disamb now shows an improved error message that includes relevant hints for clearing out the ambiguous embedding.

Documentation improvements

  • Added curl snippets to the API <../api> page.
  • Added the automatic_recovery section.
  • Added the nested_embedding section.
  • Added the logical_operators section.
  • Added the templates and devops sections to the Ecosystem </ecosystem>.

Bug fixes

  • 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).

Breaking changes

  • 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. doing select=*,projects.client_id(*) instead of select=*,projects!client_id(*)). Using dots was undocumented and deprecated back in v6.0.2.

Thanks

Big thanks from the PostgREST team to our sponsors!

image

image

image

image

image

image

  • 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.