Skip to content

add pg_guard_ffi_boundary to direct_pg_extern_function_call_as_datum#2118

Merged
eeeebbbbrrrr merged 1 commit into
pgcentralfoundation:developfrom
usamoi:fix-fcinfo
Aug 1, 2025
Merged

add pg_guard_ffi_boundary to direct_pg_extern_function_call_as_datum#2118
eeeebbbbrrrr merged 1 commit into
pgcentralfoundation:developfrom
usamoi:fix-fcinfo

Conversation

@usamoi

@usamoi usamoi commented Aug 1, 2025

Copy link
Copy Markdown
Contributor

Theoretically, this results in undefined behavior when an error occurs, but in practice, it only leads to resource leaks.

This bug is caught through #[deny(ffi_unwind_calls)]. During this process, I found that the pgrx::hooks also lack proper pg_guard_ffi_boundary. However, since they are already deprecated, we should remove them instead of fixing them.

@eeeebbbbrrrr eeeebbbbrrrr merged commit 35bb42b into pgcentralfoundation:develop Aug 1, 2025
16 checks passed
eeeebbbbrrrr pushed a commit that referenced this pull request Aug 1, 2025
followup of #2118

`pgrx::hooks` is deprecated since 0.12.1 (Aug 22, 2024). We have now
discovered a new unsoundness in it recently. It's time to delete
`pgrx::hooks` now.
eeeebbbbrrrr added a commit that referenced this pull request Aug 1, 2025
Welcome to pgrx v0.16.0.

This release contains support for Postgres 18beta2 and has some breaking
changes in that support for pgrx' "hooks" implementation, which has been
deprecated for over a year, has finally been removed.

Additionally, due to unsoundness issues, direct support for using
`heapless` in shared memory has been removed. Users can still do this
themselves, which requires them to assert they're taking responsibility
of possible unsoundness issues.

As always, first install the latest `cargo-pgrx` with:

```shell
$ cargo install cargo-pgrx --version 0.16.0 --locked
```

Then you're free to run `cargo pgrx upgrade` in the root of all your
extension crates.

To pickup pg18beta2 support you'll also want to run `cargo pgrx init` so
that it can be downloaded and compiled.

# What's Changed

## Breaking Changes

* delete `pgrx::hooks` by @usamoi in
#2120
* improve shmem api by @usamoi in
#2107


## New Features

* update to Postgres v18beta2 by @usamoi in
#2111
* feat: `BackgroundWorker::connect_worker_to_spi_by_oid` by @if0ne in
#2116
* teach `#[pg_cast]` to support 3-argument CAST functions by
@eeeebbbbrrrr in #2119
* teach `#[pg_extern]` about a SUPPORT function by @eeeebbbbrrrr in
#2121

## Bug Fixes

* fix name_data_to_str by @usamoi in
#2108
* add pg_guard_ffi_boundary to direct_pg_extern_function_call_as_datum
by @usamoi in #2118

## `cargo-pgrx` Improvements

* add `--valgrind` to more cargo-pgrx subcommands by @usamoi in
#2109
* `cargo pgrx regress --resetdb` will run `setup.sql` by @ccleve in
#2113


## Code Cleanup

* filter out unrecognized attributes in PostgresGucEnum by @usamoi in
#2102
* Elide needless lifetime by @nyurik in
#2097

## Package/Build System Cleanup

* chore: include pgrx-version-updater into workspace by @nyurik in
#2101
* chore: consolidate package settings in workspace by @nyurik in
#2100
* chore: prepare for 2024 edition by @nyurik in
#2103

# Thanks!  

Thanks to all contributors -- y'alls work helps keep pgrx moving
forward.

**Full Changelog**:
v0.15.0...v0.16.0
daamien pushed a commit to daamien/pgrx that referenced this pull request Dec 15, 2025
…gcentralfoundation#2118)

Theoretically, this results in undefined behavior when an error occurs,
but in practice, it only leads to resource leaks.

This bug is caught through `#[deny(ffi_unwind_calls)]`. During this
process, I found that the `pgrx::hooks` also lack proper
`pg_guard_ffi_boundary`. However, since they are already deprecated, we
should remove them instead of fixing them.
daamien pushed a commit to daamien/pgrx that referenced this pull request Dec 15, 2025
followup of pgcentralfoundation#2118

`pgrx::hooks` is deprecated since 0.12.1 (Aug 22, 2024). We have now
discovered a new unsoundness in it recently. It's time to delete
`pgrx::hooks` now.
daamien pushed a commit to daamien/pgrx that referenced this pull request Dec 15, 2025
Welcome to pgrx v0.16.0.

This release contains support for Postgres 18beta2 and has some breaking
changes in that support for pgrx' "hooks" implementation, which has been
deprecated for over a year, has finally been removed.

Additionally, due to unsoundness issues, direct support for using
`heapless` in shared memory has been removed. Users can still do this
themselves, which requires them to assert they're taking responsibility
of possible unsoundness issues.

As always, first install the latest `cargo-pgrx` with:

```shell
$ cargo install cargo-pgrx --version 0.16.0 --locked
```

Then you're free to run `cargo pgrx upgrade` in the root of all your
extension crates.

To pickup pg18beta2 support you'll also want to run `cargo pgrx init` so
that it can be downloaded and compiled.

# What's Changed

## Breaking Changes

* delete `pgrx::hooks` by @usamoi in
pgcentralfoundation#2120
* improve shmem api by @usamoi in
pgcentralfoundation#2107


## New Features

* update to Postgres v18beta2 by @usamoi in
pgcentralfoundation#2111
* feat: `BackgroundWorker::connect_worker_to_spi_by_oid` by @if0ne in
pgcentralfoundation#2116
* teach `#[pg_cast]` to support 3-argument CAST functions by
@eeeebbbbrrrr in pgcentralfoundation#2119
* teach `#[pg_extern]` about a SUPPORT function by @eeeebbbbrrrr in
pgcentralfoundation#2121

## Bug Fixes

* fix name_data_to_str by @usamoi in
pgcentralfoundation#2108
* add pg_guard_ffi_boundary to direct_pg_extern_function_call_as_datum
by @usamoi in pgcentralfoundation#2118

## `cargo-pgrx` Improvements

* add `--valgrind` to more cargo-pgrx subcommands by @usamoi in
pgcentralfoundation#2109
* `cargo pgrx regress --resetdb` will run `setup.sql` by @ccleve in
pgcentralfoundation#2113


## Code Cleanup

* filter out unrecognized attributes in PostgresGucEnum by @usamoi in
pgcentralfoundation#2102
* Elide needless lifetime by @nyurik in
pgcentralfoundation#2097

## Package/Build System Cleanup

* chore: include pgrx-version-updater into workspace by @nyurik in
pgcentralfoundation#2101
* chore: consolidate package settings in workspace by @nyurik in
pgcentralfoundation#2100
* chore: prepare for 2024 edition by @nyurik in
pgcentralfoundation#2103

# Thanks!  

Thanks to all contributors -- y'alls work helps keep pgrx moving
forward.

**Full Changelog**:
pgcentralfoundation/pgrx@v0.15.0...v0.16.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants