Skip to main content

QueryApi

Struct QueryApi 

Source
pub struct QueryApi<S: StorageClient + 'static> { /* private fields */ }
Expand description

Universal Query API – Core Layer

Implementations§

Source§

impl<S: StorageClient + Clone + 'static> QueryApi<S>

Source

pub fn new(storage: Arc<RwLock<S>>, stats_manager: Arc<StatsManager>) -> Self

Create a new QueryApi instance with external StatsManager

Source

pub fn execute_with_execution( &mut self, query: &str, ctx: QueryRequest, execution: &TransactionExecution, ) -> CoreResult<QueryResult>

Execute a query with an explicit transaction execution binding.

The execution parameter carries the full transaction identity (ID, timestamps, mode, owner) from TransactionManager. This is the preferred entry point for all transactional DML.

Source

pub fn execute( &mut self, query: &str, ctx: QueryRequest, ) -> CoreResult<QueryResult>

Execute a query with the given query request

§Parameters

query: The query statement

  • ctx: query request
§Return

Structured Search Results

Source

pub fn execute_with_operation_storage( &mut self, query: &str, ctx: QueryRequest, storage: S, ) -> CoreResult<QueryResult>

Source

pub fn execute_stream_with_execution( &mut self, query: &str, ctx: QueryRequest, execution: &TransactionExecution, ) -> CoreResult<StreamingQueryResult>

Execute a query with an explicit transaction execution binding (streaming).

Source

pub fn execute_stream( &mut self, query: &str, ctx: QueryRequest, ) -> CoreResult<StreamingQueryResult>

Execute a query and return a StreamingQueryResult for chunk-at-a-time consumption.

Unlike [execute] which materialises the full result set, this method returns a thread-safe streaming handle that lets the caller pull chunks one at a time. Useful for SSE / gRPC streaming endpoints.

Source

pub fn execute_stream_with_operation_storage( &mut self, query: &str, ctx: QueryRequest, storage: S, ) -> CoreResult<StreamingQueryResult>

Source§

impl<S> QueryApi<S>
where S: StorageClient + Clone + AutoCommitBatchOps + 'static,

Source§

impl<S> QueryApi<S>

Source

pub fn execute_batch_grouped( &mut self, queries: &[String], ctx: QueryRequest, group_size: usize, ) -> Vec<Result<QueryResult, CoreError>>

Execute a batch of auto-commit DML statements in group-commit windows. group_size is clamped to >= 1; each consecutive group of statements shares one write timestamp, one WAL fsync, and one commit point. Statement results are returned per statement, in order, exactly like execute_batch; failed statements roll back only their own writes. DDL / transaction statements / USE must not be mixed in (same contract as execute_batch).

Source§

impl<S: StorageClient + Clone + 'static> QueryApi<S>

Source

pub fn with_schema_manager(self, schema_manager: Arc<SchemaManager>) -> Self

Attach a schema manager to the pipeline.

Source

pub fn with_sync_manager(self, sync_manager: Arc<SyncManager>) -> Self

Attach a sync manager to the pipeline.

Source

pub fn with_optimizer_engine( storage: Arc<RwLock<S>>, stats_manager: Arc<StatsManager>, optimizer_engine: Arc<OptimizerEngine>, schema_manager: Option<Arc<SchemaManager>>, ) -> Self

Create a new QueryApi using an externally configured optimizer engine, so server-level settings (e.g. the [parallel] partitioning section) reach the query pipeline. The engine instance is shared by value.

Source

pub fn with_cost_config(self, config: CostModelConfig) -> Self

Apply an explicit cost model configuration, replacing the default engine built by the constructors.

Assembly-time only: call before the first query. The replacement engine is freshly built, exactly like the constructor default; previously installed per-space overrides are carried over.

Source

pub fn with_cost_profile( self, profile: StorageCostProfile, runtime: &RuntimeConfig, ) -> Self

Apply a storage cost profile with runtime knowledge.

Memory-mode deployments short-circuit to the in-memory preset without touching the filesystem; embedded in-memory users must call this (or Self::with_cost_config), otherwise the constructor default prices queries with mechanical-drive costs.

Source

pub fn with_space_cost_profiles( self, profiles: &HashMap<String, StorageCostProfile>, runtime: &RuntimeConfig, ) -> Self

Apply per-space storage cost profile overrides.

Spaces absent from the map keep the global profile; memory-mode deployments short-circuit every space to the in-memory preset. Assembly-time only: call before the first query.

Source

pub fn with_default_cost_profile_label(self, label: String) -> Self

Override the global cost profile display label (assembly-time only).

Used by assemblies that build their own engine (e.g. the network server with extra engine settings) so EXPLAIN still names the effective profile.

Source

pub fn cost_config(&self) -> CostModelConfig

Effective cost model configuration currently in force.

Source

pub fn with_statistics_settings( self, sample_limit: usize, min_epoch_delta: u64, ) -> Self

Apply the server-configured statistics collection settings to the pipeline (sampling window and automatic-refresh epoch delta).

The pipeline keeps fallback defaults when this is never called, so embedded users without server config are unaffected.

Source

pub fn statistics_sample_limit(&self) -> usize

Effective statistics sampling window currently in force.

Source

pub fn with_password_history_depth(self, depth: usize) -> Self

Set the retained password-history depth applied by user-management operations (assembly-time only).

Source

pub fn statistics_min_epoch_delta(&self) -> u64

Effective statistics refresh epoch delta currently in force.

Source

pub fn install_shared_scheduler( &mut self, shared_scheduler: Arc<SharedScheduler>, query_registry: Arc<QueryRegistry>, )

Install a shared scheduler and query registry into an existing pipeline (used when the pipeline was built by another constructor).

Source

pub fn shared_scheduler(&self) -> Option<Arc<SharedScheduler>>

Access the shared scheduler instance held by the pipeline, if any.

Source

pub fn query_registry(&self) -> Option<Arc<QueryRegistry>>

Access the query registry instance held by the pipeline, if any.

Source

pub fn install_query_manager(&mut self, query_manager: Arc<QueryManager>)

Install the global QueryManager so per-query runtimes forward KILL QUERY, finish tracking, and progress events into one registry. Mirror of [install_shared_scheduler]: called once at server startup.

Source

pub fn set_extensions(&mut self, extensions: Arc<ExtensionRegistry>)

Install a shared pipeline-extension registry (unstable experimental API) into an existing pipeline.

Source

pub fn extensions(&self) -> Arc<ExtensionRegistry> ⓘ

Pipeline-extension registry backing this API.

Source

pub fn collect_statistics(&self, space: &str, force: bool) -> CoreResult<()>

Collect (or serve cached) optimizer statistics for a space.

force bypasses the schema-version gate so an explicit ANALYZE always refreshes the statistics. Failures are returned as Err, never panic.

Source

pub fn plan_cache_hit_rate(&self) -> f64

Query-plan-cache hit rate across all executed statements.

Source

pub fn plan_cache_len(&self) -> usize

Number of entries currently held in the query plan cache.

Auto Trait Implementations§

§

impl<S> !Freeze for QueryApi<S>

§

impl<S> !RefUnwindSafe for QueryApi<S>

§

impl<S> !UnwindSafe for QueryApi<S>

§

impl<S> Send for QueryApi<S>

§

impl<S> Sync for QueryApi<S>

§

impl<S> Unpin for QueryApi<S>

§

impl<S> UnsafeUnpin for QueryApi<S>

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> FmtForward for T

Source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
Source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
Source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
Source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
Source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
Source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
Source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
Source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
Source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. 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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

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
Source§

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

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .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
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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