mirror of
https://github.com/neondatabase/neon.git
synced 2026-01-07 21:42:56 +00:00
Another preparatory commit for pg15 support: * generate bindings for both pg14 and pg15; * update Makefile and CI scripts: now neon build depends on both PostgreSQL versions; * some code refactoring to decrease version-specific dependencies.
23 lines
1.1 KiB
Markdown
23 lines
1.1 KiB
Markdown
This module contains utilities for working with PostgreSQL file
|
|
formats. It's a collection of structs that are auto-generated from the
|
|
PostgreSQL header files using bindgen, and Rust functions to read and
|
|
manipulate them.
|
|
|
|
There are also a bunch of constants in `pg_constants.rs` that are copied
|
|
from various PostgreSQL headers, rather than auto-generated. They mostly
|
|
should be auto-generated too, but that's a TODO.
|
|
|
|
The PostgreSQL on-disk file format is not portable across different
|
|
CPU architectures and operating systems. It is also subject to change
|
|
in each major PostgreSQL version. Currently, this module supports
|
|
PostgreSQL v14 and v15: bindings and code that depends on them are version-specific.
|
|
This code is organized in modules: `postgres_ffi::v14` and `postgres_ffi::v15`
|
|
Version independend code is explicitly exported into shared `postgres_ffi`.
|
|
|
|
|
|
TODO: Currently, there is also some code that deals with WAL records
|
|
in pageserver/src/waldecoder.rs. That should be moved into this
|
|
module. The rest of the codebase should not have intimate knowledge of
|
|
PostgreSQL file formats or WAL layout, that knowledge should be
|
|
encapsulated in this module.
|