test_coalesce/
test_coalesce.rs

1//! Test COALESCE function support
2
3use qail_core::parse;
4use qail_core::transpiler::ToSql;
5
6fn main() {
7    println!("=== Testing COALESCE Function ===\n");
8    
9    // Test 1: COALESCE in UPDATE SET
10    let query1 = "set users values name = coalesce(:name, name) where id = :id";
11    println!("Query 1: {}", query1);
12    match parse(query1) {
13        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
14        Err(e) => println!("  Parse error: {:?}\n", e),
15    }
16    
17    // Test 2: COALESCE in SELECT
18    let query2 = "get users fields coalesce(name, 'Unknown') as display_name";
19    println!("Query 2: {}", query2);
20    match parse(query2) {
21        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
22        Err(e) => println!("  Parse error: {:?}\n", e),
23    }
24    
25    // Test 3: Multiple COALESCE args
26    let query3 = "get users fields coalesce(nickname, name, email) as display";
27    println!("Query 3: {}", query3);
28    match parse(query3) {
29        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
30        Err(e) => println!("  Parse error: {:?}\n", e),
31    }
32    
33    // Test 4: NULLIF function
34    let query4 = "get users fields nullif(status, 'inactive') as active_status";
35    println!("Query 4: {}", query4);
36    match parse(query4) {
37        Ok(cmd) => println!("  SQL: {}\n", cmd.to_sql()),
38        Err(e) => println!("  Parse error: {:?}\n", e),
39    }
40}