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
impl GrpcQueryResult
Sourcepub fn query_id(&self) -> Option<&str>
pub fn query_id(&self) -> Option<&str>
Returns the query ID assigned by the server, if available.
Sourcepub fn column_count(&self) -> usize
pub fn column_count(&self) -> usize
Returns the number of columns in the result.
Sourcepub fn columns(&self) -> impl Iterator<Item = GrpcColumnInfo<'_>> + '_
pub fn columns(&self) -> impl Iterator<Item = GrpcColumnInfo<'_>> + '_
Returns the column descriptions from the server.
Sourcepub fn has_chunks(&self) -> bool
pub fn has_chunks(&self) -> bool
Returns whether there are more result chunks available.
Sourcepub fn take_chunk(&mut self) -> Option<GrpcResultChunk>
pub fn take_chunk(&mut self) -> Option<GrpcResultChunk>
Takes the next result chunk, if available.
Sourcepub fn chunks(&self) -> impl Iterator<Item = &GrpcResultChunk>
pub fn chunks(&self) -> impl Iterator<Item = &GrpcResultChunk>
Returns an iterator over the result chunks.
Sourcepub fn arrow_data(&self) -> Bytes
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.
Sourcepub fn into_arrow_data(self) -> Bytes
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.
Sourcepub fn chunk_bytes(&self) -> impl Iterator<Item = Bytes> + '_
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.
Sourcepub fn rows_affected(&self) -> Option<u64>
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.
Sourcepub fn is_complete(&self) -> bool
pub fn is_complete(&self) -> bool
Returns whether the query execution is complete.
Trait Implementations§
Source§impl Debug for GrpcQueryResult
impl Debug for GrpcQueryResult
Auto Trait Implementations§
impl Freeze for GrpcQueryResult
impl RefUnwindSafe for GrpcQueryResult
impl Send for GrpcQueryResult
impl Sync for GrpcQueryResult
impl Unpin for GrpcQueryResult
impl UnsafeUnpin for GrpcQueryResult
impl UnwindSafe for GrpcQueryResult
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
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request