Skip to content

Releases: pgcentralfoundation/pgrx

v0.16.0

01 Aug 18:59
a7a95bf
Compare
Choose a tag to compare

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:

$ 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

New Features

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

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

v0.15.0

28 Jun 17:38
aa1c67c
Compare
Choose a tag to compare

Welcome to pgrx v0.15.0. This begins a new series for pgrx that includes support for Postgres 18. As of this release, that means Postgres 18beta1.

This release does contain a few breaking API changes but they're largely mechanical. Don't worry, the compiler will let you know!

As always, please install our CI tool with cargo install cargo-pgrx --version 0.15.0 --locked and then run cargo pgrx upgrade in all of your extension crates.

If you want to start working with Postgres 18beta1, you'll also need to re-init your pgrx environment with cargo pgrx init. That will automatically detect all the latest Postgres versions, including 18beta1.

At the top here, I'd like to thank @silver-ymz for the 18beta1 support. It was a pleasant surprise to see that work come from the community -- it's no easy task to add a new Postgres version to pgrx!

That said, as Postgres 18 is currently beta, you should consider pgrx' support for it as beta too. Please report any problems with 18beta1 (or discrepancies with other versions) as GitHub issues.

Also, this release requires rust v1.88.0 or greater. if-let chains are now a thing and we're not afraid to use them.

What's Changed

Postgres 18beta1 Support

More Headers

cargo-pgrx improvements

Breaking Changes

New Stuff

General Code Cleanup

Administrative

New Contributors

Much thanks to our new contributors! Your work is sincerely appreciated!

Full Changelog: v0.14.3...v0.15.0

