Skip to main content

Session

Struct Session 

Source
pub struct Session {
    pub database: String,
    pub user: String,
    /* private fields */
}
Expand description

Session state for a database connection

Fields§

§database: String

Database name

§user: String

User name

Implementations§

Source§

impl Session

Source

pub fn new(database: String, user: String, db: SharedDatabase) -> Self

Create a new session with a shared database

This constructor is used for wire protocol connections where multiple connections to the same database should share data.

Source

pub fn new_standalone(database: String, user: String) -> Self

Create a new standalone session with its own isolated database

This constructor is used for HTTP API requests and other stateless operations where data isolation between requests is acceptable.

Source

pub fn in_transaction(&self) -> bool

Check if this session is currently in a transaction

Source

pub fn shared_database(&self) -> &SharedDatabase

Get the shared database handle

Source

pub fn with_cache( database: String, user: String, db: SharedDatabase, cache: Arc<PreparedStatementCache>, ) -> Self

Create a new session with a shared statement cache

Source

pub fn prepare(&self, sql: &str) -> Result<Arc<PreparedStatement>>

Prepare a SQL statement for repeated execution

The statement is parsed once and cached. Subsequent calls with the same SQL will return the cached prepared statement without re-parsing.

§Example
let stmt = session.prepare("SELECT * FROM users WHERE id = ?")?;
let result = session.execute_prepared(&stmt, &[SqlValue::Integer(1)]).await?;
Source

pub async fn execute_prepared( &mut self, stmt: &PreparedStatement, params: &[SqlValue], ) -> Result<ExecutionResult>

Execute a prepared statement with parameters

Binds the provided parameters to the prepared statement and executes it. This avoids the parsing overhead of the original SQL.

Source

pub async fn execute(&mut self, sql: &str) -> Result<ExecutionResult>

Execute a SQL query with auto-caching

This method automatically caches parsed statements for performance. For repeated queries, use prepare() + execute_prepared() for best performance.

Source

pub async fn execute_with_params( &mut self, sql: &str, params: &[SqlValue], ) -> Result<ExecutionResult>

Execute a SQL query with parameters (convenience method)

Combines prepare + execute_prepared in one call.

Source

pub fn cache_stats(&self) -> PreparedStatementCacheStats

Get prepared statement cache statistics

Source

pub fn clear_cache(&self)

Clear the prepared statement cache

Source

pub async fn begin_transaction(&mut self) -> Result<ExecutionResult>

Begin a transaction

Starts a new transaction for this session. While in a transaction:

  • Changes are tracked for potential rollback
  • The storage layer manages transaction state
Source

pub async fn commit(&mut self) -> Result<ExecutionResult>

Commit the current transaction

Commits all changes made during this transaction. After commit, changes are permanent and visible to all sessions.

Source

pub async fn rollback(&mut self) -> Result<ExecutionResult>

Rollback the current transaction

Discards all changes made during this transaction. The database state is restored to what it was before BEGIN.

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

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<A, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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> 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> MaybeSend for T
where T: Send,

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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<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<G1, G2> Within<G2> for G1
where G2: Contains<G1>,

Source§

fn is_within(&self, b: &G2) -> bool