pub struct QueryDb { /* private fields */ }Expand description
The central incremental computation database.
QueryDb owns the sharded query cache, file-level input store, and global
revision counters. All derived queries are evaluated and cached through
QueryDb::get.
§Concurrency
QueryDb is Send + Sync. The sharded cache uses parking_lot::RwLock
per shard (64 shards) for high-concurrency reads. Global revision counters
use AtomicU64 with Ordering::Acquire / Ordering::Release semantics.
Implementations§
Source§impl QueryDb
impl QueryDb
Sourcepub fn new(snapshot: Arc<GraphSnapshot>, config: QueryDbConfig) -> Self
pub fn new(snapshot: Arc<GraphSnapshot>, config: QueryDbConfig) -> Self
Creates a new QueryDb backed by the given graph snapshot.
Every built-in DerivedQuery is pre-registered so callers of the
planner executor and the relation / cycle / unused queries never have
to hand-register them. Extra query types can still be added via
Self::register.
Sourcepub fn register<Q: DerivedQuery>(&mut self)
pub fn register<Q: DerivedQuery>(&mut self)
Registers a derived query type for cache routing.
Must be called once per query type before the first get call.
Panics (in debug builds) if the query type is already registered.
Sourcepub fn get<Q: DerivedQuery>(&self, key: &Q::Key) -> Q::Value
pub fn get<Q: DerivedQuery>(&self, key: &Q::Key) -> Q::Value
Evaluates a derived query, returning the cached result if valid or recomputing and caching on miss/invalidation.
§Cache validation
A cached result is returned only if ALL applicable tiers pass:
- Every
(FileId, revision)pair in the cached deps matches the current file revision inFileInputStore. - If
Q::TRACKS_EDGE_REVISION, the cachededge_revisionmatches the current global counter. - If
Q::TRACKS_METADATA_REVISION, the cachedmetadata_revisionmatches the current global counter.
Sourcepub fn snapshot(&self) -> &GraphSnapshot
pub fn snapshot(&self) -> &GraphSnapshot
Returns the current graph snapshot.
Sourcepub fn snapshot_arc(&self) -> Arc<GraphSnapshot> ⓘ
pub fn snapshot_arc(&self) -> Arc<GraphSnapshot> ⓘ
Returns the current graph snapshot as an Arc.
Sourcepub fn set_snapshot(&mut self, snapshot: Arc<GraphSnapshot>)
pub fn set_snapshot(&mut self, snapshot: Arc<GraphSnapshot>)
Replaces the current snapshot with a new one.
This does NOT invalidate the cache. Use [bump_edge_revision] and/or
[bump_metadata_revision] after updating to trigger invalidation on
next access.
Sourcepub fn inputs(&self) -> &FileInputStore
pub fn inputs(&self) -> &FileInputStore
Returns a reference to the file input store.
Sourcepub fn inputs_mut(&mut self) -> &mut FileInputStore
pub fn inputs_mut(&mut self) -> &mut FileInputStore
Returns a mutable reference to the file input store.
Sourcepub fn edge_revision(&self) -> u64
pub fn edge_revision(&self) -> u64
Returns the current global edge revision counter.
Sourcepub fn bump_edge_revision(&self) -> u64
pub fn bump_edge_revision(&self) -> u64
Atomically increments the global edge revision counter and returns the new value.
Sourcepub fn metadata_revision(&self) -> u64
pub fn metadata_revision(&self) -> u64
Returns the current global metadata revision counter.
Sourcepub fn bump_metadata_revision(&self) -> u64
pub fn bump_metadata_revision(&self) -> u64
Atomically increments the global metadata revision counter and returns the new value.
Sourcepub fn config(&self) -> &QueryDbConfig
pub fn config(&self) -> &QueryDbConfig
Returns the database configuration.
Sourcepub fn metrics(&self) -> QueryDbMetrics
pub fn metrics(&self) -> QueryDbMetrics
Returns a snapshot of the cache-usage counters.
The returned QueryDbMetrics is a coherent read of the hit and miss
counters (modulo the usual memory-ordering semantics of two separate
atomic reads). The counters are monotonic and never reset — callers
interested in deltas should take a baseline, run the work, and diff.
Used by Phase 3C DB21 Proof 3 to assert “zero recomputation” after a cache warm-up, and by production telemetry to emit cache hit rates.
Sourcepub fn invalidate_all(&self)
pub fn invalidate_all(&self)
Invalidates all cached results unconditionally.
This is a heavy operation used for full rebuilds.
Sourcepub fn cold_load_allowed(&self) -> bool
pub fn cold_load_allowed(&self) -> bool
Returns true if a cold-load is still permitted for this QueryDb.
true at construction. Transitions to false after a successful
persistence::load_derived call. Once false, subsequent
load_derived calls return
persistence::LoadError::AlreadyLoaded without reading the file.
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for QueryDb
impl !RefUnwindSafe for QueryDb
impl Unpin for QueryDb
impl UnsafeUnpin for QueryDb
impl !UnwindSafe for QueryDb
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
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>
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>
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 moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more