v0.14.3: Update version to 0.14.3 (#2063)

09 May 14:17
231acce
Compare
Choose a tag to compare

Welcome to pgrx v0.14.3.

This point release fixes some issues discovered with the new cargo pgrx regress command. Additionally, bindings have been regenerated against the latest Postgres point releases that dropped on May 8th, 2025, though no new headers have been included.

As always, please update with cargo install cargo-pgrx --version 0.14.3 --locked and update your extension Cargo.toml files with cargo pgrx upgrade.

What's Changed

  • Fixes to cargo pgrx regress by @eeeebbbbrrrr in #2062
    1. Pressing <ENTER> to "Accept[Y, n]?" a test no longer panics
    2. While we still git add <new expected/test_name.out> files, we no longer do it to the expected files that we promote in the face of a test failure
    3. Fix a bug where we'd think there's a test_name.out file to copy to expected/ when that's not actually true
    4. The setup.sql test is now treated as a normal test, and the only special handling around is that we'll only run it if we detect we need to
    5. Cleanup test run output to be consistent between Postgres versions
    6. Set PGRX_REGRESS_TESTING=1 so an extension running under the regression test suite can detect it

Full Changelog: v0.14.2...v0.14.3

v0.14.2

07 May 21:33
9678aa6
Compare
Choose a tag to compare

Welcome to pgrx v0.14.2. This is a minor release that fixes a few bugs and also adds a big new feature: support for pg_regress-based regression tests.

As always, please update with cargo install cargo-pgrx --version 0.14.2 --locked and update your extension Cargo.toml files with cargo pgrx upgrade.

For the pg_regress regression test support, there's a new cargo pgrx regress subcommand, and it's documented in cargo-pgrx's readme.

What's Changed

  • Remove the $libdir/ prefix from module_pathname by @theory in #2051

This will help with the upcoming Postgres v18 and generally makes pgrx-based extensions less restrictive with regard to how they're installed.

(editor's node: I full expect users to uncover UX nits with this and am more than happy to entertain any ideas that help to improve workflows, either locally during development or in CI. Feel free to open issues about it.)

More Bindings

Bug Fixes

Code Cleanup

New Contributors

Thanks

Shoutout to @philippemnoel of @paradedb for paying me to implement the pg_regress support. ❀️

Full Changelog: v0.14.1...v0.14.2

v0.14.1

13 Apr 17:45
b1868d8
Compare
Choose a tag to compare

This is pgrx v0.14.1. It is a small bugfix release that fixes a problem building extensions that have their own build.rs.

Please update with cargo install cargo-pgrx --version 0.14.1 --locked and update your extension Cargo.toml files with cargo pgrx upgrade.

What's Changed

  • fix cargo pgrx install error if there is a build script by @usamoi in #2041

Full Changelog: v0.14.0...v0.14.1

v0.14.0

12 Apr 16:49
c70ef92
Compare
Choose a tag to compare

Welcome to pgrx v0.14.0!

This is our very first release with Windows support. How cool is that? 😎 Much thanks go to all the contributors that have been working on Windows support for so long. There's basic instructions for getting started in the project README.

Beyond that, this release officially removes support for Postgres v12. If you still need to support it, you'll need to lock your dependencies to pgrx v0.13.1.

Additionally, there's a number of bugfixes, more included Postgres headers, and some breaking code changes that'll need attention.

As always, make sure to first install cargo-pgrx with cargo install cargo-pgrx --version 0.14.0 --locked and to update your extension Cargo.toml files using our cargo pgrx upgrade tool.

What's Changed

Windows Support

One important note for Windows Support:

If an extension is compiled for Windows, the pgrx cshim feature must be enabled. If an extension does not enable the cshim feature in its Cargo.toml, cargo build --features pgrx/cshim can be used at build time.

  • fix cargo-pgrx and pgrx-tests on Windows by @usamoi in #1934
  • tell C compiler to put code and data in separate sections by @usamoi in #2006
  • force using extern "C-unwind" for functions marked with #[pg_guard] by @usamoi in #2014

This change (using extern "C-unwind") is important to call out separately as it'll require any functions with #[pg_guard] to be changed to use "C-unwind". This came about as a requirement for Windows, but is necessary for all supported platforms.

Breaking Changes

  • pgrx::pg_guard: functions marked with #[pg_guard] must use the C-unwind ABI, and pg_guard macro generates an error for functions that do not use the C-unwind ABI.
  • pgrx::lwlock: the parameter name of PgLwLock::new is required; PgLwLock::from_named is removed; the type of the parameter value of PgLwLock::attach is changed.
  • pgrx::atomic: the parameter name of PgAtomic::new is required.
  • pgrx::pg_sys: ABI of all generated binding function types has been changed from C to C-unwind.
  • pgrx-tests: on Linux, before using cargo-pgrx with --runas, you must relax kernel security restrictions by running sudo sysctl fs.protected_fifos=0 due to internal implementation details.

Bug Fixes

API Changes (likely breaking)

This PR actually adds a hand-rolled representation for Postgres' pg_sys::TransactionId type. As such, usages of pg_sys::TransactionId may need adjustments. If we missed any UX for the type, please file issues (or PRs!) and we'll address them immediately. A benefit of this is that it's now possible to use pg_sys::TransactionId as arguments or the return type of #[pg_extern] functions.

New Features

More Headers

Code Cleanups

A special thanks to @nyurik for this one. It was a lot of work and should make clippy users a lot happier!

Administrative/CI

Thank You!

I just want to send a sincere thank you to all the contributors for this release. It represents a lot of work and I'm sure they hope y'all enjoy it and can make good use of it!

New Contributors

Full Changelog: v0.13.1...v0.14.0

v0.13.1

01 Mar 17:25
98e70fc
Compare
Choose a tag to compare

Welcome to pgrx v0.13.1. This is a minor bugfix and non-breaking feature release.

As always, install the new cargo-pgrx CLI tool with cargo install cargo-pgrx --version 0.13.1 --locked and then run cargo pgrx upgrade in your extension creates.

What's Changed

Bug Fixes

The underlying bug here would only expose itself with OID values, which are generated by Postgres, larger than an i32::MAX. As such, it's taken a few years for someone to run into this in the wild!

New Postgres Headers

Improved SQL Type Handling

  • Implement SqlTranslatable for TableAmRoutine by @dpxcc in #1989
  • feat: auto-generate type alignment (#[pgrx(alignment = "on")]) by @JamesGuthrie in #1942

Code Cleanup/Future Proofing

New cargo-pgrx run Option

Running cargo pgrx run --install-only will do exactly that -- only install the extension in the pgrx-managed Postgres instance. Note that it will also stop the Postgres instance if it's running, but it will not restart it.

New Contributors

Thanks to our new contributors! It's nice to see people scratching their own itches!!

Full Changelog: v0.13.0...v0.13.1

v0.13.0

24 Feb 22:25
5a3b3b4
Compare
Choose a tag to compare

Welcome to pgrx v0.13.0. The first update in a little bit, which makes pgrx current with upstream dependencies, rust 1.85.0 (but not 2024 Edition, yet), and a slew of fixes and cleanups and community contributions.

Upgrading

You'll need to cargo install cargo-pgrx --version 0.13.0 --locked to get the latest cargo-pgrx tool, and then you can run cargo pgrx upgrade in your extension crates to update their dependencies.

Breaking Changes

Generally, the only breaking changes in v0.13.0 are related to the user-facing SPI APIs. In general, SPI functions that previously took a Vec of Arguments now take a &[DatumWithOid], with proper lifetime bounds. This is a fairly straightforward boilerplate to update.

@YohDeadfall has done a lot of work on improving SPI's safety and it's greatly appreciated!

What's Changed

cargo-pgrx

Build System

  • use allowlist_file for bindgen by @usamoi in #1922
  • add pg_config --libdir to linker search path by @usamoi in #1932
  • lock patch version of pgrx-bindgen by @usamoi in #1939
  • Introduce a blocklist of "yanked" Postgres versions by @eeeebbbbrrrr in #1950
  • Make sure bindgen gets the cppflags even if we aren't using macOS by @thomcc in #1336

SPI

General pgrx-pg-sys Interfaces

Bug Fixes

  • Check wakeup_flags from wait_latch function to exit on WL_POSTMASTER_DEATH by @var77 in #1938

Overall Code Cleanup

Thanks!

Thanks to the community, past, present, and future. Especially to our new contributors...

New Contributors

Full Changelog: v0.12.7...v0.13.0

v0.12.9

22 Nov 16:29
a218889
Compare
Choose a tag to compare

This is pgrx v0.12.9. This version will refuse to build against Postgres versions 17.1, 16.5, 15.9, 14.14, 13.17, and 12.21. These Postgres versions introduced an ABI incompatibility that we'd rather just not ever have to deal with.

As always, to upgrade please run cargo install cargo-pgrx --version v0.12.9 --locked.

You may need to run another cargo pgrx init to pickup the new latest versions of each major release.

What's Changed

Full Changelog: v0.12.8...v0.12.9

v0.12.8

02 Nov 17:34
dd4155c
Compare
Choose a tag to compare

This is pgrx v0.12.8. It fixes a potential deadlock during the cargo-pgrx "install" process if any of the extension schema files include the @GIT_HASH@ variable. How bizarre!

As always, to upgrade please run cargo install cargo-pgrx --version v0.12.8 --locked.

What's Changed

Full Changelog

v0.12.7...v0.12.8