All Versions
35
Latest Version
Avg Release Cycle
95 days
Latest Release
178 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v9.0.0 Changes
November 25, 2021โ 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 '.'(
select=projects.client_id(*)
), '!' should be used instead(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 Changes
July 25, 2021โ 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 Changes
May 18, 2020๐ 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
-
v7.0.0 Changes
April 03, 2020โ 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
- 0๏ธโฃ #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
- #1417,
-
v6.0.2 Changes
August 22, 2019๐ 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
- 0๏ธโฃ #1348, Go back to converting plus "+" to space " " in querystrings by default - @steve-chavez
๐ Deprecated
- #1369, Change
-
v6.0.1 Changes
July 30, 2019โ 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
- #1349, Add user defined raw output media types via
-
v6.0.0 Changes
June 21, 2019โ 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
- 0๏ธโฃ #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
- 0๏ธโฃ #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
- ๐ #1186, Add support for user defined unix socket via
-
v5.2.0 Changes
December 12, 2018โ 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 Changes
August 31, 2018โ 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 - 0๏ธโฃ #724, Change server-host default of *4 to 127.0.0.1
๐ Deprecated
- ๐ #724, SIGHUP deprecated, SIGUSR1 should be used instead
-
v0.5.0.0 Changes
May 14, 2018โ Added
- The configuration (e.g.
postgrest.conf
) now accepts arbitrary settings that will be passed through as session-local database settings. This can be used to pass in secret keys directly as strings, or via OS environment variables. For instance:app.settings.jwt_secret = "$(MYAPP_JWT_SECRET)"
will takeMYAPP_JWT_SECRET
from the environment and make it available to postgresql functions ascurrent_setting('app.settings.jwt_secret')
. Onlyapp.settings.*
values in the configuration file are treated in this way. - @canadaduane - ๐ #256, Add support for bulk UPSERT with POST and single UPSERT with PUT - @steve-chavez
- #1078, Add ability to specify source column in embed - @steve-chavez
- #821, Allow embeds alias to be used in filters - @steve-chavez
- ๐ง #906, Add jspath configurable
role-claim-key
- @steve-chavez - #1061, Add foreign tables to OpenAPI output - @rhyamada
๐ Fixed
- #828, Fix computed column only working in public schema - @steve-chavez
- #925, Fix RPC high memory usage by using parametrized query and avoiding json encoding - @steve-chavez
- #987, Fix embedding with self-reference foreign key - @steve-chavez
- #1044, Fix view parent embedding when having many views - @steve-chavez
- #781, Fix accepting misspelled desc/asc ordering modificators - @onporat, @steve-chavez
๐ Changed
- #828, A
SET SCHEMA <db-schema>
is done on each request, this has the following implications:- Computed columns now only work if they belong to the db-schema
- Stored procedures might require a search_path to work properly, for further details see https://postgrest.org/en/v5.0/api.html#explicit-qualification
- To use RPC now the
json_to_record/json_to_recordset
functions are needed, these are available starting from PostgreSQL 9.4 - @steve-chavez - Overloaded functions now depend on the
dbStructure
, restart/sighup may be needed for their correct functioning - @steve-chavez - ๐ #1098, Removed support for:
- curly braces
{}
in embeds, i.e./clients?select=*,projects{*}
can no longer be used, from now on parens()
should be used/clients?select=*,projects(*)
- @steve-chavez - "in" operator without parens, i.e.
/clients?id=in.1,2,3
no longer supported,/clients?id=in.(1,2,3)
should be used - @steve-chavez - "@@", "@>" and "<@" operators, from now on their mnemonic equivalents should be used "fts", "cs" and "cd" respectively - @steve-chavez--replace
- curly braces
- The configuration (e.g.