steve-chavez
9f722e0799
bump version to 14.8
2026-04-03 16:51:55 -05:00
steve-chavez
806579e659
bump version to 14.7
2026-03-20 14:22:31 -05:00
steve-chavez
1856434a74
fix: not logging termination unix signals
...
Under container environments like ECS, it's hard to know when PostgREST
is being terminated.
2026-03-20 13:38:40 -05:00
steve-chavez
6813ceaf31
bump version to 14.6
2026-03-06 16:30:04 -05:00
steve-chavez
dc67e4d3f5
chore: fix changelog entries
2026-02-13 13:40:38 -05:00
steve-chavez
d89826b982
bump version to 14.5
2026-02-12 20:12:52 -05:00
steve-chavez
94350fdde6
fix: don't hide async exceptions in logs
...
Fixes #4646 . Using the repro on #4646 , this now produces the log:
```
11/Feb/2026:09:40:08 -0500: Warp server error: stack overflow
```
When:
```
$ curl localhost:3000/
curl: (52) Empty reply from server
```
(cherry picked from commit e95e815483 )
2026-02-12 20:11:44 -05:00
steve-chavez
5485b8ca9a
bump version to 14.4
2026-01-29 14:13:49 -05:00
steve-chavez
895e9c536c
chore: remove wrong entry in CHANGELOG
2026-01-29 13:24:20 -05:00
steve-chavez
545f45d9de
bump version to 14.3
2026-01-03 16:45:56 +08:00
steve-chavez
29d6d35020
bump version to 14.2
2025-12-18 21:30:38 -05:00
steve-chavez
4d35eb02e7
fix: inaccurate Server-Timing durations
...
The transaction duration was notably off, doing:
```
curl localhost:3000/rpc/sleep?seconds=5 -i
```
Shows `46.1` for the `transaction;dur`, with this fix we obtain
`5007.3`.
Fixes https://github.com/PostgREST/postgrest/issues/4522
This also fixes inaccurate "schema cache queried" logs,
see https://github.com/PostgREST/postgrest/issues/4551 .
(cherry picked from commit 013f078bc4 )
2025-12-18 18:18:09 -05:00
steve-chavez
b3b4e5ff35
bump version to 14.1
2025-11-05 09:09:22 -05:00
steve-chavez
23750e644f
bump version to 14.0
2025-10-24 17:39:04 -05:00
steve-chavez
4dff3550b3
docs: new two-part versioning in releases section
...
Also add entry to the changelog
2025-10-24 17:23:57 -05:00
steve-chavez
3085cc81ec
docs: link external auth on architecture page
...
Partly addresses https://github.com/PostgREST/postgrest/issues/4110
2025-10-24 14:56:24 -05:00
steve-chavez
4ea983163a
chore: add changelog for v13.0.8
2025-10-24 14:12:02 -05:00
steve-chavez
1d2350188c
chore(changelog): put additions at the top
2025-10-24 13:19:21 -05:00
steve-chavez
b20d369176
docs: elaborate on Docker tag
...
Also link to installation from README.md
Closes https://github.com/PostgREST/postgrest/issues/4385 .
2025-10-23 18:57:41 -05:00
steve-chavez
7968b918ec
nix: fix postgrest-loadtest command
...
Uses python for sending SIGNIT cross-platform
2025-10-23 16:05:15 -05:00
steve-chavez
0f7ac1bc39
test: schema cache load max duration
...
Test to ensure no regression happens after https://github.com/PostgREST/postgrest/pull/4396
2025-10-21 14:10:14 -05:00
steve-chavez and Wolfgang Walther
322216c810
chore: remove split-sections
...
It's a problem for macos on x86_64 and it's no longer needed as mentioned on
https://github.com/PostgREST/postgrest/discussions/4384#discussioncomment-14614110
2025-10-08 06:29:12 +00:00
steve-chavez
09b088d8ff
change: change log-query string value to bool
...
BREAKING CHANGE
As discussed on https://github.com/PostgREST/postgrest/issues/3934#issuecomment-3362806777 ,
this changes log-query to use a bool value, this:
- Simplifies config for users.
- Reduces effort in testing the different combinations.
Closes #3934
2025-10-03 12:17:12 -05:00
steve-chavez
e4458abd33
chore(changelog): adjust jwt sieve change
2025-10-03 12:17:12 -05:00
Steve Chavez and GitHub
bcf3457c28
docs: note index on automatic tsvector ( #4344 )
2025-09-19 13:49:30 -05:00
Steve Chavez and GitHub
9f056ac756
fix: not logging tx variables and pre-request ( #4341 )
...
Addresses the first item on https://github.com/PostgREST/postgrest/issues/3934
2025-09-19 12:16:10 -05:00
steve-chavez
4a81f6b1a6
test: refactor test_log_query
...
It's easier to maintain without using explicit array indexes for
matching the logs
2025-09-17 19:08:10 -05:00
steve-chavez
baea47bc85
refactor: make Query module pure
...
This splits off the transaction concerns into a MainTx module
It's just moving some functions inside the Query module to the MainTx module.
Some types names were also changed so they don't have the "Query" prefix, to avoid confusion.
2025-09-15 23:43:26 -05:00
steve-chavez
15e04903b1
fix: not logging explain query for estimated count
...
Fixes https://github.com/PostgREST/postgrest/issues/4319
2025-09-15 17:07:12 -05:00
steve-chavez
a75ec75fff
refactor: put CallReadPlan into CrudPlan
2025-09-15 17:07:12 -05:00
steve-chavez
0acf5a30e6
refactor: remove unnecessary RSPlan constructor
...
This also removes some unreachable paths in Query module logic.
2025-09-11 20:51:51 -05:00
steve-chavez
4650e7299f
chore(changelog): add breaking change for JWT kid
2025-09-11 14:50:21 -05:00
steve-chavez
0bb127057f
docs: clarify wording on kid validation
2025-09-11 14:50:21 -05:00
steve-chavez
cddfb6cf5e
fix: not logging OpenAPI queries
...
Closes https://github.com/PostgREST/postgrest/issues/4226 .
This requires moving query generation to the top App.hs module.
At this point is also simple to log the transaction variables + the
pre-request function call but this is not done here to reduce scope.
2025-09-10 09:04:12 -05:00
steve-chavez
1d2a3e8501
refactor: pass AuthResult to txVarQuery
...
Saves one parameter to the function.
2025-09-10 09:04:12 -05:00
steve-chavez
966a611d7f
refactor: inline txVarQuery and preReqQuery
...
This way it's easier to see which queries are being executed.
Also use whenJust instead of traverse_.
2025-09-10 09:04:12 -05:00
steve-chavez
1dca23e7af
refactor: move accessibleFuncs to SqlFragment
2025-09-04 09:35:33 -05:00
steve-chavez
9c07070263
refactor: move accessibleTables to SqlFragment
2025-09-04 09:35:33 -05:00
steve-chavez
1ace298a1a
refactor: move schemaCacheDescription to SqlFragment
...
This doesn't belong in the schema cache module, as
it's unused there. It's only used on Query.hs.
2025-09-04 09:35:33 -05:00
steve-chavez
b2ce322d56
refactor: move snippet logic inside Statements.hs
...
Some snippet logic was unnecessarily at the Query.hs level.
This is better as we can see what inputs we need to form the main
queries.
2025-09-02 16:26:15 -05:00
steve-chavez
0844743c30
refactor: clarify Plan module and comment
2025-09-02 16:26:15 -05:00
steve-chavez
3e776213b7
refactor: move decoding to Query.hs
...
Towards solving https://github.com/PostgREST/postgrest/issues/3934 .
This makes the Statements internal module pure now it only returns
Hasql.Snippet.
2025-09-02 16:26:15 -05:00
steve-chavez
f01d5bfeb3
docs: reorder computed relationships for clarity
...
Ensure the function inlining is mentioned first
2025-08-19 12:24:47 -05:00
steve-chavez
1dce4a9321
Revert "fix: geojson invalid query on unavailable PostGIS"
...
This reverts commit 0f1ca8faac .
Reverting for now as it adds one more query to the schema cache and
there's no clear way forward on how to integrate the fix with the
current schema cache queries.
See discussion on
https://github.com/PostgREST/postgrest/pull/4246#pullrequestreview-3093174224 .
2025-08-13 14:54:53 -05:00
steve-chavez
0f1ca8faac
fix: geojson invalid query on unavailable PostGIS
...
Closes https://github.com/PostgREST/postgrest/issues/4245 .
It adds a query on schema cache construction, but doesn't add a new
attribute to the SchemaCache type. We only need the information to be
passed to the `initialMediaHandlers` function to build the builtin media
handlers.
2025-08-06 10:20:01 -05:00
steve-chavez
fa09e4af0d
docs: add redirects for broken hashes on auth.rst
2025-07-30 05:28:00 -05:00
steve-chavez
fd127f449c
docs: correct order of jwt claims sections
2025-07-30 05:14:43 -05:00
steve-chavez
ad25479185
chore: put bounded jwt cache as addition
2025-07-30 04:53:22 -05:00
steve-chavez
ac155a9391
docs: clarify auth page
...
Reorganizes the auth page and clarifies some links
2025-07-28 15:43:38 -05:00
steve-chavez
aa58e37f03
refactor: add PreQuery module
...
Small step towards solving #3934 .
Adds a module that builds SQL snippets for the transaction variables
and the pre-request function.
2025-07-23 10:06:32 +02:00
steve-chavez
161f37f1f1
test: remove jwt decoding from mixed loadtest
...
We now have dedicated JWT loadtests, so it's no longer necessary
to conflate JWT here.
2025-07-18 07:25:53 -05:00
steve-chavez
2d4967c4b4
nix: reduce loadtest result verbosity
2025-07-16 17:38:33 -05:00
steve-chavez
a183dea9e4
docs: clarify health checks empty response body
2025-07-08 12:45:15 -05:00
steve-chavez
e3f8a95b72
nix: complete jwt loadtests
...
Completes the jwt loadtests, now we have non-cached, cached + worst case
for the cache.
- jwt-hs (edited): now has the cache disabled
- jwt-hs-cache: cache enabled for jwt-hs
- jwt-hs-cache-worst: worst case of the jwt-hs cache
- jwt-rsa (edited): now has the cache disabled
- jwt-rsa-cache: cache enabled for jwt-rsa
- jwt-rsa-cache-worst: worst case of the jwt-rsa cache
Also deletes `nix/tools/generate_targets_rsa.py` and uses a single
python script.
Should prove what's mentioned on
https://github.com/PostgREST/postgrest/pull/4084#issuecomment-2998170423
2025-07-06 19:14:17 -05:00
steve-chavez
a87e31b767
nix: shorten loadtest script
2025-07-06 19:14:17 -05:00
steve-chavez
67bd3526c2
nix: use json file for generated jwk on loadtest
...
Having the JWK as .http file was confusing.
Also split genTargets into two to avoid confusion.
2025-06-20 11:27:44 -05:00
steve-chavez
c8adfebb1f
nix: fix postgrest-loadtest-to-markdown on NAs
...
The python script failed when presenting NAs with:
TypeError: boolean value of NA is ambiguous
2025-06-19 16:48:44 -05:00
steve-chavez
49de3c1ab8
nix: adjacent process monitoring report columns
2025-06-19 16:36:25 -05:00
steve-chavez
e1c71c92d6
nix: add traces to loadtest commands
2025-06-19 15:04:16 -05:00
steve-chavez
bc99ec8285
nix: add group to postgrest-loadtest-report
...
This is so the results are easier to skim
2025-06-17 17:58:49 -05:00
steve-chavez
7dbb8cd987
nix: better monitoring loadtest report readability
2025-06-17 16:38:06 -05:00
steve-chavez
47763df590
nix: add process monitoring for loadtests
...
Closes https://github.com/PostgREST/postgrest/issues/4107 .
Adds two python scripts:
- monitor_pid.py: monitors the postgrest process each second
until it exits, then outputs a csv with the results. The nix wrappers
use the `loadtest` dir for the output.
- merge_monitor_result.py: receives a list of csvs and merges them into
a single markdown table. The nix wrappers use the `loadtest/*.csv`
files for the input.
The nix `postgrest-with-pgrst` and `postgrest-loadtest-report` commands
use these scripts to add monitoring for `postgrest-loadtest` and
`postgrest-loadtest-against`.
2025-06-17 00:10:58 -05:00
steve-chavez
53604c9db2
nix: increase jwt-hs loadtest TOTAL_TARGETS
...
This is so the process monitoring results are more meaningful.
* remove the amount of total targets from the loadtest kind name
since the targets can change.
* clarifies the top comment on the generate_targets python script
* increase TOTAL_TARGETS on jwt-hs loadtest
2025-06-17 00:10:58 -05:00
steve-chavez
ba7aaa8ab1
nix: dedup vegeta command in nix loadtest
2025-06-17 00:10:58 -05:00
steve-chavez
b2f8786821
nix: detect unused python code
...
Now `postgrest-lint` shows:
```
Linting workflows...
Scanning nix files for unused code...
Scanning python files for unused code...
nix/tools/generate_targets.py:13: unused variable 'JWT_DURATION' (60% confidence)
test/io/test_cli.py:6: unused import 'repeat' (90% confidence)
```
Also corrected the above detected files
2025-06-03 20:47:39 -05:00
steve-chavez
72f6036432
docs: external authentication page in explanations
...
- Move page from External JWT generation
2025-05-30 17:59:51 -05:00
steve-chavez
afc989403d
docs: move jwt using SSL to tutorial 1
...
Removes jwt.io example in favor of a bash script
2025-05-30 17:59:51 -05:00
steve-chavez
054ee463a1
docs: remove Greenplum integration
...
They're not really a sponsor, so it's not fair to include them.
2025-05-28 17:43:16 -05:00
steve-chavez
da467fe3b6
nix: add PGRST_ADMIN_SERVER_PORT to postgrest-run
...
It's frequently needed during manual testing.
2025-05-27 20:12:00 -05:00
steve-chavez
52cf4658c5
docs: update architecture HTTP link
...
It links directly to warp page, which is confusing. Link to the
same page reference instead, which finally links to warp.
2025-05-26 13:44:20 -05:00
steve-chavez
520631913f
docs: add warning for duplicate keys in spread
2025-05-15 17:42:13 -05:00
steve-chavez
10e31c4e8c
nix: clarify output of loadtest jwt
2025-05-15 16:38:59 -05:00
steve-chavez
a659b0005a
docs: clarify spread join table
2025-05-15 15:50:54 -05:00
steve-chavez
23f11e3abb
docs: clarify fts
2025-05-15 11:57:08 -05:00
steve-chavez
211e27a4d7
docs: clarify spread feature
2025-05-15 11:14:06 -05:00
steve-chavez
257a7d1488
docs: jwt role extraction link to config
...
The feature section was missing a link to its config.
Also shorten the section name.
2025-05-09 20:45:37 -05:00
steve-chavez
98ca7c15d5
drop: Admin server config endpoint
...
BREAKING CHANGE
The endpoint was at risk of being left unprotected when exposing it.
The accompanying `admin-server-config-enabled` config was also dropped.
2025-05-04 13:53:50 -05:00
steve-chavez
7d04731be1
chore: add changelog for v12.2.12
2025-05-04 13:53:50 -05:00
steve-chavez
b58253833b
refactor: split preference parsing from userApiRequest
...
This allows obtaining the preferences header before doing the full parse
on userApiRequest. Which is needed by #3507 .
2025-05-02 19:04:02 -05:00
steve-chavez
58237be608
test: add loadtest for async purge of JWT cache
2025-04-20 15:11:41 -05:00
steve-chavez
c732591f37
chore: add changelog for 12.2.10
2025-04-18 21:30:22 -05:00
steve-chavez
b740fcb1ff
changelog: add missing entry jwt cache purge fix
2025-04-18 20:46:25 -05:00
steve-chavez
58b5dff188
Revert "nix: add loadtest with unique JWTs"
2025-04-18 17:43:10 -05:00
steve-chavez
51743016fd
ci: github report for jwt loadtest
2025-04-18 13:05:14 -05:00
steve-chavez
9c3816218a
ci: adjust upper bound of PATCH memory test
2025-04-17 23:11:33 -05:00
steve-chavez
608f7ca45a
nix: add loadtest with unique JWTs
...
This loadtests the jwt decoding logic. For this it adds an optional
`-k`(kind) parameter to `postgrest-loadtest` and
`postgrest-loadtest-against`.
Old kind (default):
```
postgrest-loadtest -k mixed
postgrest-loadtest-against -k mixed
```
New kind:
```
postgrest-loadtest -k jwt
postgrest-loadtest-against -k jwt
```
Internally it uses a dynamically generated targets file using python
which looks like:
```
GET http://postgrest/authors_only
Authorization: Bearer <jwt>
GET http://postgrest/authors_only
Authorization: Bearer <another-jwt>
...
```
Then this is used to run vegeta with the `-lazy` option.
2025-04-17 23:11:33 -05:00
steve-chavez
d89e7a2173
docs: redirect from broken #bulk-insert-default
2025-04-02 13:05:12 -05:00
steve-chavez
4348cb2057
docs: fix AST keyword missing from dict
2025-03-05 18:39:23 -05:00
steve-chavez
3af3371e1e
docs: add note about Plan in architecture page
...
Also add links to the ApiRequest, Plan and Query components in the
diagram.
2025-03-05 18:37:10 -05:00
steve-chavez
33b69b5894
docs: reduce verbosity of aggregate functions
2025-02-12 20:12:38 -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
steve-chavez
94f0edb61a
docs: correct package for installation under Nix
2025-02-12 14:41:21 -05:00
Steve Chavez and GitHub
6db245aacd
fix: clarify PGRST116 error message ( #3795 )
...
Currently it's redundant and not easy to read.
```
{"message":"JSON object requested, multiple (or no) rows returned",
"details":"The result contains 2 rows"}
```
Now:
```
{"message":"Cannot coerce the result to a single JSON object",
"details":"The result contains an array of 0 objects"}
``
Also correct docs which had a wrong error code.
2024-11-20 12:15:46 -05:00
steve-chavez
80a4edbd2d
chore: add comments on the Observation module
2024-11-15 16:11:26 -05:00
steve-chavez
2766b844a9
fix: always show schema cache load time
...
It used to be that this was only enabled with log-level=debug.
But the default log-level is misleading, for example:
```
$ PGRST_DB_SCHEMAS="apflora" postgrest-with-postgresql-16 -f test/io/big_schema.sql postgrest-run
...
13/Nov/2024:22:08:20 -0500: Config reloaded
13/Nov/2024:22:08:20 -0500: Schema cache queried in 36.3 milliseconds
13/Nov/2024:22:08:20 -0500: Schema cache loaded 326 Relations, 305 Relationships, 7 Functions, 0 Domain Representations, 4 Media Type Handlers, 1194 Timezones
```
The "Schema cache loaded" can take a while to appear, yet the 22:08:20
time is the same. If we reveal the load time this is clarified:
```
13/Nov/2024:22:08:37 -0500: Schema cache loaded in 16770.1 milliseconds
```
2024-11-15 16:11:26 -05:00
steve-chavez
dca09c84b9
nix: add exp support for postgrest-gen-jwt
2024-11-15 14:41:02 -05:00
steve-chavez
2564b323d7
chore: disallow github blank issue and cleanup
2024-11-05 13:04:32 -05:00
steve-chavez
b821857861
changelog: drop Removed heading and use Changed
2024-11-05 13:04:32 -05:00
Steve Chavez
afa63f891e
chore: update github issue templates
...
Adds a feature request template.
2024-10-29 10:31:38 -05:00
steve-chavez
bee862c2fa
docs: inline one-to-one relationship SQL
...
More direct than having to jump to the sample film database definition.
2024-10-21 14:45:53 -05:00