pub struct AttachedReadConnection { /* private fields */ }Expand description
Guard holding a read connection with attached database(s)
Important: Call detach_all() before dropping to properly clean up attached database(s).
Without explicit cleanup, attached databases persist on the pooled connection until
it’s eventually closed. Derefs to SqliteConnection for executing queries.
Implementations§
Source§impl AttachedReadConnection
impl AttachedReadConnection
Sourcepub async fn detach_all(self) -> Result<()>
pub async fn detach_all(self) -> Result<()>
Explicitly detach all attached databases.
This method should be called before dropping the connection to ensure attached databases are properly cleaned up. Without calling this, attached databases may persist when the connection is returned to the pool.
Methods from Deref<Target = SqliteConnection>§
Sourcepub async fn serialize(
&mut self,
schema: Option<&str>,
) -> Result<SqliteOwnedBuf, Error>
pub async fn serialize( &mut self, schema: Option<&str>, ) -> Result<SqliteOwnedBuf, Error>
Serialize the given SQLite database schema using sqlite3_serialize().
The returned buffer is a SQLite managed allocation containing the equivalent data as writing the database to disk. It is freed on-drop.
To serialize the primary, unqualified schema (main), pass None for the schema name.
§Errors
Error::InvalidArgumentif the schema name contains a zero/NUL byte (\0).Error::Databaseif the schema does not exist or another error occurs.
Sourcepub async fn deserialize(
&mut self,
schema: Option<&str>,
data: SqliteOwnedBuf,
read_only: bool,
) -> Result<(), Error>
pub async fn deserialize( &mut self, schema: Option<&str>, data: SqliteOwnedBuf, read_only: bool, ) -> Result<(), Error>
Deserialize a SQLite database from a buffer into the specified schema using sqlite3_deserialize().
The given schema will be disconnected and re-connected as an in-memory database
backed by data, which should be the serialized form of a database previously returned
by a call to Self::serialize(), documented as being equivalent to
the contents of the database file on disk.
An error will be returned if a schema with the given name is not already attached.
You can use ATTACH ':memory' as "<schema name>" to create an empty schema first.
Pass None to deserialize to the primary, unqualified schema (main).
The SQLite connection will take ownership of data and will free it when the connection
is closed or the schema is detached (SQLITE_DESERIALIZE_FREEONCLOSE).
If read_only is true, the schema is opened as read-only (SQLITE_DESERIALIZE_READONLY).
If false, the schema is marked as resizable (SQLITE_DESERIALIZE_RESIZABLE).
If the database is in WAL mode, an error is returned.
See sqlite3_deserialize() for details.
§Errors
Error::InvalidArgumentif the schema name contains a zero/NUL byte (\0).Error::Databaseif an error occurs during deserialization.
Sourcepub async fn lock_handle(&mut self) -> Result<LockedSqliteHandle<'_>, Error>
pub async fn lock_handle(&mut self) -> Result<LockedSqliteHandle<'_>, Error>
Lock the SQLite database handle out from the worker thread so direct SQLite API calls can be made safely.
Returns an error if the worker thread crashed.
Trait Implementations§
Source§impl Debug for AttachedReadConnection
impl Debug for AttachedReadConnection
Source§impl Deref for AttachedReadConnection
impl Deref for AttachedReadConnection
Source§impl DerefMut for AttachedReadConnection
impl DerefMut for AttachedReadConnection
Auto Trait Implementations§
impl Freeze for AttachedReadConnection
impl !RefUnwindSafe for AttachedReadConnection
impl Send for AttachedReadConnection
impl Sync for AttachedReadConnection
impl Unpin for AttachedReadConnection
impl !UnwindSafe for AttachedReadConnection
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> 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>
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>
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