Releases: PostgREST/postgrest
Releases · PostgREST/postgrest
v9.0.1
Fixed
- #2165, Fix json/jsonb columns should not have type in OpenAPI spec - @clrnd
- #2020, Execute deferred constraint triggers when using
Prefer: tx=rollback
- @wolfgangwalther - #2077, Fix
is
not working with upper or mixed case values likeNULL, TrUe, FaLsE
- @steve-chavez - #2024, Fix schema cache loading when views with XMLTABLE and DEFAULT are present - @wolfgangwalther
- #1724, Fix wrong CORS header Authentication -> Authorization - @wolfgangwalther
- #2120, Fix reading database configuration properly when
=
is present in value - @wolfgangwalther - #2135, Remove trigger functions from schema cache and OpenAPI output, because they can't be called directly anyway. - @wolfgangwalther
- #2101, Remove aggregates, procedures and window functions from the schema cache and OpenAPI output. - @wolfgangwalther
- #2153, Fix --dump-schema running with a wrong PG version. - @wolfgangwalther
- #2042, Keep working when EMFILE(Too many open files) is reached. - @steve-chavez
- #2147, Ignore
Content-Type
headers forGET
requests when calling RPCs. - @laurenceisla- Previously,
GET
without parameters, but withContent-Type: text/plain
orContent-Type: application/octet-stream
would fail with404 Not Found
, even if a function without arguments was available.
- Previously,
- #2239, Fix misleading disambiguation error where the content of the
relationship
key looks like valid syntax - @laurenceisla - #2294, Disable parallel GC for better performance on higher core CPUs - @steve-chavez
- #1076, Fix using CPU while idle - @steve-chavez
v9.0.0
Added
- #1783, Include partitioned tables into the schema cache. Allows embedding, UPSERT, INSERT with Location response, OPTIONS request and OpenAPI support for partitioned tables - @laurenceisla
- #1878, Add Retry-After hint header when in recovery mode - @gautam1168
- #1735, Allow calling function with single unnamed param through RPC POST. - @steve-chavez
- Enables calling a function with a single json parameter without using
Prefer: params=single-object
- Enables uploading bytea to a function with
Content-Type: application/octet-stream
- Enables uploading raw text to a function with
Content-Type: text/plain
- Enables calling a function with a single json parameter without using
- #1938, Allow escaping inside double quotes with a backslash, e.g.
?col=in.("Double\"Quote")
,?col=in.("Back\\slash")
- @steve-chavez - #1075, Allow filtering top-level resource based on embedded resources filters. This is enabled by adding
!inner
to the embedded resource, e.g./projects?select=*,clients!inner(*)&clients.id=eq.12
- @steve-chavez, @Iced-Sun - #1857, Make GUC names for headers, cookies and jwt claims compatible with PostgreSQL v14 - @laurenceisla, @robertsosinski
- Getting the value for a header GUC on PostgreSQL 14 is done using
current_setting('request.headers')::json->>'name-of-header'
and in a similar way forrequest.cookies
andrequest.jwt.claims
- PostgreSQL versions below 14 can opt in to the new JSON GUCs by setting the
db-use-legacy-gucs
config option to false (true by default)
- Getting the value for a header GUC on PostgreSQL 14 is done using
- #1988, Allow specifying
unknown
for theis
operator - @steve-chavez - #2031, Improve error message for ambiguous embedding and add a relevant hint that includes unambiguous embedding suggestions - @laurenceisla
Fixed
- #1871, Fix OpenAPI missing default values for String types and identify Array types as "array" instead of "string" - @laurenceisla
- #1930, Fix RPC return type handling for
RETURNS TABLE
with a single column. Regression of #1615. - @wolfgangwalther - #1938, Fix using single double quotes(
"
) and backslashes(/
) as values on the "in" operator - @steve-chavez - #1992, Fix schema cache query failing with standard_conforming_strings = off - @wolfgangwalther
Changed
- #1949, Drop support for embedding hints used with
.
(e.g.select=projects.client_id(*)
),!
should be used instead(e.g.select=projects!client_id(*)
) - @steve-chavez - #1783, Partitions (created using
PARTITION OF
) are no longer included in the schema cache. - @laurenceisla - #2038, Dropped support for PostgreSQL 9.5 - @wolfgangwalther
v8.0.0
Added
- #1525, Allow http status override through response.status guc - @steve-chavez
- #1512, Allow schema cache reloading with NOTIFY - @steve-chavez
- #1119, Allow config file reloading with SIGUSR2 - @steve-chavez
- #1558, Allow 'Bearer' with and without capitalization as authentication schema - @wolfgangwalther
- #1470, Allow calling RPC with variadic argument by passing repeated params - @wolfgangwalther
- #1559, No downtime when reloading the schema cache with SIGUSR1 - @steve-chavez
- #504, Add
log-level
config option. The admitted levels are: crit, error, warn and info - @steve-chavez - #1607, Enable embedding through multiple views recursively - @wolfgangwalther
- #1598, Allow rollback of the transaction with Prefer tx=rollback - @wolfgangwalther
- #1633, Enable prepared statements for GET filters. When behind a connection pooler, you can disable preparing with
db-prepared-statements=false
- This increases throughput by around 30% for simple GET queries(no embedding, with filters applied).
- #1729, #1760, Get configuration parameters from the db and allow reloading config with NOTIFY - @steve-chavez
- #1824, Allow OPTIONS to generate certain HTTP methods for a DB view - @laurenceisla
- #1872, Show timestamps in startup/worker logs - @steve-chavez
- #1881, Add
openapi-mode
config option that allows ignoring roles privileges when showing the OpenAPI output - @steve-chavez - CLI options(for debugging):
- #1678, Add --dump-config CLI option that prints loaded config and exits - @wolfgangwalther
- #1691, Add --example CLI option to show example config file - @wolfgangwalther
- #1697, #1723, Add --dump-schema CLI option for debugging purposes - @monacoremo, @wolfgangwalther
- #1794, (Experimental) Add
request.spec
GUC for db-root-spec - @steve-chavez
Fixed
- #1592, Removed single column restriction to allow composite foreign keys in join tables - @goteguru
- #1530, Fix how the PostgREST version is shown in the help text when the
.git
directory is not available - @monacoremo - #1094, Fix expired JWTs starting an empty transaction on the db - @steve-chavez
- #1162, Fix location header for POST request with select= without PK - @wolfgangwalther
- #1585, Fix error messages on connection failure for localized postgres on Windows - @wolfgangwalther
- #1636, Fix
application/octet-stream
appendingcharset=utf-8
- @steve-chavez - #1469, #1638 Fix overloading of functions with unnamed arguments - @wolfgangwalther
- #1560, Return 405 Method not Allowed for GET of volatile RPC instead of 500 - @wolfgangwalther
- #1584, Fix RPC return type handling and embedding for domains with composite base type (#1615) - @wolfgangwalther
- #1608, #1635, Fix embedding through views that have COALESCE with subselect - @wolfgangwalther
- #1572, Fix parsing of boolean config values for Docker environment variables, now it accepts double quoted truth values ("true", "false") and numbers("1", "0") - @wolfgangwalther
- #1624, Fix using
app.settings.xxx
config options in Docker, now they can be used asPGRST_APP_SETTINGS_xxx
- @wolfgangwalther - #1814, Fix panic when attempting to run with unix socket on non-unix host and properly close unix domain socket on exit - @monacoremo
- #1825, Disregard internal junction(in non-exposed schema) when embedding - @steve-chavez
- #1846, Fix requests for overloaded functions from html forms to no longer hang (#1848) - @laurenceisla
- #1858, Add a hint and clarification to the no relationship found error - @laurenceisla
- #1841, Show comprehensive error when an RPC is not found in a stale schema cache - @laurenceisla
- #1875, Fix Location headers in headers only representation for null PK inserts on views - @laurenceisla
Changed
- #1522, #1528, #1535, Docker images are now built from scratch based on a the static PostgREST executable (#1494) and with Nix instead of a
Dockerfile
. This reduces the compressed image size from over 30mb to about 4mb - @monacoremo - #1461, Location header for POST request is only included when PK is available on the table - @wolfgangwalther
- #1560, Volatile RPC called with GET now returns 405 Method not Allowed instead of 500 - @wolfgangwalther
- #1584, #1849 Functions that declare
returns composite_type
no longer return a single object array by default, only functions withreturns setof composite_type
return an array of objects - @wolfgangwalther - #1604, Change the default logging level to
log-level=error
. Only requests with a status greater or equal than 500 will be logged. If you wish to go back to the previous behaviour and log all the requests, uselog-level=info
- @steve-chavez- Because currently there's no buffering for logging, defaulting to the
error
level(minimum logging) increases throughput by around 15% for simple GET queries(no embedding, with filters applied).
- Because currently there's no buffering for logging, defaulting to the
- #1617, Dropped support for PostgreSQL 9.4 - @wolfgangwalther
- #1679, Renamed config settings with fallback aliases. e.g.
max-rows
is nowdb-max-rows
, butmax-rows
is still accepted - @wolfgangwalther - #1656, Allow
Prefer=headers-only
on POST requests and change default tominimal
(#1813) - @laurenceisla - #1854, Dropped undocumented support for gzip compression (which was surprisingly slow and easily enabled by mistake). In some use-cases this makes Postgres up to 3x faster - @aljungberg
- #1872, Send startup/worker logs to stderr to differentiate from access logs on stdout - @steve-chavez
v7.0.1
Fixed
- #1473, Fix overloaded computed columns on RPC - @wolfgangwalther
- #1471, Fix POST, PATCH, DELETE with ?select= and return=minimal and PATCH with empty body - @wolfgangwalther
- #1500, Fix missing
openapi-server-proxy-uri
config option - @steve-chavez - #1508, Fix
Content-Profile
not working for POST RPC - @steve-chavez - #1452, Fix PUT restriction for all columns - @steve-chavez
Changed
- From this version onwards, the release page will include a single Linux static executable that can be run on any Linux distribution.
v7.0.0
Added
- #1417,
Accept: application/vnd.pgrst.object+json
behavior is now enforced for POST/PATCH/DELETE regardless ofPrefer: return=representation/minimal
- @dwagin - #1415, Add support for user defined socket permission via
server-unix-socket-mode
config option - @Dansvidania - #1383, Add support for HEAD request - @steve-chavez
- #1378, Add support for
Prefer: count=planned
andPrefer: count=estimated
on GET /table - @steve-chavez, @LorenzHenk - #1327, Add support for optional query parameter
on_conflict
to upsert with specified keys for POST - @ykst - #1430, Allow specifying the foreign key constraint name(
/source?select=fk_constraint(*)
) to disambiguate an embedding - @steve-chavez - #1168, Allow access to the
Authorization
header through therequest.header.authorization
GUC - @steve-chavez - #1435, Add
request.method
andrequest.path
GUCs - @steve-chavez - #1088, Allow adding headers to GET/POST/PATCH/PUT/DELETE responses through the
response.headers
GUC - @steve-chavez - #1427, Allow overriding provided headers(Location, Content-Type, etc) through the
response.headers
GUC - @steve-chavez - #1450, Allow multiple schemas to be exposed in one instance. The schema to use can be selected through the headers
Accept-Profile
for GET/HEAD andContent-Profile
for POST/PATCH/PUT/DELETE - @steve-chavez, @MahmoudKassem
Fixed
- #1301, Fix self join resource embedding on PATCH - @herulume, @steve-chavez
- #1389, Fix many to many resource embedding on RPC/PATCH - @steve-chavez
- #1355, Allow PATCH/DELETE without
return=minimal
on tables with no select privileges - @steve-chavez - #1361, Fix embedding a VIEW when its source foreign key is UNIQUE - @bwbroersma
Changed
- #1385, bulk RPC call now should be done by specifying a
Prefer: params=multiple-objects
header - @steve-chavez - #1401, resource embedding now outputs an error when multiple relationships between two tables are found - @steve-chavez
- #1423, default Unix Socket file mode from 755 to 660 - @dwagin
- #1430, Remove embedding with duck typed column names
GET /projects?select=client(*)
- @steve-chavez- You can rename the foreign key to
client
to make this request work in the new version:alter table projects rename constraint projects_client_id_fkey to client
- You can rename the foreign key to
- #1413, Change
server-proxy-uri
config option toopenapi-server-proxy-uri
- @steve-chavez
v6.0.2
Fixed
- #1369, Change
raw-media-types
to accept a string of comma separated MIME types - @Dansvidania - #1368, Fix long column descriptions being truncated at 63 characters in PostgreSQL 12 - @amedeedaboville
- #1348, Go back to converting plus "+" to space " " in querystrings by default - @steve-chavez
Deprecated
v6.0.1
Added
- #1349, Add user defined raw output media types via
raw-media-types
config option - @Dansvidania - #1243, Add websearch_to_tsquery support - @herulume
Fixed
- #1336, Error when testing on Chrome/Firefox: text/html requested but a single column was not selected - @Dansvidania
- #1334, Unable to compile v6.0.0 on windows - @steve-chavez
v6.0.0
Added
- #1186, Add support for user defined unix socket via
server-unix-socket
config option - @Dansvidania - #690, Add
?columns
query parameter for faster bulk inserts, also ignores unspecified json keys in a payload - @steve-chavez - #1239, Add support for resource embedding on materialized views - @vitorbaptista
- #1264, Add support for bulk RPC call - @steve-chavez
- #1278, Add db-pool-timeout config option - @Qu4tro
- #1285, Abort on wrong database password - @Qu4tro
- #790, Allow override of OpenAPI spec through
root-spec
config option - @steve-chavez - #1308, Accept
text/plain
andtext/html
for raw output - @steve-chavez
Fixed
- #1223, Fix incorrect OpenAPI externalDocs url - @steve-chavez
- #1221, Fix embedding other resources when having a self join - @steve-chavez
- #1242, Fix embedding a view having a select in a where - @steve-chavez
- #1238, Fix PostgreSQL to OpenAPI type mappings for numeric and character types - @fpusch
- #1265, Fix query generated on bulk upsert with an empty array - @Qu4tro
- #1273, Fix RPC ignoring unknown arguments by default - @steve-chavez
- #1257, Fix incorrect status when a PATCH request doesn't find rows to change - @Qu4tro
Changed
- #1288, Change server-host default of 127.0.0.1 to !4
Deprecated
- #1288, Deprecate
.
symbol for disambiguating resource embedding(added in #918). '+' should be used instead. Though '+' is url safe, certain clients might need to encode it to '%2B'.
Removed
- #1288, Removed support for schema reloading with SIGHUP, SIGUSR1 should be used instead - @steve-chavez
v5.2.0
Added
- #1205, Add support for parsing JSON Web Key Sets - @russelldavies
- #1203, Add support for reading db-uri from a separate file - @zhoufeng1989
- #1200, Add db-extra-search-path config for adding schemas to the search_path, solves issues related to extensions created on the public schema - @steve-chavez
- #1219, Add ability to quote column names on filters - @steve-chavez
Fixed
- #1182, Fix embedding on views with composite pks - @steve-chavez
- #1180, Fix embedding on views with subselects in pg10 - @steve-chavez
- #1197, Allow CORS for PUT - @bkylerussell
- #1181, Correctly qualify function argument of custom type in public schema - @steve-chavez
- #1008, Allow columns that contain spaces in filters - @steve-chavez
v5.1.0
Added
- #1099, Add support for getting json/jsonb by array index - @steve-chavez
- #1145, Add materialized view columns to OpenAPI output - @steve-chavez
- #709, Allow embedding on views with subselects/CTE - @steve-chavez
- #1148, OpenAPI: add
required
section for the non-nullable columns - @laughedelic - #1158, Add summary to OpenAPI doc for RPC functions - @mdr1384
Fixed
- #1113, Fix UPSERT failing when having a camel case PK column - @steve-chavez
- #945, Fix slow start-up time on big schemas - @steve-chavez
- #1129, Fix view embedding when table is capitalized - @steve-chavez
- #1149, OpenAPI: Change
GET
response type to array - @laughedelic - #1152, Fix RPC failing when having arguments with reserved or uppercase keywords - @mdr1384
- #905, Fix intermittent empty replies - @steve-chavez
- #1139, Fix JWTIssuedAtFuture failure for valid iat claim - @steve-chavez
- #1141, Fix app.settings resetting on pool timeout - @steve-chavez
Changed
- #1099, Numbers in json path
?select=data->1->>key
now get treated as json array indexes instead of keys - @steve-chavez - #1128, Allow finishing a json path with a single arrow
->
. Now a json can be obtained without resorting to casting, Previously:/json_arr?select=data->>2::json
, now:/json_arr?select=data->2
- @steve-chavez - #724, Change server-host default of *4 to 127.0.0.1
Deprecated
- #724, SIGHUP deprecated, SIGUSR1 should be used instead