faucet_source_oracle/lib.rs
1#![cfg_attr(docsrs, feature(doc_cfg))]
2
3//! # faucet-source-oracle
4//!
5//! Oracle Database query source for the
6//! [`faucet-stream`](https://crates.io/crates/faucet-stream) ecosystem, built on
7//! the [`oracle`](https://crates.io/crates/oracle) driver (ODPI-C).
8//!
9//! Runs parameterized SQL, streams rows as JSON pages (the fetch array size is
10//! the `batch_size`), supports incremental replication via a bookmark column,
11//! PK-range sharding for clustered execution, and `discover()` over the data
12//! dictionary. `NUMBER` values are emitted without precision loss.
13//!
14//! **Runtime requirement:** Oracle Instant Client must be installed where
15//! ODPI-C can load it.
16//!
17//! ```no_run
18//! # use faucet_source_oracle::{OracleConnectionConfig, OracleSource, OracleSourceConfig};
19//! # async fn run() -> Result<(), faucet_core::FaucetError> {
20//! let conn = OracleConnectionConfig::new("localhost", 1521, "FREEPDB1", "app", "secret");
21//! let source = OracleSource::new(OracleSourceConfig::new(conn, "SELECT * FROM ORDERS")).await?;
22//! # let _ = source;
23//! # Ok(())
24//! # }
25//! ```
26
27mod config;
28mod descriptor;
29mod query;
30mod stream;
31
32pub use config::{BOOKMARK_TOKEN, OracleReplication, OracleSourceConfig, ShardConfig};
33pub use descriptor::DESCRIPTOR;
34pub use faucet_common_oracle::{OracleConnectionConfig, OracleTls};
35pub use stream::OracleSource;