pub struct SpgConnection { /* private fields */ }Expand description
One sqlx connection backed by an in-process SPG.
inner: AsyncDatabase— writer path. Used for DDL / DML / transaction control and statements inside a transaction.- readonly statements run INLINE on the async executor
(v7.20 P3): per-statement snapshot via
clone_snapshot_inline(~0 µs Arc bump) + staticDatabase::*_on_snapshotcalls (~2 µs CPU). No spawn_blocking on the read path — profile_breakdown measured the 3× thread-hop round-trips at 15-48 µs against 2 µs of actual work.
Implementations§
Source§impl SpgConnection
impl SpgConnection
Sourcepub fn new(inner: AsyncDatabase) -> Self
pub fn new(inner: AsyncDatabase) -> Self
Build a connection from a ready AsyncDatabase. Called
internally by [SpgConnectOptions::connect] and by
[crate::SpgPool::connect_in_memory].
Sourcepub const fn engine(&self) -> &AsyncDatabase
pub const fn engine(&self) -> &AsyncDatabase
Borrow the underlying AsyncDatabase. Lets advanced
callers reach for the spg-embedded API directly.
Trait Implementations§
Source§impl Clone for SpgConnection
impl Clone for SpgConnection
Source§impl Connection for SpgConnection
impl Connection for SpgConnection
type Database = Spg
type Options = SpgConnectOptions
Source§fn close(self) -> BoxFuture<'static, Result<(), Error>>
fn close(self) -> BoxFuture<'static, Result<(), Error>>
Explicitly close this database connection. Read more
Source§fn ping(&mut self) -> BoxFuture<'_, Result<(), Error>>
fn ping(&mut self) -> BoxFuture<'_, Result<(), Error>>
Checks if a connection to the database is still valid.
Source§fn begin(
&mut self,
) -> BoxFuture<'_, Result<Transaction<'_, Self::Database>, Error>>where
Self: Sized,
fn begin(
&mut self,
) -> BoxFuture<'_, Result<Transaction<'_, Self::Database>, Error>>where
Self: Sized,
Begin a new transaction or establish a savepoint within the active transaction. Read more
Source§fn shrink_buffers(&mut self)
fn shrink_buffers(&mut self)
Restore any buffers in the connection to their default capacity, if possible. Read more
Source§fn begin_with(
&mut self,
statement: impl Into<Cow<'static, str>>,
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_, Self::Database>, Error>> + Send + '_>>where
Self: Sized,
fn begin_with(
&mut self,
statement: impl Into<Cow<'static, str>>,
) -> Pin<Box<dyn Future<Output = Result<Transaction<'_, Self::Database>, Error>> + Send + '_>>where
Self: Sized,
Begin a new transaction with a custom statement. Read more
Source§fn is_in_transaction(&self) -> bool
fn is_in_transaction(&self) -> bool
Returns
true if the connection is currently in a transaction. Read moreSource§fn transaction<'a, F, R, E>(
&'a mut self,
callback: F,
) -> Pin<Box<dyn Future<Output = Result<R, E>> + Send + 'a>>
fn transaction<'a, F, R, E>( &'a mut self, callback: F, ) -> Pin<Box<dyn Future<Output = Result<R, E>> + Send + 'a>>
Execute the function inside a transaction. Read more
Source§fn cached_statements_size(&self) -> usizewhere
Self::Database: HasStatementCache,
fn cached_statements_size(&self) -> usizewhere
Self::Database: HasStatementCache,
The number of statements currently cached in the connection.
Source§fn clear_cached_statements(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>where
Self::Database: HasStatementCache,
fn clear_cached_statements(
&mut self,
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + '_>>where
Self::Database: HasStatementCache,
Removes all statements from the cache, closing them on the server if
needed.
Source§impl Debug for SpgConnection
impl Debug for SpgConnection
Source§impl<'c> Executor<'c> for &'c mut SpgConnection
impl<'c> Executor<'c> for &'c mut SpgConnection
type Database = Spg
Source§fn fetch_many<'e, 'q: 'e, E>(
self,
query: E,
) -> BoxStream<'e, Result<Either<<Self::Database as Database>::QueryResult, SpgRow>, Error>>
fn fetch_many<'e, 'q: 'e, E>( self, query: E, ) -> BoxStream<'e, Result<Either<<Self::Database as Database>::QueryResult, SpgRow>, Error>>
Execute multiple queries and return the generated results as a stream
from each query, in a stream.
Source§fn fetch_optional<'e, 'q: 'e, E>(
self,
query: E,
) -> BoxFuture<'e, Result<Option<SpgRow>, Error>>
fn fetch_optional<'e, 'q: 'e, E>( self, query: E, ) -> BoxFuture<'e, Result<Option<SpgRow>, Error>>
Execute the query and returns at most one row.
Source§fn prepare_with<'e, 'q: 'e>(
self,
sql: &'q str,
_parameters: &'e [<Self::Database as Database>::TypeInfo],
) -> BoxFuture<'e, Result<<Self::Database as Database>::Statement<'q>, Error>>where
'c: 'e,
fn prepare_with<'e, 'q: 'e>(
self,
sql: &'q str,
_parameters: &'e [<Self::Database as Database>::TypeInfo],
) -> BoxFuture<'e, Result<<Self::Database as Database>::Statement<'q>, Error>>where
'c: 'e,
Prepare the SQL query, with parameter type information, to inspect the
type information about its parameters and results. Read more
Source§fn execute<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
fn execute<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
Execute the query and return the total number of rows affected.
Source§fn execute_many<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
fn execute_many<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::QueryResult, Error>> + Send + 'e>>
Execute multiple queries and return the rows affected from each query, in a stream.
Source§fn fetch<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::Row, Error>> + Send + 'e>>
fn fetch<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Stream<Item = Result<<Self::Database as Database>::Row, Error>> + Send + 'e>>
Execute the query and return the generated results as a stream.
Source§fn fetch_all<'e, 'q, E>(
self,
query: E,
) -> Pin<Box<dyn Future<Output = Result<Vec<<Self::Database as Database>::Row>, Error>> + Send + 'e>>
fn fetch_all<'e, 'q, E>( self, query: E, ) -> Pin<Box<dyn Future<Output = Result<Vec<<Self::Database as Database>::Row>, Error>> + Send + 'e>>
Execute the query and return all the generated results, collected into a
Vec.Auto Trait Implementations§
impl !RefUnwindSafe for SpgConnection
impl !UnwindSafe for SpgConnection
impl Freeze for SpgConnection
impl Send for SpgConnection
impl Sync for SpgConnection
impl Unpin for SpgConnection
impl UnsafeUnpin for SpgConnection
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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