Skip to main content

GrpcQueryResult

Struct GrpcQueryResult 

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

Result of a gRPC query execution.

Unlike TCP-based queries that return row-at-a-time results, gRPC queries return results in Arrow IPC format, which can contain multiple record batches.

§Example

use hyperdb_api_core::client::grpc::{GrpcClient, GrpcConfig};

let result = client.execute_query("SELECT * FROM users").await?;

// Get raw Arrow IPC bytes for all chunks
let all_arrow_data = result.arrow_data();

// Or process chunk by chunk
for chunk in result.chunks() {
    let arrow_bytes = chunk.arrow_data();
    // Process with arrow crate...
}

Implementations§

Source§

impl GrpcQueryResult

Source

pub fn query_id(&self) -> Option<&str>

Returns the query ID assigned by the server, if available.

Source

pub fn column_count(&self) -> usize

Returns the number of columns in the result.

Source

pub fn columns(&self) -> impl Iterator<Item = GrpcColumnInfo<'_>> + '_

Returns the column descriptions from the server.

Source

pub fn has_chunks(&self) -> bool

Returns whether there are more result chunks available.

Source

pub fn take_chunk(&mut self) -> Option<GrpcResultChunk>

Takes the next result chunk, if available.

Source

pub fn chunks(&self) -> impl Iterator<Item = &GrpcResultChunk>

Returns an iterator over the result chunks.

Source

pub fn arrow_data(&self) -> Bytes

Returns all Arrow IPC data concatenated.

For queries with multiple chunks, this concatenates all Arrow record batches. Note that each chunk may have its own schema message, so the result may contain multiple schema messages.

Single-chunk results are returned without any copy (refcount bump on the shared Bytes). Multi-chunk results are concatenated into a new Bytes. Prefer chunk_bytes() if you can process chunks incrementally.

Source

pub fn into_arrow_data(self) -> Bytes

Consumes the result and returns all Arrow IPC data.

Single-chunk results are returned without any copy. Multi-chunk results are concatenated into a new Bytes.

Source

pub fn chunk_bytes(&self) -> impl Iterator<Item = Bytes> + '_

Returns an iterator over the raw Arrow IPC byte chunks.

Each chunk is a refcount-bumped Bytes sharing the original gRPC frame allocation — no copies are performed. This is the preferred way to feed results into an incremental Arrow IPC decoder.

Source

pub fn rows_affected(&self) -> Option<u64>

Returns the number of rows affected by a DML query.

For SELECT queries, this is None. For INSERT/UPDATE/DELETE queries, this returns the number of rows affected.

Source

pub fn is_complete(&self) -> bool

Returns whether the query execution is complete.

Trait Implementations§

Source§

impl Debug for GrpcQueryResult

Source§

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

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

impl Default for GrpcQueryResult

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<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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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