use qail_pg::PgDriver;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("╔═══════════════════════════════════════════════════════════╗");
println!("║ BATTLE TEST #9: The Stack Smash (Recursive JSON) 🧱 ║");
println!("╚═══════════════════════════════════════════════════════════╝\n");
let mut driver =
PgDriver::connect_with_password("localhost", 5432, "postgres", "postgres", "postgres")
.await?;
let depth = 5000;
println!(
"1️⃣ Asking Postgres for JSON nested {} levels deep...",
depth
);
let sql = format!(
"SELECT (repeat('{{\"a\":', {}) || '1' || repeat('}}', {}))::jsonb::text",
depth, depth
);
println!("2️⃣ Parsing response...");
let rows = driver.fetch_raw(&sql).await?;
if rows.is_empty() {
println!(" ❌ FAIL: No rows returned.");
return Err("No rows".into());
}
let json_str = rows[0].get_string(0);
match json_str {
Some(s) => {
if s.len() > depth {
println!(" ✅ PASS: Driver survived the stack depth!");
println!(" (Length received: {} chars)", s.len());
} else {
println!(" ⚠️ Received short string?");
}
}
None => {
println!(" ❌ FAIL: Could not parse response as string.");
return Err("Parse failed".into());
}
}
println!("\n ✅ PASS: No Stack Overflow, No Panic.");
Ok(())
}