Postgrest Versions Save

REST API for any Postgres database

v10.2.0.20230407

1 year ago

Added

  • #1414, Add related orders - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can order a parent by a child column /projects?select=*,clients(*)&order=clients(name).desc.nullsfirst
  • #1233, #1907, #2566, Allow spreading embedded resources - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can unnest a json object with /projects?select=*,...clients(client_name:name)
    • Allows including the join table columns when resource embedding
    • Allows disambiguating a recursive m2m embed
    • Allows disambiguating an embed that has a many-to-many relationship using two foreign keys on a junction
  • #2340, Allow embedding without selecting any column - @steve-chavez
  • #2563, Allow is.null or not.is.null on an embedded resource - @steve-chavez
    • Offers a more flexible replacement for !inner, e.g. /projects?select=*,clients(*)&clients=not.is.null
    • Allows doing an anti join, e.g. /projects?select=*,clients(*)&clients=is.null
    • Allows using or across related tables conditions
  • #1100, Customizable OpenAPI title - @AnthonyFisi
  • #2506, Add server-trace-header for tracing HTTP requests. - @steve-chavez
    • When the client sends the request header specified in the config it will be included in the response headers.
  • #2694, Make db-root-spec stable. - @steve-chavez
    • This can be used to override the OpenAPI spec with a custom database function
  • #1567, On bulk inserts, missing values can get the column DEFAULT by using the Prefer: missing=default header - @steve-chavez
  • #2501, Allow filtering byIS DISTINCT FROM using the isdistinct operator, e.g. /people?alias=isdistinct.foo
  • #2663, Limit maximal postgresql connection lifetime - @robx
    • New option db-pool-max-lifetime (default 30m)
    • db-pool-acquisition-timeout is no longer optional and defaults to 10s
    • Fixes postgresql resource leak with long-lived connections (#2638)
  • #1569, Allow any/all modifiers on the eq,like,ilike,gt,gte,lt,lte,match,imatch operators, e.g. /tbl?id=eq(any).{1,2,3} - @steve-chavez
    • This converts the input into an array type

Fixed

  • #2651, Add the missing get path item for RPCs to the OpenAPI output - @laurenceisla
  • #2648, Fix inaccurate error codes with new ones - @laurenceisla
    • PGRST204: Column is not found
    • PGRST003: Timed out when acquiring connection to db
  • #2667, Fix db-pool-acquisition-timeout not logging to stderr when the timeout is reached - @steve-chavez
  • #1652, Fix function call with arguments not inlining - @steve-chavez
  • #2705, Fix bug when using the Range header on PATCH/DELETE - @laurenceisla
    • Fix the"message": "syntax error at or near \"RETURNING\"" error
    • Fix doing a limited update/delete when an order query parameter was present

Changed

  • #2705, The Range header is now only considered on GET requests and is ignored for any other method - @laurenceisla
    • Other methods should use the limit/offset query parameters for sub-ranges
    • PUT requests no longer return an error when this header is present (using limit/offset still triggers the error)

Changed

  • #2733, Remove bulk RPC call with the Prefer: params=multiple-objects header. A function with a JSON array or object parameter should be used instead.

v10.2.0.20230209

1 year ago

Added

  • #1414, Add related orders - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can order a parent by a child column /projects?select=*,clients(*)&order=clients(name).desc.nullsfirst
  • #1233, #1907, #2566, Allow spreading embedded resources - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can unnest a json object with /projects?select=*,...clients(client_name:name)
    • Allows including the join table columns when resource embedding
    • Allows disambiguating a recursive m2m embed
    • Allows disambiguating an embed that has a many-to-many relationship using two foreign keys on a junction
  • #2340, Allow embedding without selecting any column - @steve-chavez
  • #2563, Allow is.null or not.is.null on an embedded resource - @steve-chavez
    • Offers a more flexible replacement for !inner, e.g. /projects?select=*,clients(*)&clients=not.is.null
    • Allows doing an anti join, e.g. /projects?select=*,clients(*)&clients=is.null
    • Allows using or across related tables conditions
  • #1100, Customizable OpenAPI title - @AnthonyFisi

Fixed

  • #2651, Add the missing get path item for RPCs to the OpenAPI output - @laurenceisla
  • #2648, Fix inaccurate error codes with new ones - @laurenceisla
    • PGRST204: Column is not found
    • PGRST003: Timed out when acquiring connection to db

v10.2.0.20230203

1 year ago

Added

  • #1414, Add related orders - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can order a parent by a child column /projects?select=*,clients(*)&order=clients(name).desc.nullsfirst
  • #1233, #1907, #2566, Allow spreading embedded resources - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can unnest a json object with /projects?select=*,...clients(client_name:name)
    • Allows including the join table columns when resource embedding
    • Allows disambiguating a recursive m2m embed
    • Allows disambiguating an embed that has a many-to-many relationship using two foreign keys on a junction
  • #2340, Allow embedding without selecting any column - @steve-chavez
  • #2563, Allow is.null or not.is.null on an embedded resource - @steve-chavez
    • Offers a more flexible replacement for !inner, e.g. /projects?select=*,clients(*)&clients=not.is.null
    • Allows doing an anti join, e.g. /projects?select=*,clients(*)&clients=is.null
    • Allows using or across related tables conditions
  • #1100, Customizable OpenAPI title - @AnthonyFisi

v10.1.2

1 year ago

Fixed

  • #2565, Fix bad M2M embedding on RPC - @steve-chavez
  • #2575, Replace misleading error message when no function is found with a hint containing functions/parameters names suggestions - @laurenceisla
  • #2582, Move explanation about "single parameters" from the message to the details in the error output - @laurenceisla
  • #2569, Replace misleading error message when no relationship is found with a hint containing parent/child names suggestions - @laurenceisla
  • #1405, Add the required OpenAPI items object when the parameter is an array - @laurenceisla
  • #2592, Add upsert headers for POST requests to the OpenAPI output - @laurenceisla
  • #2623, Fix FK pointing to VIEW instead of TABLE in OpenAPI output - @laurenceisla
  • #2622, Consider any PostgreSQL authentication failure as fatal and exit immediately - @michivi
  • #2620, Fix NOTIFY pgrst not reloading the db connections catalog cache - @steve-chavez

v10.1.1.20221215

1 year ago

Added

  • #1414, Add related orders - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can order a parent by a child column /projects?select=*,clients(*)&order=clients(name).desc.nullsfirst
  • #1233, #1907, #2566, Allow spreading embedded resources - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can unnest a json object with /projects?select=*,...clients(client_name:name)
    • Allows including the join table columns when resource embedding
    • Allows disambiguating a recursive m2m embed
    • Allows disambiguating an embed that has a many-to-many relationship using two foreign keys on a junction
  • #2340, Allow embedding without selecting any column - @steve-chavez
  • #2563, Allow is.null or not.is.null on an embedded resource - @steve-chavez
    • Offers a more flexible replacement for !inner, e.g. /projects?select=*,clients(*)&clients=not.is.null
    • Allows doing an anti join, e.g. /projects?select=*,clients(*)&clients=is.null
    • Allows using or across related tables conditions

Fixed

  • #2565, Fix bad M2M embedding on RPC - @steve-chavez
  • #2575, Replace misleading error message when no function is found with a hint containing functions/parameters names suggestions - @laurenceisla
  • #2569, Replace misleading error message when no relationship is found with a hint containing parent/child names suggestions - @laurenceisla

v10.1.1.20221212

1 year ago

Added

  • #1414, Add related orders - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can order a parent by a child column /projects?select=*,clients(*)&order=clients(name).desc.nullsfirst
  • #1233, #1907, #2566, Allow spreading embedded resources - @steve-chavez
    • On a many-to-one or one-to-one relationship, you can unnest a json object with /projects?select=*,...clients(client_name:name)
    • Allows including the join table columns when resource embedding
    • Allows disambiguating a recursive m2m embed
    • Allows disambiguating an embed that has a many-to-many relationship using two foreign keys on a junction
  • #2340, Allow embedding without selecting any column - @steve-chavez
  • #2563, Allow is.null or not.is.null on an embedded resource - @steve-chavez
    • Offers a more flexible replacement for !inner, e.g. /projects?select=*,clients(*)&clients=not.is.null
    • Allows doing an anti join, e.g. /projects?select=*,clients(*)&clients=is.null
    • Allows using or across related tables conditions

Fixed

  • #2565, Fix bad M2M embedding on RPC - @steve-chavez

v10.1.1

1 year ago

Fixed

  • #2548, Fix regression when embedding views with partial references to multi column FKs - @wolfgangwalther
  • #2558, Fix regression when requesting limit=0 and db-max-row is set - @laurenceisla

v10.1.0.20221104

1 year ago

Fixed

  • #2548, Fix regression when embedding views with partial references to multi column FKs - @wolfgangwalther
  • #2558, Fix regression when requesting limit=0 and db-max-row is set - @laurenceisla

v10.1.0

1 year ago

Added

  • #2348, Add db-pool-acquisition-timeout configuration option, time in seconds to wait to acquire a connection. - @robx

Fixed

  • #2261, #2349, #2467, Reduce allocations communication with PostgreSQL, particularly for request bodies. - @robx
  • #2401, #2444, Fix SIGUSR1 to fully flush connections pool. - @robx
  • #2428, Fix opening an empty transaction on failed resource embedding - @steve-chavez
  • #2455, Fix embedding the same table multiple times - @steve-chavez
  • #2518, Fix a regression when embedding views where base tables have a different column order for FK columns - @wolfgangwalther
  • #2458, Fix a regression with the location header when inserting into views with PKs from multiple tables - @wolfgangwalther
  • #2356, Fix a regression in openapi output with mode follow-privileges - @wolfgangwalther
  • #2283, Fix infinite recursion when loading schema cache with self-referencing view - @wolfgangwalther
  • #2343, Return status code 200 for PATCH requests which don't affect any rows - @wolfgangwalther
  • #2481, Treat computed relationships not marked SETOF as M2O/O2O relationship - @wolfgangwalther
  • #2534, Fix embedding a computed relationship with a normal relationship - @steve-chavez
  • #2362, Fix error message when [] is used inside select - @wolfgangwalther
  • #2475, Disallow !inner on computed columns - @wolfgangwalther
  • #2285, Ignore leading and trailing spaces in column names when parsing the query string - @wolfgangwalther
  • #2545, Fix UPSERT with PostgreSQL 15 - @wolfgangwalther
  • #2459, Fix embedding views with multiple references to the same base column - @wolfgangwalther

Changed

  • #2444, Removed db-pool-timeout option, because this was removed upstream in hasql-pool. - @robx
  • #2343, PATCH requests that don't affect any rows no longer return 404 - @wolfgangwalther
  • #2537, Stricter parsing of query string. Instead of silently ignoring, the parser now throws on invalid syntax like json paths for embeddings, hints for regular columns, empty casts or fts languages, etc. - @wolfgangwalther

Deprecated

  • #1385, Deprecate bulk-calls when including the Prefer: params=multiple-objects in the request. A function with a JSON array or object parameter should be used instead for a better performance.

v10.0.0.20221011

1 year ago

Added

  • #2348, Add db-pool-acquisition-timeout configuration option, time in seconds to wait to acquire a connection. - @robx

Fixed

  • #2401, #2444, Fix SIGUSR1 to fully flush connections pool, remove db-pool-timeout. - @robx
  • #2428, Fix opening an empty transaction on failed resource embedding - @steve-chavez
  • #2261, #2349, #2467, Reduce allocations communication with PostgreSQL, particularly for request bodies. - @robx

Deprecated

  • #1385, Deprecate bulk-calls when including the Prefer: params=multiple-objects in the request. A function with a JSON array or object parameter should be used instead for a better performance.