Skip to main content

QueryManager

Struct QueryManager 

Source
pub struct QueryManager { /* private fields */ }
Expand description

Query Manager

Single enum dual emission source: query lifecycle halves (QueryStarted / QueryCompleted / SlowQueryDetected) are emitted here, session lifecycle halves (SessionCreated / SessionDestroyed) by GraphSessionManager. Both sides can share one Arc<EventSubscriptions<SessionEvent>> via new_with_shared so observers subscribe once and receive both halves.

Implementations§

Source§

impl QueryManager

Source

pub fn new() -> Self

Source

pub fn new_with_shared(shared: Arc<EventSubscriptions<SessionEvent>>) -> Self

Build a manager sharing one session-event registry with GraphSessionManager.

Source

pub fn shared_session_callbacks(&self) -> Arc<EventSubscriptions<SessionEvent>> ⓘ

Shared session-event registry behind this manager.

Source

pub fn set_shared_session_callbacks( &mut self, shared: Arc<EventSubscriptions<SessionEvent>>, )

Point this manager at a shared session-event registry.

Source

pub fn register_session_callback( &self, callback: SessionEventCallback, ) -> SubscriptionId

Register a runtime observer for session/query events.

Source

pub fn register_session_callback_filtered( &self, callback: SessionEventCallback, filter: EventFilter<SessionEvent>, ) -> SubscriptionId

Register a filtered observer invoked only when filter returns true.

Source

pub fn unregister_session_callback(&self, id: SubscriptionId) -> bool

Remove a previously registered observer. Returns true if present.

Source

pub fn session_callback_count(&self) -> usize

Number of registered session observers.

Source

pub fn set_query_registry(&self, registry: Arc<QueryRegistry>)

Attach the executor’s query registry so kill_query also cancels the execution token. Without it, kill_query only marks the query status.

Source

pub fn clear_query_registry(&self)

Detach the executor’s query registry; kill_query returns to status-marking only.

Source

pub fn register_progress_callback( &self, callback: QueryProgressCallback, ) -> SubscriptionId

Register a progress observer. The executor invokes it at its own row interval; unregistered by default, hence zero hot-path overhead.

Source

pub fn register_progress_callback_with_interval( &self, callback: QueryProgressCallback, rows_interval: u64, ) -> SubscriptionId

Register a progress observer thinned to every rows_interval rows.

Observer-side thinning: deliveries whose rows_processed is not a multiple of rows_interval are dropped before reaching callback. rows_interval == 0 disables thinning (every emission is delivered). The executor still decides when to call emit_progress; pairing a coarse executor cadence with a fine observer interval costs nothing extra, while a fine executor cadence with a coarse observer interval only pays for the dropped filter checks.

Source

pub fn register_progress_callback_filtered( &self, callback: QueryProgressCallback, filter: EventFilter<QueryProgress>, ) -> SubscriptionId

Register a filtered progress observer.

Source

pub fn unregister_progress_callback(&self, id: SubscriptionId) -> bool

Remove a previously registered progress observer.

Source

pub fn progress_callback_count(&self) -> usize

Number of registered progress observers.

Source

pub fn emit_progress(&self, session_id: i64, query_id: i64, rows_processed: u64)

Emit a progress notification. No-op when nobody listens.

Explicit executor entry point: streaming operators call this when their processed row count reaches the configured cadence. Callers outside the executor (tests, manual drivers) may invoke it directly.

Source

pub fn set_slow_query_threshold_ms(&self, threshold_ms: i64)

Configure the threshold used to emit SlowQueryDetected.

Source

pub fn slow_query_threshold_ms(&self) -> i64

Current slow-query threshold in milliseconds.

Source

pub fn register_query( &self, session_id: i64, user_name: String, space_name: Option<String>, query_text: String, ) -> i64

Register a new query

Source

pub fn register_query_with_id( &self, query_id: i64, session_id: i64, user_name: String, space_name: Option<String>, query_text: String, ) -> ManagerResult<()>

Register a new query under a caller-assigned id.

The network service assigns one monotonic id per execution and uses it for the engine request, this registry, and the session tracker, so SHOW QUERIES rows double as KILL QUERY targets. The id lane advances past the fixed id to keep generated ids collision-free. An id already held by a running query is rejected; a stale finished entry under the same id is replaced.

Source

pub fn finish_query(&self, query_id: i64) -> ManagerResult<()>

Complete the query.

Source

pub fn fail_query(&self, query_id: i64) -> ManagerResult<()>

The marker query failed.

Source

pub fn kill_query(&self, query_id: i64) -> ManagerResult<()>

Terminate the query.

Marks the query Killed and, when a query registry is attached via set_query_registry, cancels its execution token with CancelReason::UserKill so a running query actually stops. Without an attached registry this only marks the status; the executor-side QueryRegistry remains the source of truth for cancellation. Query ids are generated as positive i64 values, so a negative id is rejected as invalid input instead of wrapping on the i64 to executor u64 id conversion.

Source

pub fn get_query(&self, query_id: i64) -> Option<QueryInfo>

Obtain the query information

Source

pub fn get_all_queries(&self) -> Vec<QueryInfo>

Retrieve all queries

Source

pub fn get_running_queries(&self) -> Vec<QueryInfo>

Obtain the queries that are currently running.

Source

pub fn cleanup_finished_queries(&self, keep_count: usize)

Clean up the completed queries (retaining only the last N of them).

Trait Implementations§

Source§

impl Debug for QueryManager

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for QueryManager

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

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