Skip to main content

Connection

Struct Connection 

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

A database connection holding schema metadata and execution/cache state.

Supports transactions (BEGIN/COMMIT/ROLLBACK) and savepoints (SAVEPOINT/RELEASE/ROLLBACK TO). The default runtime path uses pager/WAL/B-tree storage, while MemDatabase is retained as an execution image and limited compatibility fallback.

Implementations§

Source§

impl Connection

Source

pub fn open(path: impl Into<String>) -> Result<Self>

Open a connection.

Creates an empty in-memory database. Expression-only SELECT and table-backed DML (CREATE TABLE, INSERT, SELECT FROM, UPDATE, DELETE) are supported.

Source

pub fn open_schema_only(path: impl Into<String>) -> Result<Self>

Open a connection that loads only the database schema (table definitions, indexes, triggers, views) without reading any row data into the in-memory MemDatabase.

This is dramatically faster for large databases when the caller only needs schema metadata or will execute queries through pager-backed cursors (the default for file-backed databases).

Row data is still accessible through the pager’s B-tree cursor stack; only the MemDatabase compatibility image is left empty.

§Examples
let conn = Connection::open_schema_only("large.db")?;
// Schema is available, queries work through pager-backed cursors.
let rows = conn.query("SELECT count(*) FROM big_table")?;
Source

pub fn open_schema_only_with_env( path: impl Into<String>, env: ConnectionEnv, ) -> Result<Self>

Open a schema-only connection with an explicit runtime environment.

Behaves like open_schema_only but allows specifying a custom ConnectionEnv.

Source

pub fn open_with_env( path: impl Into<String>, env: ConnectionEnv, ) -> Result<Self>

Open a connection with an explicit runtime environment.

The supplied ConnectionEnv selects the process-global or custom runtime context whose per-database region this connection joins.

Source

pub fn path(&self) -> &str

Returns the configured database path.

Source

pub fn background_status(&self) -> Result<()>

Return the background-runtime health for this connection’s database.

Source

pub fn set_reject_mem_fallback(&self, reject: bool)

Enable parity-certification mode (bd-2ttd8.1).

When enabled, all VDBE cursor operations must route through the real Pager+BtreeCursor stack. The MemPageStore fallback is rejected, causing OpenRead/OpenWrite to fail if no pager transaction is available. Use this in tests to verify that the full storage stack is wired correctly.

Source

pub fn set_strict_mem_fallback_rejection(&self, strict: bool)

Enable strict non-VDBE fallback rejection for certifying runs.

When enabled together with reject_mem_fallback, dispatching to interpreted in-memory fallback paths (for example JOIN/GROUP BY materialization fallbacks) returns an error instead of silently continuing.

Source

pub fn pager_backend_kind(&self) -> &'static str

Returns the kind of pager backend in use (e.g. “memory”, “iouring”, or “unix”).

Source

pub fn validate_parity_cert_backend(&self) -> Result<(), String>

Validate that the pager backend is suitable for parity-certification.

When reject_mem_fallback is enabled, the pager SHOULD be file-backed (not :memory:) for meaningful parity testing. This method returns Err if parity-cert mode is active but the pager is memory-only.

Note: This is a diagnostic check, not an enforcement gate. In-memory pagers can still be used in parity-cert mode (they have a real SimplePager behind them), but file-backed pagers provide stronger guarantees about I/O path coverage.

Source

pub fn last_local_commit_seq(&self) -> Option<u64>

Returns the most recent commit sequence assigned to a successful COMMIT on this connection.

Returns None when this connection has not committed yet.

Source

pub fn current_concurrent_snapshot_seq(&self) -> Option<u64>

Returns the active concurrent transaction snapshot sequence observed at BEGIN CONCURRENT time for this connection.

Returns None when no concurrent transaction is active.

Source

pub fn root_cx(&self) -> &Cx

Returns a reference to the root capability context for this connection.

Source

pub fn trace_v2(&self, mask: TraceMask, callback: Option<TraceCallback>)

Register or clear sqlite3_trace_v2-compatible callbacks.

Passing Some(callback) enables callback delivery for the requested mask. Passing None clears any existing registration.

Source

pub fn close(self) -> Result<()>

Close the connection and perform pager/WAL shutdown steps.

On close:

  1. Roll back any active transaction.
  2. Run a passive checkpoint (WAL -> DB).
  3. Mark the connection as closed so Drop doesn’t repeat cleanup.
Source

pub fn close_in_place(&mut self) -> Result<()>

Close the connection in place while retaining the Connection value on error so callers can inspect or retry the handle.

Source

pub fn register_scalar_function<F>(&self, function: F)
where F: ScalarFunction + 'static,

Register a custom scalar function.

The function becomes available immediately for subsequent queries. Previously prepared statements are NOT affected — only new prepare() / query() / execute() calls see the new function.

Overwrites any existing function with the same (name, num_args) key.

Source

pub fn register_aggregate_function<F>(&self, function: F)
where F: AggregateFunction + 'static, F::State: 'static,

Register a custom aggregate function.

The function becomes available immediately for subsequent queries. Overwrites any existing function with the same (name, num_args) key.

Source

pub fn register_window_function<F>(&self, function: F)
where F: WindowFunction + 'static, F::State: 'static,

Register a custom window function.

The function becomes available immediately for subsequent queries. Overwrites any existing function with the same (name, num_args) key.

Source

pub fn register_module(&self, name: &str, factory: Box<dyn VtabModuleFactory>)

Register a virtual-table module factory under the given name.

Once registered, CREATE VIRTUAL TABLE t USING name(args) will invoke the factory’s create method to instantiate the vtab.

