Implement autoprewarming in Neon uig pg_prewarm extension

This commit is contained in:
Konstantin Knizhnik
2022-11-02 10:33:12 +02:00
parent 144dd97025
commit 441dc1be2f
10 changed files with 114 additions and 10 deletions

View File

@@ -230,6 +230,7 @@ pub enum PagestreamFeMessage {
Nblocks(PagestreamNblocksRequest),
GetPage(PagestreamGetPageRequest),
DbSize(PagestreamDbSizeRequest),
Fcntl(PagestreamFcntlRequest),
}
// Wrapped in libpq CopyData
@@ -270,6 +271,12 @@ pub struct PagestreamDbSizeRequest {
pub dbnode: u32,
}
#[derive(Debug)]
pub struct PagestreamFcntlRequest {
pub cmd: u32,
pub data: Bytes,
}
#[derive(Debug)]
pub struct PagestreamExistsResponse {
pub exists: bool,
@@ -341,6 +348,14 @@ impl PagestreamFeMessage {
lsn: Lsn::from(body.get_u64()),
dbnode: body.get_u32(),
})),
4 => {
let cmd = body.get_u32();
let size = body.get_u32() as usize;
Ok(PagestreamFeMessage::Fcntl(PagestreamFcntlRequest {
cmd,
data: body.copy_to_bytes(size),
}))
}
_ => bail!("unknown smgr message tag: {},'{:?}'", msg_tag, body),
}
}