1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//! ADBC (Arrow Database Connectivity) interface implementation.
//!
//! This module provides the ADBC-compatible interface for the exarrow-rs driver,
//! offering a high-level API for connecting to Exasol databases and executing queries.
//!
//! # v2.0.0 Breaking Changes
//!
//! - Connection now owns the transport directly
//! - `create_statement()` is now synchronous and returns a pure data container
//! - Use `execute_statement()` instead of `Statement::execute()`
//! - Use `Connection::prepare()` instead of `Statement::prepare()`
//!
//! # Architecture
//!
//! The ADBC interface is organized into four main components:
//! - `Driver` - Driver metadata and factory for creating databases
//! - `Database` - Database connection factory with connection string parsing
//! - `Connection` - Active database connection for executing queries
//! - `Statement` - SQL statement data container with parameter binding
//!
//! # Example
//!
//! ```no_run
//! use exarrow_rs::adbc::{Driver, Database, Connection};
//!
//! # async fn example() -> Result<(), Box<dyn std::error::Error>> {
//! // Create driver
//! let driver = Driver::new();
//!
//! // Open database
//! let database = driver.open("exasol://user:pass@localhost:8563")?;
//!
//! // Connect
//! let mut connection = database.connect().await?;
//!
//! // Execute query (new API)
//! let stmt = connection.create_statement("SELECT * FROM my_table");
//! let results = connection.execute_statement(&stmt).await?;
//!
//! // Or use convenience method
//! let results = connection.execute("SELECT * FROM my_table").await?;
//!
//! // Close connection
//! connection.close().await?;
//! # Ok(())
//! # }
//! ```
// Re-export commonly used types
pub use Connection;
pub use Session;
pub use Database;
pub use Driver;
pub use ;