Skip to content

Commit 1397f9b

Browse files
committed
Add tests
1 parent 6006827 commit 1397f9b

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

crates/duckdb/src/lib.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1455,4 +1455,56 @@ mod test {
14551455

14561456
Ok(())
14571457
}
1458+
1459+
#[test]
1460+
fn test_prepare_multi_statement() -> Result<()> {
1461+
let db = checked_memory_handle();
1462+
1463+
{
1464+
let mut stmt =
1465+
db.prepare("CREATE TABLE test(x INTEGER); INSERT INTO test VALUES (42); SELECT x FROM test;")?;
1466+
let result: i32 = stmt.query_row([], |row| row.get(0))?;
1467+
assert_eq!(result, 42);
1468+
}
1469+
1470+
{
1471+
let mut stmt = db.prepare(
1472+
"CREATE TEMP TABLE temp_data(id INTEGER, value TEXT);
1473+
INSERT INTO temp_data VALUES (1, 'first'), (2, 'second');
1474+
SELECT COUNT(*) FROM temp_data;",
1475+
)?;
1476+
let count: i32 = stmt.query_row([], |row| row.get(0))?;
1477+
assert_eq!(count, 2);
1478+
}
1479+
1480+
Ok(())
1481+
}
1482+
1483+
#[test]
1484+
fn test_pivot_query() -> Result<()> {
1485+
let db = checked_memory_handle();
1486+
1487+
db.execute_batch(
1488+
"CREATE TABLE cities(city VARCHAR, year INTEGER, population INTEGER);
1489+
INSERT INTO cities VALUES
1490+
('Amsterdam', 2000, 1005),
1491+
('Amsterdam', 2010, 1065),
1492+
('Amsterdam', 2020, 1158),
1493+
('Berlin', 2000, 3382),
1494+
('Berlin', 2010, 3460),
1495+
('Berlin', 2020, 3576);",
1496+
)?;
1497+
1498+
// PIVOT queries internally expand to multiple statements
1499+
let mut stmt = db.prepare("PIVOT cities ON year USING sum(population);")?;
1500+
let mut rows = stmt.query([])?;
1501+
1502+
let mut row_count = 0;
1503+
while let Some(_row) = rows.next()? {
1504+
row_count += 1;
1505+
}
1506+
assert_eq!(row_count, 2);
1507+
1508+
Ok(())
1509+
}
14581510
}

0 commit comments

Comments
 (0)