pub struct PlannerStats {
pub estimated_collection_sizes: DashMap<String, u64>,
pub average_value_size: u64,
pub fhe_op_latency_us: u64,
pub fhe_comparison_cost: f64,
pub fhe_boolean_cost: f64,
}Expand description
Statistics used for cost estimation
Maintains per-collection cardinality estimates and global latency hints so that the planner can make informed decisions.
Fields§
§estimated_collection_sizes: DashMap<String, u64>Estimated row count per collection
average_value_size: u64Average value size in bytes across all collections
fhe_op_latency_us: u64Estimated microsecond latency of a single FHE gate operation
fhe_comparison_cost: f64Cost of a single FHE comparison operation (Eq / Lt / Gt / Lte / Gte)
fhe_boolean_cost: f64Cost of a single FHE boolean operation (And / Or)
Implementations§
Source§impl PlannerStats
impl PlannerStats
Sourcepub fn set_collection_size(&self, collection: impl Into<String>, size: u64)
pub fn set_collection_size(&self, collection: impl Into<String>, size: u64)
Update the estimated size for a collection
Sourcepub fn predicate_selectivity(&self, pred: &Predicate) -> f64
pub fn predicate_selectivity(&self, pred: &Predicate) -> f64
Estimate the fraction of rows a predicate will pass (0.0–1.0).
Heuristics (no histograms available):
Eq→ 0.001 (high selectivity, rare match)Lt/Gt/Lte/Gte→ 0.3 (moderate selectivity)And(p1, p2)→ s1 * s2Or(p1, p2)→ 1 - (1-s1)*(1-s2)Not(p)→ 1 - s
Sourcepub fn predicate_fhe_cost(&self, pred: &Predicate) -> f64
pub fn predicate_fhe_cost(&self, pred: &Predicate) -> f64
Estimate the relative FHE cost of evaluating a predicate (in abstract units).
- Leaf comparisons (
Eq/Lt/Gt/Lte/Gte) each cost 1.0 comparison unit. And/Orcost 1.0 boolean-op + sum of children costs.Notcosts 0.5 boolean-op + child cost.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for PlannerStats
impl Freeze for PlannerStats
impl Send for PlannerStats
impl Sync for PlannerStats
impl Unpin for PlannerStats
impl UnsafeUnpin for PlannerStats
impl UnwindSafe for PlannerStats
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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> 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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.