mirror of
https://github.com/neondatabase/neon.git
synced 2026-06-02 21:10:38 +00:00
This makes it possible for the compiler to validate that a match block matched all PostgreSQL versions we support. ## Problem We did not have a complete picture about which places we had to test against PG versions, and what format these versions were: The full PG version ID format (Major/minor/bugfix `MMmmbb`) as transfered in protocol messages, or only the Major release version (`MM`). This meant type confusion was rampant. With this change, it becomes easier to develop new version-dependent features, by making type and niche confusion impossible. ## Summary of changes Every use of `pg_version` is now typed as either `PgVersionId` (u32, valued in decimal `MMmmbb`) or PgMajorVersion (an enum, with a value for every major version we support, serialized and stored like a u32 with the value of that major version) --------- Co-authored-by: Arpad Müller <arpad-m@users.noreply.github.com>
42 lines
1.1 KiB
Rust
42 lines
1.1 KiB
Rust
use crate::PgMajorVersion;
|
|
|
|
pub const MY_PGVERSION: PgMajorVersion = PgMajorVersion::PG14;
|
|
|
|
pub const XLOG_DBASE_CREATE: u8 = 0x00;
|
|
pub const XLOG_DBASE_DROP: u8 = 0x10;
|
|
|
|
pub const BKPIMAGE_IS_COMPRESSED: u8 = 0x02; /* page image is compressed */
|
|
pub const BKPIMAGE_APPLY: u8 = 0x04; /* page image should be restored during replay */
|
|
pub const SIZEOF_RELMAPFILE: usize = 512; /* sizeof(RelMapFile) in relmapper.c */
|
|
|
|
// List of subdirectories inside pgdata.
|
|
// Copied from src/bin/initdb/initdb.c
|
|
pub const PGDATA_SUBDIRS: [&str; 22] = [
|
|
"global",
|
|
"pg_wal/archive_status",
|
|
"pg_commit_ts",
|
|
"pg_dynshmem",
|
|
"pg_notify",
|
|
"pg_serial",
|
|
"pg_snapshots",
|
|
"pg_subtrans",
|
|
"pg_twophase",
|
|
"pg_multixact",
|
|
"pg_multixact/members",
|
|
"pg_multixact/offsets",
|
|
"base",
|
|
"base/1",
|
|
"pg_replslot",
|
|
"pg_tblspc",
|
|
"pg_stat",
|
|
"pg_stat_tmp",
|
|
"pg_xact",
|
|
"pg_logical",
|
|
"pg_logical/snapshots",
|
|
"pg_logical/mappings",
|
|
];
|
|
|
|
pub fn bkpimg_is_compressed(bimg_info: u8) -> bool {
|
|
(bimg_info & BKPIMAGE_IS_COMPRESSED) != 0
|
|
}
|