Skip to main content

SegmentIdentity

Struct SegmentIdentity 

Source
pub struct SegmentIdentity {
    pub database_id: [u8; 16],
    pub primary_generation: u64,
    pub wal_format_version: u16,
    pub catalog_version: u16,
}
Expand description

Segment identity metadata used to reject forked or incompatible histories.

Fields§

§database_id: [u8; 16]§primary_generation: u64§wal_format_version: u16§catalog_version: u16

Implementations§

Source§

impl SegmentIdentity

Source

pub fn current(database_id: [u8; 16], primary_generation: u64) -> Self

Stamp an identity with this binary’s maximum supported catalog version.

Use this at consumer sites that want “the newest catalog format this binary can read” as the expected identity. Producers that publish segments must instead stamp the database’s active catalog version with Self::with_catalog_version, so a database that has not yet activated v6 keeps stamping v5 (old-replica compatibility).

Source

pub fn with_catalog_version( database_id: [u8; 16], primary_generation: u64, catalog_version: u16, ) -> Self

Stamp an identity with an explicit (active) catalog version.

The catalog version is a compatibility annotation, not lineage: it records the on-disk catalog format the producing database was running when the segment was published. It is deliberately excluded from Self::lineage_matches; consumers accept an older annotation and reject a newer one via [validate_identity].

Source

pub fn lineage_matches(self, other: SegmentIdentity) -> bool

True when the strict lineage fields (database id, primary generation, WAL format) match. catalog_version is intentionally ignored: it is a compatibility annotation that legitimately increases across a segment chain when a database activates a newer catalog format mid-stream.

Source

pub fn validate(self) -> Result<()>

Trait Implementations§

Source§

impl Clone for SegmentIdentity

Source§

fn clone(&self) -> SegmentIdentity

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for SegmentIdentity

Source§

impl Debug for SegmentIdentity

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for SegmentIdentity

Source§

impl PartialEq for SegmentIdentity

Source§

fn eq(&self, other: &SegmentIdentity) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for SegmentIdentity

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more