Struct Connection

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

An asynchronous connection to the database.

Implementations§

Source§

impl Connection

Source

pub async fn new<P>(params: P) -> Result<Connection, HdbError>

Factory method for authenticated connections.

See ConnectParams, ConnectParamsBuilder, and IntoConnectParams for the available options of providing the input to this function.

§Example
use hdbconnect_async::Connection;
let mut conn = Connection::new("hdbsql://my_user:my_passwd@the_host:2222").await.unwrap();
§Errors

Several variants of HdbError can occur.

Source

pub async fn with_configuration<P>( params: P, config: &ConnectionConfiguration, ) -> Result<Connection, HdbError>

Factory method for authenticated connections with given configuration.

§Errors

Several variants of HdbError can occur.

Source

pub async fn statement<S>(&self, stmt: S) -> Result<HdbResponse, HdbError>
where S: AsRef<str>,

Executes a statement on the database.

This generic method can handle all kinds of calls, and thus has the most generic return type. In many cases it will be more convenient to use one of the dedicated methods query(), dml(), exec() below, which internally convert the HdbResponse to the respective adequate simple result type.

§Example
let mut response = connection.statement(&statement_string).await.unwrap(); // HdbResponse
§Errors

Several variants of HdbError can occur.

Source

pub async fn query<S>(&self, stmt: S) -> Result<ResultSet, HdbError>
where S: AsRef<str>,

Executes a statement and expects a single ResultSet.

Should be used for query statements (like “SELECT …”) which return a single result set.

§Example
let mut rs = connection.query(&statement_string).await.unwrap(); // ResultSet
§Errors

Several variants of HdbError can occur.

Source

pub async fn dml<S>(&self, stmt: S) -> Result<usize, HdbError>
where S: AsRef<str>,

Executes a statement and expects a single number of affected rows.

Should be used for DML statements only, i.e., INSERT, UPDATE, DELETE, UPSERT.

§Example
let count = connection.dml(&statement_string).await.unwrap(); //usize
§Errors

Several variants of HdbError can occur.

Source

pub async fn exec<S>(&self, stmt: S) -> Result<(), HdbError>
where S: AsRef<str>,

Executes a statement and expects a plain success.

Should be used for SQL commands like “ALTER SYSTEM …”.

§Example
connection.exec(&statement_string).await.unwrap();
§Errors

Several variants of HdbError can occur.

Source

pub async fn prepare<S>(&self, stmt: S) -> Result<PreparedStatement, HdbError>
where S: AsRef<str>,

Prepares a statement and returns a handle (a PreparedStatement) to it.

Note that the PreparedStatement keeps using the same database connection as this Connection.

§Example
let query_string = "select * from phrases where ID = ? and text = ?";
let mut statement = connection.prepare(query_string).await.unwrap(); //PreparedStatement
§Errors

Several variants of HdbError can occur.

Source

pub async fn prepare_and_execute<S, T>( &self, stmt: S, input: &T, ) -> Result<HdbResponse, HdbError>
where S: AsRef<str>, T: Serialize,

Prepares a statement and executes it a single time.

§Errors

Several variants of HdbError can occur.

Source

pub async fn commit(&self) -> Result<(), HdbError>

Commits the current transaction.

§Errors

Several variants of HdbError can occur.

Source

pub async fn rollback(&self) -> Result<(), HdbError>

Rolls back the current transaction.

§Errors

Several variants of HdbError can occur.

Source

pub async fn spawn(&self) -> Result<Connection, HdbError>

Creates a new connection object with the same settings and authentication.

§Errors

Several variants of HdbError can occur.

Source

pub async fn multiple_statements_ignore_err<S>(&self, stmts: Vec<S>)
where S: AsRef<str>,

Utility method to fire a couple of statements, ignoring errors and return values.

§Errors

Several variants of HdbError can occur.

Source

pub async fn multiple_statements<S>( &self, stmts: Vec<S>, ) -> Result<(), HdbError>
where S: AsRef<str>,

Utility method to fire a couple of statements, ignoring their return values; the method returns with the first error, or with ().

§Errors

Several variants of HdbError can occur.

Source

pub async fn pop_warnings(&self) -> Option<Vec<ServerError>>

Returns warnings that were returned from the server since the last call to this method.

Source

pub async fn set_auto_commit(&self, ac: bool)

Sets the connection’s auto-commit behavior.

Source

pub async fn is_auto_commit(&self) -> bool

Returns the connection’s auto-commit behavior.

Source

pub async fn set_cursor_holdability( &self, holdability: CursorHoldability, ) -> Result<(), HdbError>

Sets the connection’s cursor holdability.

§Errors

