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 :ref:`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 :ref:`to namespace using a mix of dots and JSON `. On older PostgreSQL versions we still use the :ref:`guc_legacy_names`. If you wish to use the new JSON GUCs on these versions, set the :ref:`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 :ref:`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 :ref:`embed 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 :ref:`single unnamed parameter ` 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`` :ref:`operator `. * 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 :ref:`reserved-chars`. Administration ~~~~~~~~~~~~~~ * A ``Retry-After`` header is now added when PostgREST is doing :ref:`automatic_recovery`. Error messages ~~~~~~~~~~~~~~ * :ref:`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 :doc:`API <../api>` page. * Added the :ref:`automatic_recovery` section. * Added the :ref:`nested_embedding` section. * Added the :ref:`logical_operators` section. * Added the :ref:`templates` and :ref:`devops` sections to the :doc:`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 :doc:`../schema_cache`. This is so errors are not generated when doing resource embedding on partitioned tables. * Dropped support for doing :ref:`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! .. container:: image-container .. image:: ../_static/cybertec-new.png :target: https://www.cybertec-postgresql.com/en/?utm_source=postgrest.org&utm_medium=referral&utm_campaign=postgrest :width: 13em .. image:: ../_static/2ndquadrant.png :target: https://www.2ndquadrant.com/en/?utm_campaign=External%20Websites&utm_source=PostgREST&utm_medium=Logo :width: 13em .. image:: ../_static/retool.png :target: https://retool.com/?utm_source=sponsor&utm_campaign=postgrest :width: 13em .. image:: ../_static/gnuhost.png :target: https://gnuhost.eu/?utm_source=sponsor&utm_campaign=postgrest :width: 13em .. image:: ../_static/supabase.png :target: https://supabase.com/?utm_source=postgrest%20backers&utm_medium=open%20source%20partner&utm_campaign=postgrest%20backers%20github&utm_term=homepage :width: 13em .. image:: ../_static/oblivious.jpg :target: https://oblivious.ai/?utm_source=sponsor&utm_campaign=postgrest :width: 13em * 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 `_.