jimmy
7989108b0b
feat: expose row-level can_edit/can_delete on select *
...
Compute per-row editability and deletability from a table's row-level
security policies and return them as synthetic columns so clients can
hide edit/delete affordances for rows the user cannot change.
- Introspect pg_policies and relrowsecurity at schema-cache load and
combine the UPDATE/DELETE USING qualifiers per table (permissive OR,
restrictive AND).
- Store the combined qualifiers on Table and inject can_edit/can_delete
as computed select fields when expanding `select *`, only for
RLS-enabled tables with a matching policy (COALESCE'd to a boolean).
- Keep the computed columns out of the OpenAPI spec so they are not
rendered as regular fields.
- Add a cfExpression field to CoercibleField to carry raw SQL
expressions through the planner to SqlFragment.
2026-08-29 11:30:21 +02:00
jimmy
77ab8f83ac
feat: expose unique columns and many-to-many markers in OpenAPI
...
Add unique constraint and many-to-many relationship metadata to the
generated OpenAPI spec so clients can render them.
- Store unique constraints on Table as tableUniqueCols (mirroring
tablePKCols) instead of denormalizing them onto each Column.
- Compute unique constraints via a per-table tbl_unique_cols CTE in
tablesSqlQuery.
- Annotate unique columns and composite unique constraints in property
descriptions, and emit m2m markers in table descriptions.
2026-08-20 18:03:43 +02:00
jimmy
ce7ea53a57
instead of select * inspect schema to get selectable columns
2026-08-16 14:41:13 +02:00
jimmy
4a5d626112
restrict openapi spec based on sql grants
2026-08-15 21:41:45 +02:00
Taimoor Zaeem
a8feaadc01
test(io): move remaining tests in test_io.py to their modules
...
We had just 3 tests remaining in test_io.py. This commit moves them to
their modules. So we have:
* test_graceful_shutdown.py
* test_zero_downtime.py
* test_pg_internal.py
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
(cherry picked from commit 02d83d1c01 )
2026-08-13 13:16:57 +05:00
Taimoor Zaeem
e0b9023677
test(io): move config related behavior tests to test_config.py
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
(cherry picked from commit e89e0bc255 )
2026-08-13 13:16:57 +05:00
Taimoor Zaeem
8f93a0ed2e
test(io): move logs and observations tests to test_log.py
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
(cherry picked from commit 9e20e5df90 )
2026-08-13 13:16:57 +05:00
Taimoor Zaeem
a1b01335dc
test(io): move connection related tests to test_connection.py
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
(cherry picked from commit 2122dcef97 )
2026-08-13 13:16:57 +05:00
Taimoor Zaeem
2348cb3f84
test(io): move reloading related tests to test_reloading.py
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
(cherry picked from commit d84d00be8e )
2026-08-13 13:16:57 +05:00
steve-chavez
6de489c7ba
chore: bump version to 16.1
v16.1
2026-08-10 18:30:06 -05:00
Michał Kłeczek and Steve Chavez
bbf8431a23
fix: JWT validation uses wrong current time due to a bug in auto-update
...
Upgrade auto-update to 0.2.7 which contains a fix to a bug causing some threads not seeing updates to the cached values.
(cherry picked from commit a2a592a617 )
2026-08-10 18:26:27 -05:00
Taimoor Zaeem
729deafc56
docs: update PostgREST source file locations in the architecture page
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-08-10 17:26:11 +05:00
steve-chavez
19d70b9bc6
chore(changelog): missed entry for ghcr
2026-08-07 19:15:37 -05:00
steve-chavez
e004c5c5f8
chore(changelog): add integrations section
...
Also clarify some parts.
2026-08-07 16:19:46 -05:00
Taimoor Zaeem and Wolfgang Walther
ac464c3681
test: fix failing test of legacy target names warning
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
(cherry picked from commit a3f36d6184 )
v16.0
2026-08-07 20:09:40 +00:00
steve-chavez and Wolfgang Walther
aa48038303
chore(changelog): make it in postgres style
...
This is to make it easier for users to understand the changes,
much like PostgreSQL does for its changelog: https://www.postgresql.org/docs/19/release-19.html#RELEASE-19-SERVER
(see how they classify "Optimizer", "General Performance", etc).
We classify features, fixes and deprecation in subsections.
Breaking changes are put inside a "Migration to v16" guide.
(cherry picked from commit e3206262d2 )
2026-08-07 20:00:31 +00:00
renovate[bot] and Wolfgang Walther
4e190ceebe
chore(deps): update vmactions/freebsd-vm action to v1.5.3
2026-08-07 19:56:41 +00:00
Wolfgang Walther
05d1e0f83d
chore: bump version to 16.0
2026-08-07 09:33:45 +02:00
Wolfgang Walther
6fdc230637
nix: remove outdated code / comment in release script
2026-08-07 09:33:29 +02:00
Wolfgang Walther
a841dc9c39
chore: ignore stackoverflow in linkcheck
...
Seems like stackoverflow started blocking GHA runners as well.
2026-08-07 09:14:33 +02:00
steve-chavez
18371ec372
chore(changelog): clarified JSON Path feature
2026-08-06 18:36:16 -05:00
steve-chavez
6951e1301d
docs: keep working when scache reload fails
...
Docs for 54430c3a2c
2026-08-06 17:54:23 -05:00
steve-chavez
75891975f5
docs: fix wrong ref in admin
2026-08-06 17:24:56 -05:00
steve-chavez
142b54158e
docs: graceful shutdown docs
...
Considered the explanations and use cases on:
- https://github.com/yesodweb/wai/issues/853
- https://github.com/PostgREST/postgrest/pull/4580
2026-08-06 17:24:53 -05:00
steve-chavez
876dfad9d9
chore(changelog): move fixed entry to added
...
Graceful shutdown is really a feature
2026-08-06 17:19:45 -05:00
steve-chavez
2ad6d239a0
docs: add new http server page
2026-08-06 17:19:45 -05:00
Taimoor Zaeem
426e15bbb4
chore(cabal): update haskell language edition to GHC2021
...
This includes a good set of default language extensions that are
often used by us. It frees us of explicitly importing common extensions.
Ref: https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/control.html#extension-GHC2021
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-08-05 12:38:29 +05:00
steve-chavez
7e8212870d
docs: release cycle
2026-08-04 19:49:48 -05:00
renovate[bot] and Wolfgang Walther
6a9c99d54e
chore(deps): update haskell-actions/setup action to v2.12.0
2026-08-04 21:05:25 +00:00
steve-chavez
e44178445d
docs: timezone offsets
2026-08-04 13:41:40 -05:00
steve-chavez
59a644bb99
test: prefer timezone offsets
2026-08-04 13:41:40 -05:00
steve-chavez
932c4f6328
perf: no caching for prefer timezone
...
`Prefer: timezone` no longer requires the schema cache.
Previously this required caching `pg_timezone_names` which was slow in some systems.
Closes https://github.com/PostgREST/postgrest/issues/5100 and
https://github.com/PostgREST/postgrest/issues/4751 .
2026-08-04 13:41:40 -05:00
steve-chavez
a41396c425
Revert "add: config db-timezone-enabled for optional querying of timezones"
...
This reverts commit d6c338d588 .
2026-08-04 13:41:40 -05:00
steve-chavez
ca4a6d9e99
Revert "add: configs as json GUC for db-root-spec"
...
This reverts commit f34ca15e84 .
2026-08-04 00:50:18 -05:00
steve-chavez
f34ca15e84
add: configs as json GUC for db-root-spec
...
These are needed for a complete OpenAPI spec
2026-08-03 23:41:03 -05:00
Wolfgang Walther
f84c44dafa
nix: add postgrest-with-oriole-18
2026-08-02 14:51:50 +00:00
Wolfgang Walther
549ab36c30
docs: add NixOS integration section
...
Just a very basic example of how to use the NixOS module that Nixpkgs
provides.
2026-08-02 14:51:50 +00:00
Wolfgang Walther
42754cb6c9
chore(deps): update nixpkgs pin
...
Nixpkgs has removed support for x86_64-darwin, so removing that from
CI's flake check.
A x86_64-darwin binary is still built via Stack.
2026-08-02 14:51:50 +00:00
Wolfgang Walther
57e8d20811
nix: show stderr output for postgrest-style
...
Hiding this will also hide errors when they happen...
In my case, my nix-shell's TMPDIR was too long, so black was failing
silently because it couldn't create a unix socket for its forkserver.
2026-08-02 14:51:50 +00:00
Taimoor Zaeem and Wolfgang Walther
8ede8fb0dc
test(io): move settings related tests to test_settings.py
...
Towards #4946 .
Moves app and pg settings related tests from test_io.py to
test_settings.py.
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-08-02 11:53:32 +00:00
Joel Jacobson and Wolfgang Walther
131df9b578
perf: use pg_basetype on PG 17+ for schema cache
2026-08-02 11:47:26 +00:00
Taimoor Zaeem
6a7ad33524
fix: db-channel-enabled not reloadable on config reload
...
Fixes #4894 .
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-07-31 21:39:27 +05:00
Taimoor Zaeem
b174295bf2
refactor(chore): rename conf to oldConf in readInDbConfig function
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-07-31 21:39:27 +05:00
renovate[bot] and Wolfgang Walther
6304265cd9
chore(deps): update docker/login-action action to v4.6.0
2026-07-30 20:41:39 +00:00
Taimoor Zaeem
cb9b00d374
docs: update link of listener in architecture page
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-07-30 11:23:56 +05:00
Taimoor Zaeem
59081195f0
chore: add changelog entry for v14.16
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-07-28 23:31:31 +05:00
Taimoor Zaeem
022f0faa38
add: make config log-level reloadable
...
Closes #5113 .
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-07-28 11:33:33 +05:00
Taimoor Zaeem
f6d34fd4fc
refactor: move reloading related logic to Reload.hs
...
This commit moves, schema cache reload, config reload and listener
reload logic to `Reload.hs` module.
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-07-25 14:39:48 +05:00
Taimoor Zaeem
e32e2b07b5
refactor: move connection pool functions to Pool.hs
...
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-07-25 14:39:48 +05:00
Taimoor Zaeem
a108d66968
refactor: move AppState type and update functions to AppState/Types.hs
...
`AppState.hs` is imported by many modules. Some of those modules contain
important functions that need to be imported back to `AppState.hs`, causing
circular dependency problem.
Signed-off-by: Taimoor Zaeem <taimoorzaeem@gmail.com >
2026-07-25 14:39:48 +05:00