From c2a4f432ac1606575c047a4b7bc6b5a6ded8b244 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Wed, 16 Aug 2023 15:41:49 +0300 Subject: [PATCH] Fix decoiding of HeapDelete/HeapLock commands --- pageserver/src/walrecord.rs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/pageserver/src/walrecord.rs b/pageserver/src/walrecord.rs index e5211d732a..397be2d965 100644 --- a/pageserver/src/walrecord.rs +++ b/pageserver/src/walrecord.rs @@ -270,20 +270,17 @@ pub struct XlHeapDelete { impl XlHeapDelete { pub fn decode(buf: &mut Bytes) -> XlHeapDelete { + let neon_format = buf.remaining() == pg_constants::SIZE_OF_HEAP_DELETE; let xmax = buf.get_u32_le(); let offnum = buf.get_u16_le(); let _padding; let t_cid; - let neon_format; - if buf.remaining() == pg_constants::SIZE_OF_HEAP_DELETE { - // Neon format + if neon_format { _padding = buf.get_u16_le(); t_cid = buf.get_u32_le(); - neon_format = true; } else { _padding = 0; t_cid = 0; - neon_format = false; } let infobits_set = buf.get_u8(); let flags = buf.get_u8(); @@ -312,20 +309,17 @@ pub struct XlHeapLock { impl XlHeapLock { pub fn decode(buf: &mut Bytes) -> XlHeapLock { + let neon_format = buf.remaining() == pg_constants::SIZE_OF_HEAP_LOCK; let locking_xid = buf.get_u32_le(); let offnum = buf.get_u16_le(); let _padding; let t_cid; - let neon_format; - if buf.remaining() == pg_constants::SIZE_OF_HEAP_LOCK { - // Neon format + if neon_format { _padding = buf.get_u16_le(); t_cid = buf.get_u32_le(); - neon_format = true; } else { _padding = 0; t_cid = 0; - neon_format = false; } let infobits_set = buf.get_u8(); let flags = buf.get_u8();