Source

pub fn register_rtree_geometry( &self, table_name: &str, geometry_name: &str, geometry: Box<dyn RtreeGeometry>, ) -> Result<()>

Register a custom geometry callback on a live SQL-created R-tree table.

Source

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

Prepare SQL into a statement.

Source

pub fn query(&self, sql: &str) -> Result<Vec<Row>>

Prepare and execute SQL as a query.

When sql contains multiple statements, only the result rows from the last statement are returned. Intermediate statement results are discarded. This matches common SQL driver semantics (last statement wins).

Source

pub fn query_with_params( &self, sql: &str, params: &[SqliteValue], ) -> Result<Vec<Row>>

Prepare and execute SQL as a query with bound SQL parameters.

Source

pub fn query_row(&self, sql: &str) -> Result<Row>

Prepare and execute SQL as a query, returning exactly one row.

Source

pub fn query_row_with_params( &self, sql: &str, params: &[SqliteValue], ) -> Result<Row>

Prepare and execute SQL as a query with bound SQL parameters, returning exactly one row.

Source

pub fn execute(&self, sql: &str) -> Result<usize>

Prepare and execute SQL, returning output/affected row count.

For DML (INSERT/UPDATE/DELETE) this returns the number of affected rows. For SELECT and other statement types it returns the number of result rows.

Source

pub fn execute_batch(&self, sql: &str) -> Result<()>

Execute zero or more SQL statements separated by semicolons.

Empty batches and batches containing only whitespace, semicolons, or SQL comments are treated as a no-op, matching SQLite batch semantics.

Source

pub fn execute_with_params( &self, sql: &str, params: &[SqliteValue], ) -> Result<usize>

Prepare and execute SQL with bound SQL parameters.

Source

pub fn execute_prepared(&self, stmt: &PreparedStatement<'_>) -> Result<usize>

Execute a prepared DML statement (INSERT/UPDATE/DELETE) with no parameters.

Source

pub fn execute_prepared_with_params( &self, stmt: &PreparedStatement<'_>, params: &[SqliteValue], ) -> Result<usize>

Execute a prepared DML statement (INSERT/UPDATE/DELETE) with bound parameters.

Source

pub fn in_transaction(&self) -> bool

Returns true if an explicit transaction is active.

Source

pub fn gc_enqueue_page(&self, pgno: PageNumber)

Enqueue a page for GC consideration after a version is published.

Called when a new version of a page is committed, making older versions potentially eligible for pruning.

Source

pub fn is_concurrent_transaction(&self) -> bool

Returns true if the current transaction was started with BEGIN CONCURRENT (or was promoted to concurrent mode via the fsqlite.concurrent_mode PRAGMA).

Source

pub fn is_concurrent_mode_default(&self) -> bool

Returns true if the connection-level concurrent-mode default is enabled (i.e. PRAGMA fsqlite.concurrent_mode = ON).

Source

pub fn has_concurrent_session(&self) -> bool

Returns true if there is an active MVCC concurrent session for this connection (bd-14zc / 5E.1).

Source

pub fn concurrent_writer_count(&self) -> usize

Returns the number of active concurrent writers across all connections sharing this registry (bd-14zc / 5E.1).

Source

pub fn ssi_decisions_snapshot(&self) -> Vec<SsiDecisionCard>

Returns a snapshot of retained SSI decision cards.

Source

pub fn query_ssi_decisions( &self, query: &SsiDecisionQuery, ) -> Vec<SsiDecisionCard>

Query SSI decision cards by transaction id, decision type, and/or time range.

Source

pub fn raptorq_repair_evidence_snapshot(&self) -> Vec<WalFecRepairEvidenceCard>

Returns a snapshot of retained RaptorQ repair evidence cards.

Source

pub fn query_raptorq_repair_evidence_cards( &self, query: &WalFecRepairEvidenceQuery, ) -> Vec<WalFecRepairEvidenceCard>

Query RaptorQ repair evidence cards by page/frame, severity bucket, and/or time range.

Source

pub fn pragma_state(&self) -> Ref<'_, ConnectionPragmaState>

Returns a reference to the connection-scoped PRAGMA state.

The harness uses this to verify that both engines received identical configuration (journal_mode, synchronous, cache_size, page_size, busy_timeout).

Source

pub fn register_differential_view_subscriber( &self, view_name: &str, sender: Sender<DifferentialEvent>, ) -> Result<u64>

Registers a connection-local differential subscriber for an existing view.

The subscriber receives a snapshot payload at the current committed CommitSeq(N) and will subsequently receive invalidation events beginning at N + 1 until table-level differential routing lands.

Source

pub fn unregister_differential_subscriber(&self, subscriber_id: u64) -> bool

Removes a previously registered differential subscriber.

Source

pub fn differential_subscribers(&self) -> Vec<DifferentialSubscriberStatus>

Returns a stable status snapshot of active differential subscribers.

Source

pub fn differential_subscriber_count(&self) -> usize

Returns the number of active differential subscribers.

Read the current schema cookie value.

Source

pub fn schema_generation(&self) -> u64

Source

pub fn compiled_cache_len(&self) -> usize

Number of entries in the compiled bytecode cache (bd-1dp9.6.7.2.2).

Source

pub fn change_counter(&self) -> u32

Read the current file change counter value.

Trait Implementations§

Source§

impl Debug for Connection

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Drop for Connection

Source§

fn drop(&mut self)

Executes the destructor for this type. 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> 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> Instrument for T

Source§

fn instrument(self, _span: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
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> 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> 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