Joel Jakobsson and GitHub
fd6a3bdccf
fix: hasSingleUnnamedParam incorrectly matching named parameters
...
The hasSingleUnnamedParam function was only checking the parameter type
but not whether the parameter actually had no name. This caused functions
with a single NAMED parameter (e.g., `foo(data json)`) to incorrectly
match the single-param fallback mode.
The result was a confusing PostgreSQL error 42883 "function does not exist"
instead of a clean PGRST202 error explaining that no matching function
was found.
Added ppName == mempty check so functions with named parameters don't
incorrectly match the single-param fallback.
2025-12-15 15:34:48 -05:00
steve-chavez
a75ec75fff
refactor: put CallReadPlan into CrudPlan
2025-09-15 17:07:12 -05:00
steve-chavez
0844743c30
refactor: clarify Plan module and comment
2025-09-02 16:26:15 -05:00
Taimoor Zaeem and Steve Chavez
96571aa0f4
refactor: move request body to a Payload.hs module
2025-07-26 08:50:56 +02:00
Wolfgang Walther
55eafdf352
chore(deps): update nixpkgs to 25.05
2025-07-11 15:53:06 +00:00
Wolfgang Walther
6bf2cb09a6
remove: drop support for PostgreSQL 12
...
This has been EOL since November and has been dropped from nixpkgs.
2025-07-11 15:53:06 +00:00
Laurence Isla
a2892ab1dd
fix: regression that makes fts not work on domain types based on tsvector
2025-06-16 16:53:29 +00:00
Taimoor Zaeem and Steve Chavez
dc46aea15e
fix: max-affected preference not failing for rpc with strict handling
2025-06-03 14:31:17 -05:00
Taimoor Zaeem and Steve Chavez
f53147674e
fix: filter on unselected columns in a table-valued function
2025-04-27 14:20:13 -05:00
Taimoor Zaeem and Steve Chavez
cd5a611a1a
refactor: change CallPlan returnings to a Set instead of a List
2025-04-26 10:02:30 -05:00
Taimoor Zaeem and GitHub
a1009d1bae
refactor: separate SchemaCacheError from ApiRequestError ( #4010 )
2025-04-13 10:34:17 -05:00
Laurence Isla and GitHub
0b618d0bef
feat: allow spreading one-to-many and many-to-many embedded resources
...
* Note: Aggregates are not implemented
2025-03-24 14:45:56 +00:00
Taimoor Zaeem and GitHub
fdc26d52fc
fix: empty error messages for disabled openapi and /invalid/nested/paths
2025-03-21 11:51:40 -05:00
Taimoor Zaeem and Steve Chavez
fc35d6d0f8
fix: Fix ordering with mutation queries
2025-03-17 14:13:34 +01:00
Taimoor Zaeem and GitHub
390ba19932
fix: handle queries on non-existing table gracefully
2025-02-21 13:49:54 -05:00
Taimoor Zaeem and Steve Chavez
e04cd70d83
refactor: move ApiRequestError to Error module
2025-02-13 09:38:18 -05:00
Steve Chavez and GitHub
307692c325
break: remove limited updated/delete feature ( #3907 )
...
BREAKING CHANGE
As agreed on https://github.com/PostgREST/postgrest/issues/3013#issuecomment-1770186262 ,
this removes the limited update/delete feature.
The feature was complicated, largely unused and caused other bugs in
mutations.
It was added in #2195 and #2211 .
2025-02-12 14:48:08 -05:00
Laurence Isla
b7d0a1f68c
feat: apply to_tsvector() explicitly to the full-text search filtered column, only if it's not of tsvector type
2025-01-28 19:14:54 -05:00
M. Taimoor Zaeem and Steve Chavez
a9d74eba2a
feat: allow not_null value for the is operator
2024-12-19 10:19:41 -05:00
Joel Jakobsson and GitHub
180a96ce48
remove support for Prefer: params=single-object ( #3757 )
...
BREAKING CHANGE
Using this preference was deprecated in 6c3d7a9 , in favor of Functions with an array of JSON objects.
2024-11-04 20:19:08 -05:00
Laurence Isla
ded2e997e9
fix: spread embeds failing when using the "count()" aggregate without a field - @laurenceisla
...
- 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())"
2024-08-21 16:56:32 -05:00
Laurence Isla
2302f78539
refactor: simplify functions in the "hoist from selected fields" process
2024-08-21 16:56:32 -05:00
Laurence Isla
e9244f1a4f
fix: a nested spread embedding now correctly groups by the fields of its top parent relationship
2024-08-21 16:56:32 -05:00
Laurence Isla
3539aaff89
fix: prevent spread embed to use aggregates when disabled
2024-08-21 16:56:32 -05:00
Wolfgang Walther and Wolfgang Walther
ee4bfbf253
perf: Pass arguments to RPCs called via GET directly
...
Previously they were passed as a JSON payload. This results in a LATERAL
join for the calling expression, which prevents LIMIT from being pushed
into the inlined function call, making some requests really slow.
Resolves #2858
2024-07-09 08:29:13 +02:00
Laurence Isla
c3070bbd4e
fix: nested empty embeds no longer return empty values and are correctly omitted
2024-07-04 14:21:47 -05:00
Laurence Isla and GitHub
7671d63f06
refactor: add isParent flag to O2O relationships
...
It allows to identify the side with the FK when isParent == False
2024-05-21 12:11:27 -05:00
steve-chavez
5ab317caa0
refactor: one entrypoint for Plan/Response/Query
...
- deduplicates timing calculation for the different steps
- enabling query logging later on will be simpler
2024-04-04 08:58:55 -05:00
steve-chavez
06ff56d323
refactor: move isolation/settings logic to Plan.hs
2024-03-28 18:31:42 -05:00
steve-chavez
c33ca4e60c
refactor: dry timings calculation for openapi
2024-03-28 18:31:42 -05:00
steve-chavez
745e7868b0
refactor: dry some timings calculation
2024-03-27 18:22:34 -05:00
steve-chavez
a5bb20bbf8
refactor: remove unreacheable 404
2024-03-25 18:17:01 +01:00
Wolfgang Walther
00fbe9ff3e
fix: Avoid casting to table type when select= and media type handler are used
...
Previously using a generic mimetype handler failed when any kind of select= was given, because
we tried to cast the select-result to the original table type. With this change, this cast is
only applied when select=* is given implicitly or explicitly. This is the only case where this
makes sense, because this guarantees that correct columns are selected in the correct order for
this cast to succeed.
Resolves #3160
2024-02-15 19:01:12 +01:00
steve-chavez
6b9fde59cd
fix: any handler sets a default application/json
...
Now it sets application/octet-stream as the generic type.
2023-12-12 17:44:07 -05:00
steve-chavez
9fe11249f9
feat: custom SQL handler for the "*/*" media type
2023-11-28 23:14:38 -05:00
Tim Abdulla and GitHub
1c60b50e2e
Add aggregate functions ( #2925 )
...
The aggregate functions SUM(), MAX(), MIN(), AVG(), and COUNT() are now supported.
2023-11-23 14:03:03 -05:00
steve-chavez
82b38341bf
feat: sql handlers for custom media types
...
* test text/html and drop HtmlRawOutputSpec.hs
* all tests passing, removed all pendingWith
* make functions compatible with pg <= 12
* move custom media types tests to own spec
* anyelement aggregate
* apply aggregates without a final function
* overriding works
* overriding anyelement with particular agg
* cannot override vendored media types
* plan spec works with custom aggregate
* renamed media types to make clear which ones are overridable
* correct content negotiation with same weight
* text/tab-separated-values media type
* text/csv with BOM plus content-disposition header
2023-10-26 09:04:02 -05:00
steve-chavez
4a90e9fbd9
break: db-root-spec default app/openapi+json media
...
BREAKING CHANGE
Can be done later with custom media types
2023-10-26 09:04:02 -05:00
steve-chavez
14d030b96c
break: remove binary field logic, raw-media-types
...
BREAKING CHANGE
Can be done later with custom media types
2023-10-26 09:04:02 -05:00
Laurence Isla and GitHub
910950dbac
fix: RPCs not embedding correctly when using overloaded functions for computed relationships
2023-10-02 16:00:33 -05:00
steve-chavez
cf7ee67dfe
fix: arrow filter on RPC returning TABLE+composite
2023-09-28 20:26:38 -03:00
Taimoor Zaeem and Steve Chavez
3c1cdd434a
feat: add handling=strict/lenient for Prefer header
2023-09-27 15:00:52 -03:00
steve-chavez
8d3c9f8435
refactor: move media type logic to Plan module
2023-09-12 19:24:26 -03:00
steve-chavez
e30bf53afa
deprecate: target embedding disambiguation
2023-08-10 08:14:23 -05:00
Taimoor Zaeem and GitHub
fbf9bf21c2
feat: add optional nulls=stripped parameter for mediatypes applicatio… ( #2894 )
2023-08-09 18:49:22 -05:00
Taimoor Zaeem and Steve Chavez
d490bf09fd
feat: add Preference-Applied header in response for Prefer: return=representation/minimal/headers-only
2023-08-05 02:21:50 -05:00
steve-chavez
2d00d7d248
fix: null filtering on embed when column=relation
2023-07-27 22:43:13 -05:00
steve-chavez
28d5278d62
fix: use index on jsonb/jsonb arrow filter/order
2023-07-12 14:51:21 -05:00
steve-chavez
e332f038ef
fix: HEAD unnecessarily executing aggregates
2023-07-10 15:05:51 -05:00
steve-chavez
905fcb05cc
refactor: add ResultAggregate type
2023-07-10 15:05:51 -05:00