Only HdbError::Poison can occur.

Source

pub async fn cursor_holdability(&self) -> Result<CursorHoldability, HdbError>

Returns the connection’s cursor holdability.

§Errors

Only HdbError::Poison can occur.

Source

pub async fn fetch_size(&self) -> u32

Returns the connection’s fetch size.

Source

pub async fn set_fetch_size(&self, fetch_size: u32)

Configures the connection’s fetch size.

Source

pub async fn read_timeout(&self) -> Result<Option<Duration>, HdbError>

Returns the connection’s read timeout.

§Errors

Various errors can occur.

Source

pub async fn set_read_timeout( &self, read_timeout: Option<Duration>, ) -> Result<(), HdbError>

Sets the connection’s read timeout.

§Errors

Various errors can occur.

Source

pub async fn lob_read_length(&self) -> u32

Returns the connection’s lob read length.

Source

pub async fn set_lob_read_length(&self, l: u32)

Configures the connection’s lob read length.

§Errors

Only HdbError::Poison can occur.

Source

pub async fn lob_write_length(&self) -> u32

Returns the connection’s lob write length.

Source

pub async fn set_lob_write_length(&self, l: u32)

Sets the connection’s lob write length.

The intention of the parameter is to allow reducing the number of roundtrips to the database.

Source

pub async fn set_max_buffer_size(&mut self, max_buffer_size: usize)

Sets the connection’s maximum buffer size.

See also ConnectionConfiguration::set_max_buffer_size.

Source

pub async fn id(&self) -> u32

Returns the ID of the connection.

The ID is set by the server. Can be handy for logging.

Source

pub async fn server_usage(&self) -> ServerUsage

Provides information about the the server-side resource consumption that is related to this Connection object.

Source

pub async fn statistics(&self) -> ConnectionStatistics

Returns some statistics snapshot about what was done with this connection so far.

Source

pub async fn reset_statistics(&self)

Reset the counters in the Connection’s statistic object.

Source

pub async fn set_application<S>(&self, application: S)
where S: AsRef<str>,

Sets client information into a session variable on the server.

Example:

connection.set_application("MyApp, built in rust").await;
Source

pub async fn set_application_user<S>(&self, appl_user: S)
where S: AsRef<str>,

Sets client information into a session variable on the server.

Example:

connection.set_application_user("K2209657").await;
Source

pub async fn set_application_version<S>(&self, version: S)
where S: AsRef<str>,

Sets client information into a session variable on the server.

Example:

connection.set_application_version("5.3.23").await.unwrap();
Source

pub async fn set_application_source<S>(&self, source: S)
where S: AsRef<str>,

Sets client information into a session variable on the server.

Example:

connection.set_application_source("update_customer.rs").await.unwrap();
Source

pub fn get_resource_manager(&self) -> Box<dyn ResourceManager>

Returns an implementation of dist_tx_async::rm::ResourceManager that is based on this connection.

Source

pub async fn execute_with_debuginfo<S>( &mut self, stmt: S, module: S, line: u32, ) -> Result<HdbResponse, HdbError>
where S: AsRef<str>,

Tools like debuggers can provide additional information while stepping through a source.

§Errors

Several variants of HdbError can occur.

Source

pub async fn get_database_name(&self) -> String

(MDC) Database name.

Source

pub async fn get_system_id(&self) -> String

The system id is set by the server with the SAPSYSTEMNAME of the connected instance (for tracing and supportability purposes).

Source

pub async fn client_info(&self) -> Vec<(String, String)>

Returns the information that is given to the server as client context.

Source

pub async fn connect_string(&self) -> String

Returns a connect url (excluding the password) that reflects the options that were used to establish this connection.

Source

pub async fn get_full_version_string(&self) -> String

HANA Full version string.

§Errors

Errors are unlikely to occur.

  • HdbErr::Impl if the version string was not provided by the database server.
  • HdbError::Poison if the shared mutex of the inner connection object is poisened.
Source

pub async fn is_broken(&self) -> bool

Returns true if the connection object lost its TCP connection.

Trait Implementations§

Source§

impl Clone for Connection

Source§

fn clone(&self) -> Connection

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Connection

Source§

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

Formats the value using the given formatter. 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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> IntoCollection<T> for T

Source§

fn into_collection<A>(self) -> SmallVec<A>
where A: Array<Item = T>,

Converts self into a collection.
Source§

fn mapped<U, F, A>(self, f: F) -> SmallVec<A>
where F: FnMut(T) -> U, A: Array<Item = U>,

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> Paint for T
where T: ?Sized,

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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<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
Source§

impl<T> ErasedDestructor for T
where T: 'static,