From eba419fda360bdc4a2025474b2afcd92d0ff369b Mon Sep 17 00:00:00 2001 From: Anastasia Lubennikova Date: Wed, 21 Sep 2022 18:15:34 +0300 Subject: [PATCH] Clean up the pg_version choice code --- libs/postgres_ffi/src/lib.rs | 13 ++++++------- pageserver/src/walingest.rs | 2 +- pageserver/src/walrecord.rs | 4 ++-- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/libs/postgres_ffi/src/lib.rs b/libs/postgres_ffi/src/lib.rs index 1a6620a180..95ecc7b061 100644 --- a/libs/postgres_ffi/src/lib.rs +++ b/libs/postgres_ffi/src/lib.rs @@ -79,14 +79,13 @@ pub use v14::xlog_utils::XLogFileName; pub use v14::bindings::DBState_DB_SHUTDOWNED; -pub fn bkpimage_is_compressed(bimg_info: u8, version: u32) -> bool { - if version == 14 { - bimg_info & v14::bindings::BKPIMAGE_IS_COMPRESSED != 0 - } else { - assert_eq!(version, 15); - bimg_info & v15::bindings::BKPIMAGE_COMPRESS_PGLZ != 0 +pub fn bkpimage_is_compressed(bimg_info: u8, version: u32) -> anyhow::Result { + match version { + 14 => Ok(bimg_info & v14::bindings::BKPIMAGE_IS_COMPRESSED != 0), + 15 => Ok(bimg_info & v15::bindings::BKPIMAGE_COMPRESS_PGLZ != 0 || bimg_info & v15::bindings::BKPIMAGE_COMPRESS_LZ4 != 0 - || bimg_info & v15::bindings::BKPIMAGE_COMPRESS_ZSTD != 0 + || bimg_info & v15::bindings::BKPIMAGE_COMPRESS_ZSTD != 0), + _ => anyhow::bail!("Unknown version {}", version), } } diff --git a/pageserver/src/walingest.rs b/pageserver/src/walingest.rs index 1d5cab38b9..d3d2c6d9b2 100644 --- a/pageserver/src/walingest.rs +++ b/pageserver/src/walingest.rs @@ -324,7 +324,7 @@ impl<'a> WalIngest<'a> { && (decoded.xl_info == pg_constants::XLOG_FPI || decoded.xl_info == pg_constants::XLOG_FPI_FOR_HINT) // compression of WAL is not yet supported: fall back to storing the original WAL record - && !postgres_ffi::bkpimage_is_compressed(blk.bimg_info, self.timeline.pg_version) + && !postgres_ffi::bkpimage_is_compressed(blk.bimg_info, self.timeline.pg_version)? { // Extract page image from FPI record let img_len = blk.bimg_len as usize; diff --git a/pageserver/src/walrecord.rs b/pageserver/src/walrecord.rs index 258e1a445f..38fb9a4247 100644 --- a/pageserver/src/walrecord.rs +++ b/pageserver/src/walrecord.rs @@ -527,7 +527,7 @@ pub fn decode_wal_record( record: Bytes, decoded: &mut DecodedWALRecord, pg_version: u32, -) -> Result<(), DeserializeError> { +) -> Result<()> { let mut rnode_spcnode: u32 = 0; let mut rnode_dbnode: u32 = 0; let mut rnode_relnode: u32 = 0; @@ -628,7 +628,7 @@ pub fn decode_wal_record( }; let blk_img_is_compressed = - postgres_ffi::bkpimage_is_compressed(blk.bimg_info, pg_version); + postgres_ffi::bkpimage_is_compressed(blk.bimg_info, pg_version)?; if blk_img_is_compressed { debug!("compressed block image , pg_version = {}", pg_version);