Features
API
-
Spread to-many relationships by @laurenceisla in #3640
- Using aggregates in spread to-many is not yet supported (ref).
-
Automatic tsvector convertion on filters by @laurenceisla in #2255
-
Improved performance when using RPCs via GET by @wolfgangwalther in #2858
- The generated queries are tuned so indexes can be used in more cases.
-
Allow using
not_null
as value for theis
operator by @taimoorzaeem in #3747
Authentication
- Searching on an array for JWT Role Extraction by @taimoorzaeem in #1536.
Observability
- Proxy-Status header for error responses by @taimoorzaeem in #2967
- Content-Length header for traces on egress traffic by @laurenceisla in #4016
- SQL query logs by @laurenceisla in #1578
- Log resolved host in startup "Listening on ..." messages by @develop7 in #3560
- Log maximum pool size by @steve-chavez in #3727
- Log connection pool borrows on
log-level=debug
by @taimoorzaeem in #3903
Errors
- Improved JWT errors by @taimoorzaeem in #3600, #3926
PGRST301
is now returned whenBearer
in the Authorization header is sent emptyPGRST303
is now returned when decoding JWT claims fails- Better diagnostic error messages instead of exposed internals messages
- Return
PGRST125
instead of an empty json, when an invalid URL path is requested by @taimoorzaeem in #3906 - Return
PGRST126
instead of an empty json, when OpenAPI is requested and it's disabled by @taimoorzaeem in #3906
Admin Server
- admin-server-host config to set the host for the admin server by @develop7 in #3558
Fixes
- Prevent spread embedding to allow aggregates when they are disabled by @laurenceisla in #3693
- A nested spread embedding now correctly groups by the fields of its top parent relationship by @laurenceisla in #3693
- Fix spread embedding errors when using the
count()
aggregate without a field by @laurenceisla in #3693- Fixed
"column reference <col> is ambiguous"
error when selecting?select=...table(col,count())
- Fixed
"column <json_aggregate>.<alias> does not exist"
error when selecting?select=...table(aias:count())
- Fixed
- Clarify listener logs by @steve-chavez in #3727
- Clarify
Accept: vnd.pgrst.object
error message by @steve-chavez in #3795 - Handle queries on non-existing table gracefully by @taimoorzaeem in #3697, #3602
- Fix using
order=
in mutation requests by @taimoorzaeem in #3013 - Fix filtering on unselected columns in a table-valued function by @taimoorzaeem in #3965
- Fix schema cache loading duplicate objects with different object type but same oid by @taimoorzaeem in #4052
- Querying non-existent table now returns
PGRST205
error instead of an empty json by @taimoorzaeem in #3697, #3602 - Fail to start when
server-port
andadmin-server-port
config options are the same by @develop7 in #3508 - Fail to start when the JWT secret is less than 32 characters long by @laurenceisla in #3607
- Fail to start on an invalid
db-schemas
ordb-extra-search-path
by @wolfgangwalther in #3644- Previously, this would silently return 200 - OK on the root endpoint, but don't provide any usable endpoints.
- Note: This also applies when deleting the
public
schema - both config options default to that.
Breaking Changes
- Drop support for Postgres EOL versions: 9.6, 10 and 11 by @wolfgangwalther in #2052.
- Drop support for Prefer: params=single-object by @joelonsql in #3757
- This preference was deprecated in favor of Functions with an array of JSON objects
- Drop support for Limited updates/deletes by @steve-chavez in #3013
- The feature was complex and had surprising behavior when using
order
on mutations. - If you'd like to limit affected rows on mutations, you can use the max-affected preference instead.
- The feature was complex and had surprising behavior when using
- Drop Runtime Configuration endpoint of admin server by @steve-chavez in #3956
- The endpoint was at risk of being left unprotected when exposing it.
- The accompanying admin-server-config-enabled config was also dropped.