use chdb_rust::arg::Arg;
use chdb_rust::format::OutputFormat;
use chdb_rust::session::SessionBuilder;
fn main() -> Result<(), chdb_rust::error::Error> {
println!("=== Stateful Session Examples ===\n");
let tmp_dir = std::env::temp_dir().join("chdb-example");
let session = SessionBuilder::new()
.with_data_path(tmp_dir)
.with_auto_cleanup(true) .build()?;
println!("1. Creating database and table...");
session.execute("CREATE DATABASE mydb; USE mydb", Some(&[Arg::MultiQuery]))?;
session.execute(
"CREATE TABLE users (id UInt64, name String, age UInt8) \
ENGINE = MergeTree() ORDER BY id",
None,
)?;
println!("2. Inserting data...");
session.execute(
"INSERT INTO users (id, name, age) VALUES (1, 'Alice', 30), (2, 'Bob', 25)",
None,
)?;
println!("3. Querying data...\n");
let result = session.execute(
"SELECT * FROM users",
Some(&[Arg::OutputFormat(OutputFormat::JSONEachRow)]),
)?;
println!("Users:");
println!("{}", result.data_utf8_lossy());
println!("4. Aggregated query:");
let result = session.execute(
"SELECT COUNT(*) AS total_users, AVG(age) AS avg_age FROM users",
Some(&[Arg::OutputFormat(OutputFormat::Pretty)]),
)?;
println!("{}", result.data_utf8_lossy());
Ok(())
}