|
| 1 | + |
| 2 | +PostgREST 9.0.0 |
| 3 | +=============== |
| 4 | + |
| 5 | +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 <https://github.com/PostgREST/postgrest/releases/tag/v9.0.0>`_. |
| 6 | + |
| 7 | +Features |
| 8 | +-------- |
| 9 | + |
| 10 | +PostgreSQL 14 compatibility |
| 11 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 12 | + |
| 13 | +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 <https://postgrest.org/en/v8.0/api.html#accessing-request-headers-cookies-and-jwt-claims>`_ to fail across all requests. Thankfully, `@robertsosinski <https://github.com/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 <https://www.postgresql.org/message-id/17045-6a4a9f0d1513f72b%40postgresql.org>`_. |
| 14 | + |
| 15 | +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 <guc_req_headers_cookies_claims>`. 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. |
| 16 | + |
| 17 | +Resource Embedding with Top-level Filtering |
| 18 | +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 19 | + |
| 20 | +Historically, Resource Embedding was always done with a query that included the equivalent of a ``LEFT JOIN``, which meant you could not |
| 21 | +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. |
| 22 | + |
| 23 | +Partitioned Tables |
| 24 | +~~~~~~~~~~~~~~~~~~ |
| 25 | + |
| 26 | +Partitioned tables now integrate with all the feature set. You can :ref:`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. |
| 27 | + |
| 28 | +Functions(RPC) |
| 29 | +~~~~~~~~~~~~~~ |
| 30 | + |
| 31 | +* Functions with a :ref:`single unnamed parameter <s_proc_single_unnamed>` can now be used to POST raw ``bytea``, ``text`` or ``json/jsonb``. |
| 32 | + |
| 33 | +Horizontal Filtering |
| 34 | +~~~~~~~~~~~~~~~~~~~~ |
| 35 | + |
| 36 | +* The ``unknown`` value for three-valued logic can now be used on the ``is`` :ref:`operator <operators>`. |
| 37 | + |
| 38 | +* 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`. |
| 39 | + |
| 40 | +Administration |
| 41 | +~~~~~~~~~~~~~~ |
| 42 | + |
| 43 | +* A ``Retry-After`` header is now added when PostgREST is doing :ref:`automatic_recovery`. |
| 44 | + |
| 45 | +Error messages |
| 46 | +~~~~~~~~~~~~~~ |
| 47 | + |
| 48 | +* :ref:`embed_disamb` now shows an improved error message that includes relevant hints for clearing out the ambiguous embedding. |
| 49 | + |
| 50 | +Documentation improvements |
| 51 | +~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| 52 | + |
| 53 | +* Added ``curl`` snippets to the :doc:`API <../api>` page. |
| 54 | + |
| 55 | +* Added the :ref:`automatic_recovery` section. |
| 56 | + |
| 57 | +* Added the :ref:`nested_embedding` section. |
| 58 | + |
| 59 | +* Added the :ref:`logical_operators` section. |
| 60 | + |
| 61 | +* Added the :ref:`templates` and :ref:`devops` sections to the :doc:`Ecosystem </ecosystem>`. |
| 62 | + |
| 63 | +Bug fixes |
| 64 | +--------- |
| 65 | + |
| 66 | +* Correct RPC return type handling for RETURNS TABLE with a single column (`#1930 <https://github.com/PostgREST/postgrest/pull/1930>`_). |
| 67 | + |
| 68 | +* Schema Cache query failing with ``standard_conforming_strings = off`` (`#1992 <https://github.com/PostgREST/postgrest/issues/1992>`_). |
| 69 | + |
| 70 | +* OpenAPI missing default values for String types (`#1871 <https://github.com/PostgREST/postgrest/issues/1871>`_). |
| 71 | + |
| 72 | +Breaking changes |
| 73 | +---------------- |
| 74 | + |
| 75 | +* Dropped support for PostgreSQL 9.5 as it already reached its end-of-life according to `PostgreSQL versioning policy <https://www.postgresql.org/support/versioning/>`_. |
| 76 | + |
| 77 | +* Partitions of a `partitioned table <https://www.postgresql.org/docs/current/ddl-partitioning.html#DDL-PARTITIONING-DECLARATIVE>`_ are no longer included in the :ref:`schema_cache`. This is so errors are not generated when doing resource embedding on partitioned tables. |
| 78 | + |
| 79 | +* 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 <https://github.com/PostgREST/postgrest/releases/tag/v6.0.2>`_. |
| 80 | + |
| 81 | +Thanks |
| 82 | +------ |
| 83 | + |
| 84 | +Big thanks from the `PostgREST team <https://github.com/orgs/PostgREST/people>`_ to our sponsors! |
| 85 | + |
| 86 | +.. container:: image-container |
| 87 | + |
| 88 | + .. image:: ../_static/cybertec-new.png |
| 89 | + :target: https://www.cybertec-postgresql.com/en/?utm_source=postgrest.org&utm_medium=referral&utm_campaign=postgrest |
| 90 | + :width: 13em |
| 91 | + |
| 92 | + .. image:: ../_static/2ndquadrant.png |
| 93 | + :target: https://www.2ndquadrant.com/en/?utm_campaign=External%20Websites&utm_source=PostgREST&utm_medium=Logo |
| 94 | + :width: 13em |
| 95 | + |
| 96 | + .. image:: ../_static/retool.png |
| 97 | + :target: https://retool.com/?utm_source=sponsor&utm_campaign=postgrest |
| 98 | + :width: 13em |
| 99 | + |
| 100 | + .. image:: ../_static/gnuhost.png |
| 101 | + :target: https://gnuhost.eu/?utm_source=sponsor&utm_campaign=postgrest |
| 102 | + :width: 13em |
| 103 | + |
| 104 | + .. image:: ../_static/supabase.png |
| 105 | + :target: https://supabase.io/?utm_source=postgrest%20backers&utm_medium=open%20source%20partner&utm_campaign=postgrest%20backers%20github&utm_term=homepage |
| 106 | + :width: 13em |
| 107 | + |
| 108 | + .. image:: ../_static/oblivious.jpg |
| 109 | + :target: https://oblivious.ai/?utm_source=sponsor&utm_campaign=postgrest |
| 110 | + :width: 13em |
| 111 | + |
| 112 | +* Evans Fernandes |
| 113 | +* `Jan Sommer <https://github.com/nerfpops>`_ |
| 114 | +* `Franz Gusenbauer <https://www.igutech.at/>`_ |
| 115 | +* `Daniel Babiak <https://github.com/dbabiak>`_ |
| 116 | +* Tsingson Qin |
| 117 | +* Michel Pelletier |
| 118 | +* Jay Hannah |
| 119 | +* Robert Stolarz |
| 120 | +* Nicholas DiBiase |
| 121 | +* Christopher Reid |
| 122 | +* Nathan Bouscal |
| 123 | +* Daniel Rafaj |
| 124 | +* David Fenko |
| 125 | +* Remo Rechkemmer |
| 126 | +* Severin Ibarluzea |
| 127 | +* Tom Saleeba |
| 128 | +* Pawel Tyll |
| 129 | + |
| 130 | +If you like to join them please consider `supporting PostgREST development <https://github.com/PostgREST/postgrest#user-content-supporting-development>`_. |
0 commit comments