use clickhouse_rs::{Block, Pool}; use std::error::Error; #[tokio::main] async fn main() -> Result<(), Box> { let ddl = r" CREATE TABLE IF NOT EXISTS payment ( customer_id UInt32, amount UInt32, account_name Nullable(FixedString(3)) ) Engine=Memory"; let block = Block::new() .column("customer_id", vec![1_u32, 3, 5, 7, 9]) .column("amount", vec![2_u32, 4, 6, 8, 10]) .column("account_name", vec![Some("foo"), None, None, None, Some("bar")]); let pool = Pool::new(database_url); let mut client = pool.get_handle().await?; client.execute(ddl).await?; client.insert("payment", block).await?; let block = client.query("SELECT * FROM payment").fetch_all().await?; for row in block.rows() { let id: u32 = row.get("customer_id")?; let amount: u32 = row.get("amount")?; let name: Option<&str> = row.get("account_name")?; println!("Found payment {}: {} {:?}", id, amount, name); } Ok(()) }