mirror of
https://github.com/isar/rusqlite.git
synced 2024-11-22 16:29:20 +08:00
adding ability to work with sqlite compiled with -DSQLITE_OMIT_DECLTYPE
fix #751
This commit is contained in:
parent
8cdfaf36ae
commit
d16748ac9f
@ -59,6 +59,7 @@ in_gecko = ["modern_sqlite", "libsqlite3-sys/in_gecko"]
|
||||
bundled-windows = ["libsqlite3-sys/bundled-windows"]
|
||||
# Build bundled sqlite with -fsanitize=address
|
||||
with-asan = ["libsqlite3-sys/with-asan"]
|
||||
column_decltype = []
|
||||
|
||||
# Helper feature for enabling both `bundled` and most non-build-related optional
|
||||
# features or dependencies. This is useful for running tests / clippy / etc. New
|
||||
@ -71,6 +72,7 @@ bundled-full = [
|
||||
"bundled",
|
||||
"chrono",
|
||||
"collation",
|
||||
"column_decltype",
|
||||
"csvtab",
|
||||
"extra_check",
|
||||
"functions",
|
||||
@ -134,7 +136,7 @@ name = "cache"
|
||||
harness = false
|
||||
|
||||
[package.metadata.docs.rs]
|
||||
features = [ "backup", "blob", "chrono", "collation", "functions", "limits", "load_extension", "serde_json", "trace", "url", "vtab", "window", "modern_sqlite" ]
|
||||
features = [ "backup", "blob", "chrono", "collation", "functions", "limits", "load_extension", "serde_json", "trace", "url", "vtab", "window", "modern_sqlite", "column_decltype" ]
|
||||
all-features = false
|
||||
no-default-features = true
|
||||
default-target = "x86_64-unknown-linux-gnu"
|
||||
|
@ -86,6 +86,7 @@ impl Statement<'_> {
|
||||
}
|
||||
|
||||
/// Returns a slice describing the columns of the result of the query.
|
||||
#[cfg(feature = "column_decltype")]
|
||||
pub fn columns(&self) -> Vec<Column> {
|
||||
let n = self.column_count();
|
||||
let mut cols = Vec::with_capacity(n as usize);
|
||||
@ -123,6 +124,7 @@ impl<'stmt> Rows<'stmt> {
|
||||
}
|
||||
|
||||
/// Returns a slice describing the columns of the Rows.
|
||||
#[cfg(feature = "column_decltype")]
|
||||
pub fn columns(&self) -> Option<Vec<Column>> {
|
||||
self.stmt.map(Statement::columns)
|
||||
}
|
||||
@ -150,6 +152,7 @@ impl<'stmt> Row<'stmt> {
|
||||
}
|
||||
|
||||
/// Returns a slice describing the columns of the Row.
|
||||
#[cfg(feature = "column_decltype")]
|
||||
pub fn columns(&self) -> Vec<Column> {
|
||||
self.stmt.columns()
|
||||
}
|
||||
@ -157,11 +160,13 @@ impl<'stmt> Row<'stmt> {
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::Column;
|
||||
use crate::Connection;
|
||||
|
||||
#[test]
|
||||
#[cfg(feature = "column_decltype")]
|
||||
fn test_columns() {
|
||||
use super::Column;
|
||||
|
||||
let db = Connection::open_in_memory().unwrap();
|
||||
let query = db.prepare("SELECT * FROM sqlite_master").unwrap();
|
||||
let columns = query.columns();
|
||||
|
@ -63,6 +63,7 @@ impl RawStatement {
|
||||
unsafe { ffi::sqlite3_column_type(self.ptr, idx as c_int) }
|
||||
}
|
||||
|
||||
#[cfg(feature = "column_decltype")]
|
||||
pub fn column_decltype(&self, idx: usize) -> Option<&CStr> {
|
||||
unsafe {
|
||||
let decltype = ffi::sqlite3_column_decltype(self.ptr, idx as c_int);
|
||||
|
Loading…
Reference in New Issue
Block a user