Rust based postgres extension
The main things provided by this crate are some macros that help with writing Postgres extensions in Rust.
The objective (not all these are yet implemented):
- Automatic type conversions, see
PgDatumandTryFromPgDatumtoInto<PgDatum> pg_magicmacro for declaring libraries as Postgres extensionspg_externattribute for wrapping Rust functions in Postgres C style definitions- panic handlers for conversion into Postgres errors
- allocator that uses Postgres
pallocallocator andpfree - tbd integrate postgres error logs with
log - tbd support all Datum types
- tbd support table like returns and manipulation
- tbd generators for the psql scripts to load functions
Building
First install Postgres. Once installed, this environment variable is required:
PG_INCLUDE_PATH=[/path/to/postgres]/include/server # e.g. /usr/local/pgsql/include/server
This environment variable is also required for the dynamic libraries to compile:
RUSTFLAGS="-C link-arg=-undefineddynamic_lookup"
This informs the linker that some of the symbols for postgres won't be available until runtime on the dynamic library load.
Examples
Features
To use the postgres allocator, the feature pg_allocator must be defined and enabled in the implementing crate.