|
|
|
|
@@ -32,6 +32,10 @@ pub struct IndexPart {
|
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
|
pub deleted_at: Option<NaiveDateTime>,
|
|
|
|
|
|
|
|
|
|
#[serde(default)]
|
|
|
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
|
|
|
|
pub archived_at: Option<NaiveDateTime>,
|
|
|
|
|
|
|
|
|
|
/// Per layer file name metadata, which can be present for a present or missing layer file.
|
|
|
|
|
///
|
|
|
|
|
/// Older versions of `IndexPart` will not have this property or have only a part of metadata
|
|
|
|
|
@@ -80,10 +84,11 @@ impl IndexPart {
|
|
|
|
|
/// - 5: lineage was added
|
|
|
|
|
/// - 6: last_aux_file_policy is added.
|
|
|
|
|
/// - 7: metadata_bytes is no longer written, but still read
|
|
|
|
|
const LATEST_VERSION: usize = 7;
|
|
|
|
|
/// - 8: added `archived_at`
|
|
|
|
|
const LATEST_VERSION: usize = 8;
|
|
|
|
|
|
|
|
|
|
// Versions we may see when reading from a bucket.
|
|
|
|
|
pub const KNOWN_VERSIONS: &'static [usize] = &[1, 2, 3, 4, 5, 6, 7];
|
|
|
|
|
pub const KNOWN_VERSIONS: &'static [usize] = &[1, 2, 3, 4, 5, 6, 7, 8];
|
|
|
|
|
|
|
|
|
|
pub const FILE_NAME: &'static str = "index_part.json";
|
|
|
|
|
|
|
|
|
|
@@ -94,6 +99,7 @@ impl IndexPart {
|
|
|
|
|
disk_consistent_lsn: metadata.disk_consistent_lsn(),
|
|
|
|
|
metadata,
|
|
|
|
|
deleted_at: None,
|
|
|
|
|
archived_at: None,
|
|
|
|
|
lineage: Default::default(),
|
|
|
|
|
last_aux_file_policy: None,
|
|
|
|
|
}
|
|
|
|
|
@@ -284,6 +290,7 @@ mod tests {
|
|
|
|
|
disk_consistent_lsn: "0/16960E8".parse::<Lsn>().unwrap(),
|
|
|
|
|
metadata: TimelineMetadata::from_bytes(&[113,11,159,210,0,54,0,4,0,0,0,0,1,105,96,232,1,0,0,0,0,1,105,96,112,0,0,0,0,0,0,0,0,0,0,0,0,0,1,105,96,112,0,0,0,0,1,105,96,112,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]).unwrap(),
|
|
|
|
|
deleted_at: None,
|
|
|
|
|
archived_at: None,
|
|
|
|
|
lineage: Lineage::default(),
|
|
|
|
|
last_aux_file_policy: None,
|
|
|
|
|
};
|
|
|
|
|
@@ -326,6 +333,7 @@ mod tests {
|
|
|
|
|
disk_consistent_lsn: "0/16960E8".parse::<Lsn>().unwrap(),
|
|
|
|
|
metadata: TimelineMetadata::from_bytes(&[113,11,159,210,0,54,0,4,0,0,0,0,1,105,96,232,1,0,0,0,0,1,105,96,112,0,0,0,0,0,0,0,0,0,0,0,0,0,1,105,96,112,0,0,0,0,1,105,96,112,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]).unwrap(),
|
|
|
|
|
deleted_at: None,
|
|
|
|
|
archived_at: None,
|
|
|
|
|
lineage: Lineage::default(),
|
|
|
|
|
last_aux_file_policy: None,
|
|
|
|
|
};
|
|
|
|
|
@@ -369,6 +377,7 @@ mod tests {
|
|
|
|
|
disk_consistent_lsn: "0/16960E8".parse::<Lsn>().unwrap(),
|
|
|
|
|
metadata: TimelineMetadata::from_bytes(&[113,11,159,210,0,54,0,4,0,0,0,0,1,105,96,232,1,0,0,0,0,1,105,96,112,0,0,0,0,0,0,0,0,0,0,0,0,0,1,105,96,112,0,0,0,0,1,105,96,112,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]).unwrap(),
|
|
|
|
|
deleted_at: Some(parse_naive_datetime("2023-07-31T09:00:00.123000000")),
|
|
|
|
|
archived_at: None,
|
|
|
|
|
lineage: Lineage::default(),
|
|
|
|
|
last_aux_file_policy: None,
|
|
|
|
|
};
|
|
|
|
|
@@ -415,6 +424,7 @@ mod tests {
|
|
|
|
|
])
|
|
|
|
|
.unwrap(),
|
|
|
|
|
deleted_at: None,
|
|
|
|
|
archived_at: None,
|
|
|
|
|
lineage: Lineage::default(),
|
|
|
|
|
last_aux_file_policy: None,
|
|
|
|
|
};
|
|
|
|
|
@@ -456,6 +466,7 @@ mod tests {
|
|
|
|
|
disk_consistent_lsn: "0/16960E8".parse::<Lsn>().unwrap(),
|
|
|
|
|
metadata: TimelineMetadata::from_bytes(&[113,11,159,210,0,54,0,4,0,0,0,0,1,105,96,232,1,0,0,0,0,1,105,96,112,0,0,0,0,0,0,0,0,0,0,0,0,0,1,105,96,112,0,0,0,0,1,105,96,112,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]).unwrap(),
|
|
|
|
|
deleted_at: Some(parse_naive_datetime("2023-07-31T09:00:00.123000000")),
|
|
|
|
|
archived_at: None,
|
|
|
|
|
lineage: Lineage::default(),
|
|
|
|
|
last_aux_file_policy: None,
|
|
|
|
|
};
|
|
|
|
|
@@ -496,6 +507,7 @@ mod tests {
|
|
|
|
|
disk_consistent_lsn: Lsn::from_str("0/15A7618").unwrap(),
|
|
|
|
|
metadata: TimelineMetadata::from_bytes(&[226,88,25,241,0,46,0,4,0,0,0,0,1,90,118,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,78,244,32,0,0,0,0,1,78,244,32,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]).unwrap(),
|
|
|
|
|
deleted_at: None,
|
|
|
|
|
archived_at: None,
|
|
|
|
|
lineage: Lineage {
|
|
|
|
|
reparenting_history_truncated: false,
|
|
|
|
|
reparenting_history: vec![TimelineId::from_str("e1bfd8c633d713d279e6fcd2bcc15b6d").unwrap()],
|
|
|
|
|
@@ -545,6 +557,7 @@ mod tests {
|
|
|
|
|
disk_consistent_lsn: "0/16960E8".parse::<Lsn>().unwrap(),
|
|
|
|
|
metadata: TimelineMetadata::from_bytes(&[113,11,159,210,0,54,0,4,0,0,0,0,1,105,96,232,1,0,0,0,0,1,105,96,112,0,0,0,0,0,0,0,0,0,0,0,0,0,1,105,96,112,0,0,0,0,1,105,96,112,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]).unwrap(),
|
|
|
|
|
deleted_at: Some(parse_naive_datetime("2023-07-31T09:00:00.123000000")),
|
|
|
|
|
archived_at: None,
|
|
|
|
|
lineage: Lineage {
|
|
|
|
|
reparenting_history_truncated: false,
|
|
|
|
|
reparenting_history: vec![TimelineId::from_str("e1bfd8c633d713d279e6fcd2bcc15b6d").unwrap()],
|
|
|
|
|
@@ -603,6 +616,63 @@ mod tests {
|
|
|
|
|
14,
|
|
|
|
|
).with_recalculated_checksum().unwrap(),
|
|
|
|
|
deleted_at: Some(parse_naive_datetime("2023-07-31T09:00:00.123000000")),
|
|
|
|
|
archived_at: None,
|
|
|
|
|
lineage: Default::default(),
|
|
|
|
|
last_aux_file_policy: Default::default(),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
let part = IndexPart::from_s3_bytes(example.as_bytes()).unwrap();
|
|
|
|
|
assert_eq!(part, expected);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn v8_indexpart_is_parsed() {
|
|
|
|
|
let example = r#"{
|
|
|
|
|
"version": 8,
|
|
|
|
|
"layer_metadata":{
|
|
|
|
|
"000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__0000000001696070-00000000016960E9": { "file_size": 25600000 },
|
|
|
|
|
"000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__00000000016B59D8-00000000016B5A51": { "file_size": 9007199254741001 }
|
|
|
|
|
},
|
|
|
|
|
"disk_consistent_lsn":"0/16960E8",
|
|
|
|
|
"metadata": {
|
|
|
|
|
"disk_consistent_lsn": "0/16960E8",
|
|
|
|
|
"prev_record_lsn": "0/1696070",
|
|
|
|
|
"ancestor_timeline": "e45a7f37d3ee2ff17dc14bf4f4e3f52e",
|
|
|
|
|
"ancestor_lsn": "0/0",
|
|
|
|
|
"latest_gc_cutoff_lsn": "0/1696070",
|
|
|
|
|
"initdb_lsn": "0/1696070",
|
|
|
|
|
"pg_version": 14
|
|
|
|
|
},
|
|
|
|
|
"deleted_at": "2023-07-31T09:00:00.123",
|
|
|
|
|
"archived_at": "2023-04-29T09:00:00.123"
|
|
|
|
|
}"#;
|
|
|
|
|
|
|
|
|
|
let expected = IndexPart {
|
|
|
|
|
version: 8,
|
|
|
|
|
layer_metadata: HashMap::from([
|
|
|
|
|
("000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__0000000001696070-00000000016960E9".parse().unwrap(), LayerFileMetadata {
|
|
|
|
|
file_size: 25600000,
|
|
|
|
|
generation: Generation::none(),
|
|
|
|
|
shard: ShardIndex::unsharded()
|
|
|
|
|
}),
|
|
|
|
|
("000000000000000000000000000000000000-FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF__00000000016B59D8-00000000016B5A51".parse().unwrap(), LayerFileMetadata {
|
|
|
|
|
file_size: 9007199254741001,
|
|
|
|
|
generation: Generation::none(),
|
|
|
|
|
shard: ShardIndex::unsharded()
|
|
|
|
|
})
|
|
|
|
|
]),
|
|
|
|
|
disk_consistent_lsn: "0/16960E8".parse::<Lsn>().unwrap(),
|
|
|
|
|
metadata: TimelineMetadata::new(
|
|
|
|
|
Lsn::from_str("0/16960E8").unwrap(),
|
|
|
|
|
Some(Lsn::from_str("0/1696070").unwrap()),
|
|
|
|
|
Some(TimelineId::from_str("e45a7f37d3ee2ff17dc14bf4f4e3f52e").unwrap()),
|
|
|
|
|
Lsn::INVALID,
|
|
|
|
|
Lsn::from_str("0/1696070").unwrap(),
|
|
|
|
|
Lsn::from_str("0/1696070").unwrap(),
|
|
|
|
|
14,
|
|
|
|
|
).with_recalculated_checksum().unwrap(),
|
|
|
|
|
deleted_at: Some(parse_naive_datetime("2023-07-31T09:00:00.123000000")),
|
|
|
|
|
archived_at: Some(parse_naive_datetime("2023-04-29T09:00:00.123000000")),
|
|
|
|
|
lineage: Default::default(),
|
|
|
|
|
last_aux_file_policy: Default::default(),
|
|
|
|
|
};
|
|
|
|
|
|