pub struct LogCheckpoint {
pub number: u64,
pub lsn: u64,
pub offset: u32,
pub buf_size: u32,
pub archived_lsn: u64,
}Expand description
Checkpoint record (blocks 1 and 3 of the redo log file).
In MySQL 8.0.30+ (format version 6, including MySQL 9.x), the checkpoint
block only contains the checkpoint LSN at offset 8. The number, offset,
buf_size, and archived_lsn fields are not written and will be zero.
Fields§
§number: u64Checkpoint sequence number (pre-8.0.30 only; zero in 8.0.30+).
lsn: u64LSN at the time of this checkpoint.
offset: u32Byte offset of the checkpoint within the log file (pre-8.0.30 only).
buf_size: u32Log buffer size at checkpoint time (pre-8.0.30 only).
archived_lsn: u64LSN up to which log has been archived (pre-8.0.30 only).
Implementations§
Source§impl LogCheckpoint
impl LogCheckpoint
Sourcepub fn parse(block: &[u8]) -> Option<Self>
pub fn parse(block: &[u8]) -> Option<Self>
Parse a checkpoint from a 512-byte block.
Reads all fields for backward compatibility. In MySQL 8.0.30+ (format
version 6), only the lsn field at offset 8 is meaningful; all other
fields will be zero.
§Examples
use idb::innodb::log::{LogCheckpoint, LOG_BLOCK_SIZE,
LOG_CHECKPOINT_NO, LOG_CHECKPOINT_LSN, LOG_CHECKPOINT_OFFSET,
LOG_CHECKPOINT_BUF_SIZE, LOG_CHECKPOINT_ARCHIVED_LSN};
use byteorder::{BigEndian, ByteOrder};
let mut block = vec![0u8; LOG_BLOCK_SIZE];
BigEndian::write_u64(&mut block[LOG_CHECKPOINT_NO..], 42);
BigEndian::write_u64(&mut block[LOG_CHECKPOINT_LSN..], 0xDEADBEEF);
BigEndian::write_u32(&mut block[LOG_CHECKPOINT_OFFSET..], 2048);
BigEndian::write_u32(&mut block[LOG_CHECKPOINT_BUF_SIZE..], 65536);
BigEndian::write_u64(&mut block[LOG_CHECKPOINT_ARCHIVED_LSN..], 0xCAFEBABE);
let cp = LogCheckpoint::parse(&block).unwrap();
assert_eq!(cp.number, 42);
assert_eq!(cp.lsn, 0xDEADBEEF);
assert_eq!(cp.offset, 2048);
assert_eq!(cp.buf_size, 65536);
assert_eq!(cp.archived_lsn, 0xCAFEBABE);Trait Implementations§
Source§impl Clone for LogCheckpoint
impl Clone for LogCheckpoint
Source§fn clone(&self) -> LogCheckpoint
fn clone(&self) -> LogCheckpoint
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for LogCheckpoint
impl Debug for LogCheckpoint
Auto Trait Implementations§
impl Freeze for LogCheckpoint
impl RefUnwindSafe for LogCheckpoint
impl Send for LogCheckpoint
impl Sync for LogCheckpoint
impl Unpin for LogCheckpoint
impl UnsafeUnpin for LogCheckpoint
impl UnwindSafe for LogCheckpoint
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more