r2d2-odbc-api

[ODBC] adapter for [r2d2] connection pool with custom Pooling.


crates.io docs.rs Minimum Rust Version

License

This project is licensed under either Apache License, Version 2.0, zlib License, or MIT License, at your option.

Example

```rust

extern crate anyhow; extern crate odbcapi; extern crate r2d2; extern crate r2d2odbc_api;

use anyhow::Error; use odbcapi::*; use r2d2odbc_api::ODBCConnectionManager; use std::str; use std::thread;

fn main() -> Result<(), Error> { let maxpoolsize = 10; let manager = ODBCConnectionManager::new("DSN=PostgreSQL", maxpoolsize); let pool = r2d2::Pool::builder() .maxsize(maxpool_size) .build(manager) .unwrap();

let mut children = vec![];
for i in 0..10i32 {
    let pool = pool.clone();
    children.push(thread::spawn(move || {
        let pool_conn = pool.get().unwrap();

        if let Some(cursor) = pool_conn.execute("SELECT version()", ()).unwrap() {
            let mut buffers =
                buffers::TextRowSet::for_cursor(5000, &cursor, Some(4096)).unwrap();
            let mut row_set_cursor = cursor.bind_buffer(&mut buffers).unwrap();

            while let Some(batch) = row_set_cursor.fetch().unwrap() {
                if let Some(val) = batch.at(0, 0) {
                    println!("THREAD {} {}", i, str::from_utf8(val).unwrap());
                }
            }
        };
    }));
}

for child in children {
    let _ = child.join();
}

Ok(())

}

```