pub enum PgTable {
Narinfo,
Nar,
NarRef,
}Expand description
The three logical tables the cache tier keeps: narinfo text, NAR blobs, and the reverse edges between them.
A typed discriminant (never a stringly-typed table name at a call site) so the
SQL for each table is chosen by an exhaustive match — a new table is a
non-exhaustive-match compile error, and a typo’d table name cannot exist.
Variants§
Narinfo
narinfo metadata, keyed by the 32-char store-path hash.
Nar
compressed NAR blobs, keyed by relative URL path (nar/<hash>.nar.xz).
NarRef
Reverse index edges, keyed by NarRefKey — one zero-value row per
(NAR path, store hash) pair, so recording an edge is a blind upsert of
a key that names its own content and two concurrent pushes cannot lose
each other’s edge.
Implementations§
Trait Implementations§
impl Copy for PgTable
impl Eq for PgTable
impl StructuralPartialEq for PgTable
Auto Trait Implementations§
impl Freeze for PgTable
impl RefUnwindSafe for PgTable
impl Send for PgTable
impl Sync for PgTable
impl Unpin for PgTable
impl UnsafeUnpin for PgTable
impl UnwindSafe for PgTable
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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