pub struct QueryPipelineManager<S: QueryStorage + 'static> {
pub macro_manager: Arc<MacroManager>,
pub type_alias_manager: Arc<TypeAliasManager>,
pub sequence_manager: Arc<SequenceManager>,
pub last_dml_plan_hits: AtomicU64,
/* private fields */
}Fields§
§macro_manager: Arc<MacroManager>Shared macro catalog (user-defined macros), engine-wide.
Created once with the pipeline manager and shared with every query through the binder (expansion), parser-adjacent planning and the execution runtime (DDL). Persistence/WAL backends can be attached by replacing this instance before serving queries.
type_alias_manager: Arc<TypeAliasManager>Shared type-alias catalog (user-defined types), engine-wide.
Threaded the same way as Self::macro_manager.
sequence_manager: Arc<SequenceManager>Shared sequence catalog (named sequences for curr_val/next_val),
engine-wide.
Threaded the same way as Self::macro_manager.
last_dml_plan_hits: AtomicU64Implementations§
Source§impl<S: QueryStorage + 'static> QueryPipelineManager<S>
impl<S: QueryStorage + 'static> QueryPipelineManager<S>
pub fn execute_explain( &mut self, explain_stmt: &ExplainStmt, qctx: Arc<QueryContext>, ) -> DBResult<ExecutionResult>
pub fn execute_explain_analyze( &mut self, explain_stmt: &ExplainStmt, qctx: Arc<QueryContext>, transaction_scope: TransactionScope, ) -> DBResult<ExecutionResult>
pub fn execute_profile( &mut self, profile_stmt: &ProfileStmt, qctx: Arc<QueryContext>, transaction_scope: TransactionScope, ) -> DBResult<ExecutionResult>
Source§impl<S: QueryStorage + 'static> QueryPipelineManager<S>
impl<S: QueryStorage + 'static> QueryPipelineManager<S>
pub fn execute_query(&mut self, query_text: &str) -> DBResult<ExecutionResult>
Sourcepub fn execute_query_with_space(
&mut self,
query_text: &str,
space_info: Option<SpaceInfo>,
) -> DBResult<ExecutionResult>
pub fn execute_query_with_space( &mut self, query_text: &str, space_info: Option<SpaceInfo>, ) -> DBResult<ExecutionResult>
Convenience entry: parse, bind auto-commit storage for DML, compile, execute, and finalize in one call. Used by tests and the embedded API.
Finalization of the auto-bound operation storage is performed by
[execute_prepared_materialized].
pub fn execute_query_stream_with_request( &mut self, query_text: &str, rctx: Arc<QueryRequestContext>, space_info: Option<SpaceInfo>, ) -> DBResult<StreamingQueryResult>
pub fn execute_query_stream_with_request_scope( &mut self, query_text: &str, rctx: Arc<QueryRequestContext>, space_info: Option<SpaceInfo>, transaction_id: Option<TransactionId>, ) -> DBResult<StreamingQueryResult>
pub fn execute_query_with_request( &mut self, query_text: &str, rctx: Arc<QueryRequestContext>, space_info: Option<SpaceInfo>, ) -> DBResult<ExecutionResult>
pub fn execute_query_with_request_scope( &mut self, query_text: &str, rctx: Arc<QueryRequestContext>, space_info: Option<SpaceInfo>, transaction_id: Option<TransactionId>, ) -> DBResult<ExecutionResult>
Sourcepub fn execute_query_with_profile(
&mut self,
query_text: &str,
session_id: i64,
space_info: Option<SpaceInfo>,
) -> DBResult<(ExecutionResult, QueryMetrics, QueryProfile)>
pub fn execute_query_with_profile( &mut self, query_text: &str, session_id: i64, space_info: Option<SpaceInfo>, ) -> DBResult<(ExecutionResult, QueryMetrics, QueryProfile)>
Execute a statement end to end and report its stage profile.
The only entry that produces a QueryProfile: stage timings and the
metric counters are recorded here so embedded and API callers get the
same picture the transport layer shows, with no second profile
assembly anywhere else. space_info selects the target space and is
None for statements that do not need one.
Source§impl<S: QueryStorage + 'static> QueryPipelineManager<S>
impl<S: QueryStorage + 'static> QueryPipelineManager<S>
Sourcepub const DEFAULT_STATISTICS_SAMPLE_LIMIT: usize = 10_000
pub const DEFAULT_STATISTICS_SAMPLE_LIMIT: usize = 10_000
Fallback sampling window used when the server assembly did not pass
an explicit statistics_sample_limit (mirrors the config default).
Sourcepub const DEFAULT_STATISTICS_MIN_EPOCH_DELTA: u64 = 100
pub const DEFAULT_STATISTICS_MIN_EPOCH_DELTA: u64 = 100
Fallback epoch delta used when the server assembly did not pass an
explicit statistics_min_epoch_delta (mirrors the config default).
pub fn with_optimizer( storage: Arc<RwLock<S>>, stats_manager: Arc<StatsManager>, optimizer_engine: Arc<OptimizerEngine>, ) -> Self
pub fn with_statistics_sample_limit(self, sample_limit: usize) -> Self
pub fn with_statistics_min_epoch_delta(self, delta: u64) -> Self
Sourcepub fn with_password_history_depth(self, depth: usize) -> Self
pub fn with_password_history_depth(self, depth: usize) -> Self
Set the retained password-history depth for user-management operations (assembly-time only).
Sourcepub fn set_optimizer_engine(&mut self, optimizer_engine: Arc<OptimizerEngine>)
pub fn set_optimizer_engine(&mut self, optimizer_engine: Arc<OptimizerEngine>)
Replace the optimizer engine (assembly-time only).
Re-runs the post-construction injection so the replacement behaves
like an engine passed to Self::with_optimizer. Callers must swap
before the first query; execution-time replacement is unsupported.
Sourcepub fn statistics_sample_limit(&self) -> usize
pub fn statistics_sample_limit(&self) -> usize
Effective sampling window currently in force for statistics collection (server config value or the fallback default).
Sourcepub fn statistics_min_epoch_delta(&self) -> u64
pub fn statistics_min_epoch_delta(&self) -> u64
Effective epoch delta currently in force for automatic refresh.
Sourcepub fn statistics_settings_summary(&self) -> String
pub fn statistics_settings_summary(&self) -> String
One-line summary of the effective statistics settings, surfaced in EXPLAIN diagnostics so operators can verify which sampling window and refresh threshold produced the statistics behind a plan.
Sourcepub fn set_space_cost_configs(
&mut self,
configs: HashMap<String, CostModelConfig>,
labels: HashMap<String, String>,
)
pub fn set_space_cost_configs( &mut self, configs: HashMap<String, CostModelConfig>, labels: HashMap<String, String>, )
Install per-space cost model overrides on the engine, with display labels for EXPLAIN observability (assembly-time only).
Sourcepub fn set_default_cost_profile_label(&mut self, label: String)
pub fn set_default_cost_profile_label(&mut self, label: String)
Display label of the global cost profile (assembly-time only).
Sourcepub fn cost_profile_label_for(&self, space: Option<&str>) -> Option<String>
pub fn cost_profile_label_for(&self, space: Option<&str>) -> Option<String>
Effective cost profile label for a space, if the assembly provided one: the space override when present, else the global label. Empty global label means unassembled: no label at all.
Sourcepub fn collect_statistics(
&self,
space: &str,
force: bool,
) -> Result<CollectedSummary, String>
pub fn collect_statistics( &self, space: &str, force: bool, ) -> Result<CollectedSummary, String>
Collect (or serve cached) statistics for a space into the optimizer’s
StatisticsManager.
force bypasses the version gate so an explicit ANALYZE always
refreshes the statistics. Collection is serialized internally.
pub fn with_query_registry(self, registry: Arc<QueryRegistry>) -> Self
Set the shared scheduler (used when the pipeline is built before the scheduler is created, e.g. the vector-enabled server path).
Sourcepub fn set_query_registry(&mut self, registry: Option<Arc<QueryRegistry>>)
pub fn set_query_registry(&mut self, registry: Option<Arc<QueryRegistry>>)
Set the query registry (used when the pipeline is built before the registry is created, e.g. the vector-enabled server path).
Access the shared scheduler instance, if any.
Sourcepub fn query_registry(&self) -> Option<Arc<QueryRegistry>>
pub fn query_registry(&self) -> Option<Arc<QueryRegistry>>
Access the query registry instance, if any.
Sourcepub fn set_query_manager(&mut self, manager: Option<Arc<QueryManager>>)
pub fn set_query_manager(&mut self, manager: Option<Arc<QueryManager>>)
Set the global QueryManager (used when the pipeline is built before the manager is created, e.g. the server startup path).
Sourcepub fn query_manager(&self) -> Option<Arc<QueryManager>>
pub fn query_manager(&self) -> Option<Arc<QueryManager>>
Access the global QueryManager instance, if installed.
pub fn with_optimizer_and_cache( storage: Arc<RwLock<S>>, stats_manager: Arc<StatsManager>, optimizer_engine: Arc<OptimizerEngine>, plan_cache_config: PlanCacheConfig, ) -> Self
Sourcepub fn with_extensions(self, extensions: Arc<ExtensionRegistry>) -> Self
pub fn with_extensions(self, extensions: Arc<ExtensionRegistry>) -> Self
Attach a shared pipeline-extension registry (experimental).
Sourcepub fn set_extensions(&mut self, extensions: Arc<ExtensionRegistry>)
pub fn set_extensions(&mut self, extensions: Arc<ExtensionRegistry>)
Replace the pipeline-extension registry on an existing manager
(experimental). Used when the manager was built by another
constructor and the caller only has &mut access.
Sourcepub fn extensions(&self) -> Arc<ExtensionRegistry> ⓘ
pub fn extensions(&self) -> Arc<ExtensionRegistry> ⓘ
Pipeline-extension registry backing this manager.
pub fn optimizer_engine(&self) -> &OptimizerEngine
pub fn with_schema_manager(self, schema_manager: Arc<SchemaManager>) -> Self
pub fn with_index_manager( self, index_manager: Arc<dyn IndexMetadataManager>, ) -> Self
pub fn plan_cache(&self) -> &QueryPlanCache
pub fn plan_cache_metrics(&self) -> Arc<PlanCacheStats> ⓘ
pub fn clear_plan_cache(&self)
pub fn with_sync_manager(self, sync_manager: Arc<SyncManager>) -> Self
Sourcepub fn with_dml_shape_cache(self, enabled: bool) -> Self
pub fn with_dml_shape_cache(self, enabled: bool) -> Self
Toggle DML shape plan caching (independent switch / rollback path).
Sourcepub fn dml_shape_cache_enabled(&self) -> bool
pub fn dml_shape_cache_enabled(&self) -> bool
Whether DML shape plan caching is enabled.
pub fn dml_template_ast_parse_count(&self) -> u64
pub fn dml_template_ast_hit_count(&self) -> u64
pub fn dml_bind_skipped_count(&self) -> u64
Auto Trait Implementations§
impl<S> !Freeze for QueryPipelineManager<S>
impl<S> !RefUnwindSafe for QueryPipelineManager<S>
impl<S> !UnwindSafe for QueryPipelineManager<S>
impl<S> Send for QueryPipelineManager<S>
impl<S> Sync for QueryPipelineManager<S>
impl<S> Unpin for QueryPipelineManager<S>
impl<S> UnsafeUnpin for QueryPipelineManager<S>
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.