use crate::executor::Executor;
mod arguments;
mod column;
mod connection;
mod database;
mod error;
mod options;
mod query_result;
mod row;
pub mod statement;
mod transaction;
mod type_info;
pub mod types;
mod value;
pub use arguments::{OdbcArgumentValue, OdbcArguments};
pub use column::OdbcColumn;
pub use connection::OdbcConnection;
pub use database::Odbc;
pub use options::OdbcConnectOptions;
pub use query_result::OdbcQueryResult;
pub use row::OdbcRow;
pub use statement::{OdbcStatement, OdbcStatementMetadata};
pub use transaction::OdbcTransactionManager;
pub use type_info::{DataTypeExt, OdbcTypeInfo};
pub use value::{OdbcValue, OdbcValueRef};
pub type OdbcPool = crate::pool::Pool<Odbc>;
pub type OdbcPoolOptions = crate::pool::PoolOptions<Odbc>;
pub trait OdbcExecutor<'c>: Executor<'c, Database = Odbc> {}
impl<'c, T: Executor<'c, Database = Odbc>> OdbcExecutor<'c> for T {}
impl_into_arguments_for_arguments!(crate::odbc::OdbcArguments);
impl_executor_for_pool_connection!(Odbc, OdbcConnection, OdbcRow);
impl_executor_for_transaction!(Odbc, OdbcRow);
impl_column_index_for_row!(OdbcRow);
impl_column_index_for_statement!(OdbcStatement);
impl_acquire!(Odbc, OdbcConnection);
impl_into_maybe_pool!(Odbc, OdbcConnection);