mirror of
				https://github.com/isar/rusqlite.git
				synced 2025-11-04 16:28:55 +08:00 
			
		
		
		
	Merge pull request #752 from Dushistov/omit-decltype
adding ability to work with sqlite compiled with -DSQLITE_OMIT_DECLTYPE
This commit is contained in:
		@@ -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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user