Skip to main content

SqlConn

Trait SqlConn 

Source
pub trait SqlConn {
    // Required methods
    fn dialect(&self) -> Dialect;
    fn execute_batch(&self, sql: &str) -> Result<(), SqlError>;
    fn execute(&self, sql: &str, params: &[SqlValue]) -> Result<usize, SqlError>;
    fn query(
        &self,
        sql: &str,
        params: &[SqlValue],
        f: &mut dyn FnMut(&dyn SqlRow) -> Result<(), SqlError>,
    ) -> Result<(), SqlError>;
    fn query_named(
        &self,
        sql: &str,
        params: &[(&str, SqlValue)],
        f: &mut dyn FnMut(&dyn SqlRow) -> Result<(), SqlError>,
    ) -> Result<(), SqlError>;
    fn max_variables(&self) -> usize;
    fn column_count(&self, sql: &str) -> Result<usize, SqlError>;

    // Provided methods
    fn use_schema(&self, schema: &str) -> Result<(), SqlError> { ... }
    fn query_cached(
        &self,
        sql: &str,
        params: &[SqlValue],
        f: &mut dyn FnMut(&dyn SqlRow) -> Result<(), SqlError>,
    ) -> Result<(), SqlError> { ... }
    fn execute_cached(
        &self,
        sql: &str,
        params: &[SqlValue],
    ) -> Result<usize, SqlError> { ... }
}
Expand description

The SQL operations the engine needs. Positional parameters are ?; named parameters ($name, used by the query builder) go through SqlConn::query_named.

Required Methods§

Source

fn dialect(&self) -> Dialect

Source

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

Run statements with no parameters and no results.

Source

fn execute(&self, sql: &str, params: &[SqlValue]) -> Result<usize, SqlError>

Run one statement; returns the number of rows changed.

Source

fn query( &self, sql: &str, params: &[SqlValue], f: &mut dyn FnMut(&dyn SqlRow) -> Result<(), SqlError>, ) -> Result<(), SqlError>

Run a query, calling f for every row in order. f returning an error stops the scan and propagates it.

Source

fn query_named( &self, sql: &str, params: &[(&str, SqlValue)], f: &mut dyn FnMut(&dyn SqlRow) -> Result<(), SqlError>, ) -> Result<(), SqlError>

As SqlConn::query, with named parameters ($name -> value).

Source

fn max_variables(&self) -> usize

The most bound parameters one statement may take.

Source

fn column_count(&self, sql: &str) -> Result<usize, SqlError>

Number of result columns of sql (prepared, not run).

Provided Methods§

Source

fn use_schema(&self, schema: &str) -> Result<(), SqlError>

Resolve unqualified table names in schema (DuckDB’s search path; SQLite has no schemas and never calls this).

Source

fn query_cached( &self, sql: &str, params: &[SqlValue], f: &mut dyn FnMut(&dyn SqlRow) -> Result<(), SqlError>, ) -> Result<(), SqlError>

As SqlConn::query, but the connection may keep the statement prepared for reuse. Only for a single-table statement on the store’s own bookkeeping tables in which every value that varies is a bound parameter: on DuckDB 1.5.x a reused plan keeps the statistics it was planned with (duckdb/duckdb#24696; joins: #24182), so a literal, or a join, can keep matching nothing after rows arrive.

Source

fn execute_cached( &self, sql: &str, params: &[SqlValue], ) -> Result<usize, SqlError>

As SqlConn::execute, cached under the rules of SqlConn::query_cached.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§