Skip to main content

Client

Struct Client 

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

A client for interacting with Dremio’s Flight SQL service.

This client wraps the FlightSqlServiceClient and provides a simplified interface for common operations such as executing SQL queries and retrieving data as Arrow RecordBatches, or writing them to Parquet files.

Implementations§

Source§

impl Client

Source

pub async fn new( url: &str, user: &str, pass: &str, ) -> Result<Self, DremioClientError>

Creates a new Client instance and establishes a connection to the Dremio coordinator.

§Arguments
  • url - The URL of the Dremio coordinator (e.g., “http://localhost:32010”).
  • user - The username for authentication.
  • pass - The password for authentication.
§Returns

A Result which is:

  • Ok(Self) if the connection is successful and authentication succeeds.
  • Err(DremioClientError) if an error occurs during connection or authentication.
§Example
use dremio_rs::Client;

#[tokio::main]
async fn main() {
   let mut client = Client::new("http://localhost:32010", "dremio", "dremio123").await.unwrap();
}
Source

pub async fn get_record_batches( &mut self, query: &str, ) -> Result<Vec<RecordBatch>, DremioClientError>

Executes a SQL query against Dremio and retrieves the results as a vector of RecordBatches.

§Arguments
  • query - The SQL query string to execute.
§Returns

A Result which is:

  • Ok(Vec<RecordBatch>) containing the query results if successful.
  • Err(DremioClientError) if an error occurs during query execution or data retrieval.
§Example
use dremio_rs::Client;

#[tokio::main]
async fn main() {
  let mut client = Client::new("http://localhost:32010", "dremio", "dremio123").await.unwrap();
  let batches = client.get_record_batches("SELECT * FROM sys.options").await.unwrap();
  for batch in batches {
    println!("{:?}", batch);
  }
}
Source

pub async fn write_parquet( &mut self, query: &str, path: &str, ) -> Result<(), DremioClientError>

Executes a SQL query and writes the results directly to a Parquet file.

§Arguments
  • query - The SQL query string to execute.
  • path - The file path where the Parquet file will be written.
§Returns

A Result which is:

  • Ok(()) if the Parquet file is successfully written.
  • Err(DremioClientError) if an error occurs during query execution, data retrieval, or file writing.
§Example
use dremio_rs::Client;

#[tokio::main]
async fn main() {
 let mut client = Client::new("http://localhost:32010", "dremio", "dremio123").await.unwrap();
 client.write_parquet("SELECT * FROM sys.options", "my_table.parquet").await.unwrap();
}
Source

pub fn inner(&self) -> &FlightSqlServiceClient<Channel>

Returns a shared reference to the underlying FlightSqlServiceClient.

This can be used to access more advanced Flight SQL operations not directly exposed by the Client interface.

§Returns

A reference to the FlightSqlServiceClient<Channel>.

Auto Trait Implementations§

§

impl !Freeze for Client

§

impl !RefUnwindSafe for Client

§

impl Send for Client

§

impl Sync for Client

§

impl Unpin for Client

§

impl UnsafeUnpin for Client

§

impl !UnwindSafe for Client

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