Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6de489c7ba | ||
|
|
bbf8431a23 | ||
|
|
729deafc56 | ||
|
|
19d70b9bc6 | ||
|
|
e004c5c5f8 |
+20
-5
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file. From versio
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
## [16.1] - 2026-08-10
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
|
||||||
|
- JWT validation uses wrong current time due to a bug in auto-update by @mkleczek in #5159
|
||||||
|
|
||||||
## [16.0] - 2026-08-07
|
## [16.0] - 2026-08-07
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
@@ -23,6 +29,11 @@ All notable changes to this project will be documented in this file. From versio
|
|||||||
- [Prefer: timezone](https://docs.postgrest.org/en/v16/references/api/preferences.html#prefer-timezone) no longer requires the schema cache by @steve-chavez in #5100
|
- [Prefer: timezone](https://docs.postgrest.org/en/v16/references/api/preferences.html#prefer-timezone) no longer requires the schema cache by @steve-chavez in #5100
|
||||||
+ Previously this required caching [pg_timezone_names](https://www.postgresql.org/docs/current/view-pg-timezone-names.html) which was slow in some systems
|
+ Previously this required caching [pg_timezone_names](https://www.postgresql.org/docs/current/view-pg-timezone-names.html) which was slow in some systems
|
||||||
|
|
||||||
|
#### Integrations
|
||||||
|
|
||||||
|
- PostgREST is now tested to work with [OrioleDB](https://github.com/orioledb/orioledb/) in #4845 by @wolfgangwalther
|
||||||
|
+ See [our guide for running OrioleDB on NixOS](https://docs.postgrest.org/en/v16/integrations/nixos.html)
|
||||||
|
|
||||||
#### JWT
|
#### JWT
|
||||||
|
|
||||||
- [JWT Role Extraction](https://docs.postgrest.org/en/v16/references/auth.html#jwt-role-extract) is now more flexible, supporting the standard JSON Path defined in RFC 9535 by @taimoorzaeem in #4984
|
- [JWT Role Extraction](https://docs.postgrest.org/en/v16/references/auth.html#jwt-role-extract) is now more flexible, supporting the standard JSON Path defined in RFC 9535 by @taimoorzaeem in #4984
|
||||||
@@ -60,10 +71,11 @@ All notable changes to this project will be documented in this file. From versio
|
|||||||
|
|
||||||
- Make executable for aarch64-linux static instead of Ubuntu-based by @wolfgangwalther in #4193
|
- Make executable for aarch64-linux static instead of Ubuntu-based by @wolfgangwalther in #4193
|
||||||
- Docker image for aarch64-linux is now built from scratch instead of being Ubuntu-based by @wolfgangwalther in #4193
|
- Docker image for aarch64-linux is now built from scratch instead of being Ubuntu-based by @wolfgangwalther in #4193
|
||||||
|
- Besides Docker Hub, docker images are now published to Github Container Registry by @wolfgangwalther in #2836
|
||||||
|
|
||||||
#### Schema Cache
|
#### Schema Cache
|
||||||
|
|
||||||
- Fix requests failing when the schema cache fails to reload, when this happens PostgREST will continue serving requests as "best effort" by @mkleczek in #4873 #4869
|
- Fix requests failing when the schema cache fails to reload, when this happens PostgREST will continue serving requests in "best effort" by @mkleczek in #4873 #4869
|
||||||
- Fix reporting 503s errors unnecessarily while the schema cache is loading at startup by @mkleczek in #4880
|
- Fix reporting 503s errors unnecessarily while the schema cache is loading at startup by @mkleczek in #4880
|
||||||
- Fix schema cache dump missing RPC transaction isolation level by @taimoorzaeem in #5079
|
- Fix schema cache dump missing RPC transaction isolation level by @taimoorzaeem in #5079
|
||||||
|
|
||||||
@@ -74,7 +86,7 @@ All notable changes to this project will be documented in this file. From versio
|
|||||||
### Migration to v16
|
### Migration to v16
|
||||||
|
|
||||||
- Drop support for PostgreSQL EOL version 13 by @wolfgangwalther in #4193
|
- Drop support for PostgreSQL EOL version 13 by @wolfgangwalther in #4193
|
||||||
+ PostgreSQL 13 end of life was on 2025 [ref](https://www.postgresql.org/support/versioning/)
|
+ PostgreSQL 13 end of life was on 2025 ([ref](https://www.postgresql.org/support/versioning/))
|
||||||
+ Upgrade your PostgreSQL version to at least 14 to use this new PostgREST version.
|
+ Upgrade your PostgreSQL version to at least 14 to use this new PostgREST version.
|
||||||
|
|
||||||
- Fail at startup when `db-schemas` contains schema `pg_catalog` or `information_schema` by @taimoorzaeem in #4359
|
- Fail at startup when `db-schemas` contains schema `pg_catalog` or `information_schema` by @taimoorzaeem in #4359
|
||||||
@@ -86,9 +98,12 @@ All notable changes to this project will be documented in this file. From versio
|
|||||||
+ Ensure your requests always have a valid timezone.
|
+ Ensure your requests always have a valid timezone.
|
||||||
|
|
||||||
- `jwt-role-claim-key` no longer uses the JSPath DSL and instead uses JSON Path by @taimoorzaeem in #4984
|
- `jwt-role-claim-key` no longer uses the JSPath DSL and instead uses JSON Path by @taimoorzaeem in #4984
|
||||||
+ Now all config values must start with `$` character. Example: `.roles.read` -> `$.roles.read`
|
+ Now all config values must start with `$` character.
|
||||||
+ Keys with special characters, with the exception of `_` char must be quoted. Example: `.roles.write-role` -> `$.roles["write-role"]`
|
Example: `.roles.read` -> `$.roles.read`
|
||||||
+ String comparison operators (`^==`, `==^` and `*==`) are replaced with regular expression search. Example: `.roles[?(@ ^== "postgrest_test_")]` -> `$.roles[?search(@, "^postgrest_test_")]`
|
+ Keys with special characters, with the exception of `_` char must be quoted.
|
||||||
|
Example: `.roles.write-role` -> `$.roles["write-role"]`
|
||||||
|
+ String comparison operators (`^==`, `==^` and `*==`) are replaced with regular expression search.
|
||||||
|
Example: `.roles[?(@ ^== "postgrest_test_")]` -> `$.roles[?search(@, "^postgrest_test_")]`
|
||||||
+ Update the `jwt-role-claim-key` value accoring to the above rules. Also see the syntax reference: [RFC 9535](https://www.rfc-editor.org/rfc/rfc9535.html#name-jsonpath-syntax-and-semanti).
|
+ Update the `jwt-role-claim-key` value accoring to the above rules. Also see the syntax reference: [RFC 9535](https://www.rfc-editor.org/rfc/rfc9535.html#name-jsonpath-syntax-and-semanti).
|
||||||
|
|
||||||
## [14.16] - 2026-07-27
|
## [14.16] - 2026-07-27
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
index-state: hackage.haskell.org 2026-07-11T17:34:10Z
|
index-state: hackage.haskell.org 2026-08-10T16:58:32Z
|
||||||
|
|||||||
@@ -31,60 +31,60 @@ This section talks briefly about various important modules.
|
|||||||
Main
|
Main
|
||||||
----
|
----
|
||||||
|
|
||||||
The starting point of the program is `Main.hs <https://github.com/PostgREST/postgrest/blob/main/src/executable/Main.hs>`_.
|
The starting point of the program is `Main.hs <https://github.com/PostgREST/postgrest/blob/v16/src/executable/Main.hs>`_.
|
||||||
|
|
||||||
CLI
|
CLI
|
||||||
---
|
---
|
||||||
|
|
||||||
Main then calls `CLI.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/CLI.hs>`_, which is in charge of :ref:`cli`.
|
Main then calls `CLI.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/CLI.hs>`_, which is in charge of :ref:`cli`.
|
||||||
|
|
||||||
App
|
App
|
||||||
---
|
---
|
||||||
|
|
||||||
`App.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/App.hs>`_ is then in charge of composing the different modules.
|
`App.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/App.hs>`_ is then in charge of composing the different modules.
|
||||||
|
|
||||||
Auth
|
Auth
|
||||||
----
|
----
|
||||||
|
|
||||||
`Auth.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Auth.hs>`_ is in charge of :ref:`authn`.
|
`Auth.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/Auth.hs>`_ is in charge of :ref:`authn`.
|
||||||
|
|
||||||
Api Request
|
Api Request
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
`ApiRequest.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/ApiRequest.hs>`_ is in charge of parsing the URL query string (following PostgREST syntax), the request headers, and the request body.
|
`ApiRequest.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/ApiRequest.hs>`_ is in charge of parsing the URL query string (following PostgREST syntax), the request headers, and the request body.
|
||||||
|
|
||||||
A request might be rejected at this level if it's invalid. For example when providing an unknown media type to PostgREST or using an unknown HTTP method.
|
A request might be rejected at this level if it's invalid. For example when providing an unknown media type to PostgREST or using an unknown HTTP method.
|
||||||
|
|
||||||
Plan
|
Plan
|
||||||
----
|
----
|
||||||
|
|
||||||
Using the Schema Cache, `Plan.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Plan.hs>`_ generates an internal AST, filling out-of-band SQL details (like an ``ON CONFLICT (pk)`` clause) required to complete the user request.
|
Using the Schema Cache, `Plan.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/Plan.hs>`_ generates an internal AST, filling out-of-band SQL details (like an ``ON CONFLICT (pk)`` clause) required to complete the user request.
|
||||||
|
|
||||||
A request might be rejected at this level if it's invalid. For example when doing resource embedding on a nonexistent resource.
|
A request might be rejected at this level if it's invalid. For example when doing resource embedding on a nonexistent resource.
|
||||||
|
|
||||||
Query
|
Query
|
||||||
-----
|
-----
|
||||||
|
|
||||||
`Query.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Query.hs>`_ generates the SQL queries (parametrized and prepared) required to satisfy the user request.
|
`Query.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/Query.hs>`_ generates the SQL queries (parametrized and prepared) required to satisfy the user request.
|
||||||
|
|
||||||
Only at this stage a connection from the pool might be used.
|
Only at this stage a connection from the pool might be used.
|
||||||
|
|
||||||
Schema Cache
|
Schema Cache
|
||||||
------------
|
------------
|
||||||
|
|
||||||
`SchemaCache.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/SchemaCache.hs>`_ is in charge of :ref:`schema_cache`.
|
`SchemaCache.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/SchemaCache.hs>`_ is in charge of :ref:`schema_cache`.
|
||||||
|
|
||||||
Config
|
Config
|
||||||
------
|
------
|
||||||
|
|
||||||
`Config.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Config.hs>`_ is in charge of :ref:`configuration`.
|
`Config.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/Config.hs>`_ is in charge of :ref:`configuration`.
|
||||||
|
|
||||||
Admin
|
Admin
|
||||||
-----
|
-----
|
||||||
|
|
||||||
`Admin.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/Admin.hs>`_ is in charge of the :ref:`admin_server`.
|
`Admin.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/Admin.hs>`_ is in charge of the :ref:`admin_server`.
|
||||||
|
|
||||||
Listener
|
Listener
|
||||||
--------
|
--------
|
||||||
|
|
||||||
`Reload.hs <https://github.com/PostgREST/postgrest/blob/main/src/library/PostgREST/AppState/Reload.hs>`_ is in charge of the :ref:`listener`.
|
`Reload.hs <https://github.com/PostgREST/postgrest/blob/v16/src/library/PostgREST/AppState/Reload.hs>`_ is in charge of the :ref:`listener`.
|
||||||
|
|||||||
@@ -49,6 +49,16 @@ let
|
|||||||
# Before upgrading fuzzyset to 0.3, check: https://github.com/PostgREST/postgrest/issues/3329
|
# Before upgrading fuzzyset to 0.3, check: https://github.com/PostgREST/postgrest/issues/3329
|
||||||
fuzzyset = prev.fuzzyset_0_2_4;
|
fuzzyset = prev.fuzzyset_0_2_4;
|
||||||
|
|
||||||
|
# TODO: Remove once available in nixpkgs
|
||||||
|
auto-update =
|
||||||
|
prev.callHackageDirect
|
||||||
|
{
|
||||||
|
pkg = "auto-update";
|
||||||
|
ver = "0.2.7";
|
||||||
|
sha256 = "sha256-fHX/OqF/cB9rbpGpLUtA29bcEJS43HUWHcK55yUxKoo=";
|
||||||
|
}
|
||||||
|
{ };
|
||||||
|
|
||||||
# TODO: Remove once available in nixpkgs
|
# TODO: Remove once available in nixpkgs
|
||||||
aeson-jsonpath =
|
aeson-jsonpath =
|
||||||
prev.callHackageDirect
|
prev.callHackageDirect
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
cabal-version: 3.0
|
cabal-version: 3.0
|
||||||
name: postgrest
|
name: postgrest
|
||||||
version: 16.0
|
version: 16.1
|
||||||
synopsis: REST API for any Postgres database
|
synopsis: REST API for any Postgres database
|
||||||
description: Reads the schema of a PostgreSQL database and creates RESTful routes
|
description: Reads the schema of a PostgreSQL database and creates RESTful routes
|
||||||
for tables, views, and functions, supporting all HTTP methods that security
|
for tables, views, and functions, supporting all HTTP methods that security
|
||||||
@@ -106,7 +106,7 @@ library
|
|||||||
, Ranged-sets >= 0.3 && < 0.6
|
, Ranged-sets >= 0.3 && < 0.6
|
||||||
, aeson >= 2.0.3 && < 2.3
|
, aeson >= 2.0.3 && < 2.3
|
||||||
, aeson-jsonpath >= 0.4.2 && < 0.5
|
, aeson-jsonpath >= 0.4.2 && < 0.5
|
||||||
, auto-update >= 0.1.4 && < 0.3
|
, auto-update >= 0.2.7 && < 0.3
|
||||||
, base64-bytestring >= 1 && < 1.3
|
, base64-bytestring >= 1 && < 1.3
|
||||||
, bytestring >= 0.10.8 && < 0.13
|
, bytestring >= 0.10.8 && < 0.13
|
||||||
, case-insensitive >= 1.2 && < 1.3
|
, case-insensitive >= 1.2 && < 1.3
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ nix:
|
|||||||
|
|
||||||
extra-deps:
|
extra-deps:
|
||||||
- aeson-jsonpath-0.4.2.0
|
- aeson-jsonpath-0.4.2.0
|
||||||
|
- auto-update-0.2.7
|
||||||
- configurator-pg-0.2.11
|
- configurator-pg-0.2.11
|
||||||
- fuzzyset-0.2.4
|
- fuzzyset-0.2.4
|
||||||
- hasql-notifications-0.2.4.0
|
- hasql-notifications-0.2.4.0
|
||||||
|
|||||||
@@ -11,6 +11,13 @@ packages:
|
|||||||
size: 2160
|
size: 2160
|
||||||
original:
|
original:
|
||||||
hackage: aeson-jsonpath-0.4.2.0
|
hackage: aeson-jsonpath-0.4.2.0
|
||||||
|
- completed:
|
||||||
|
hackage: auto-update-0.2.7@sha256:32ca6ce351604a17ee79e4086939f798f958f8407478288e9adb7adeb194c6ea,1670
|
||||||
|
pantry-tree:
|
||||||
|
sha256: 641faa7d5ee516195ecd4b538f170722d56f84e3bc5714c6bbe8123849b49983
|
||||||
|
size: 1105
|
||||||
|
original:
|
||||||
|
hackage: auto-update-0.2.7
|
||||||
- completed:
|
- completed:
|
||||||
hackage: configurator-pg-0.2.11@sha256:de0c56386591e85159436b0af04a8f15a4f4e156354e99709676c2c2ee959505,2850
|
hackage: configurator-pg-0.2.11@sha256:de0c56386591e85159436b0af04a8f15a4f4e156354e99709676c2c2ee959505,2850
|
||||||
pantry-tree:
|
pantry-tree:
|
||||||
|
|||||||
Reference in New Issue
Block a user