Skip to content

Commit 31353e7

Browse files
committed
Rust: Test more variants of postgres usage.
1 parent 9905cd6 commit 31353e7

File tree

1 file changed

+16
-5
lines changed
  • rust/ql/test/library-tests/frameworks/postgres

1 file changed

+16
-5
lines changed

rust/ql/test/library-tests/frameworks/postgres/main.rs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11

2-
32
fn main() -> Result<(), Box<dyn std::error::Error>> {
43
// Get input from CLI
54
let args: Vec<String> = std::env::args().collect();
@@ -18,19 +17,22 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
1817
)?;
1918

2019
let query = format!("INSERT INTO person (name, age) VALUES ('{}', '{}')", name, age);
20+
let query2 = "INSERT INTO person (id) VALUES ($1)";
2121

2222
conn.execute(query.as_str(), &[])?; // $ sql-sink
2323
conn.batch_execute(query.as_str())?; // $ sql-sink
2424

2525
conn.prepare(query.as_str())?; // $ sql-sink
26-
// conn.prepare_typed(query.as_str(), &[])?;
26+
conn.prepare_typed(query2, &[postgres::types::Type::INT4])?; // $ sql-sink
2727

2828
conn.query(query.as_str(), &[])?; // $ sql-sink
2929
conn.query_one(query.as_str(), &[])?; // $ sql-sink
3030
conn.query_opt(query.as_str(), &[])?; // $ sql-sink
31-
// conn.query_raw(query.as_str(), &[])?;
32-
// conn.query_typed(query.as_str(), &[])?;
33-
// conn.query_typed_raw(query.as_str(), &[])?;
31+
let params: Vec<i32> = vec![0];
32+
conn.query_raw(query.as_str(), params)?; // $ sql-sink
33+
conn.query_typed(query.as_str(), &[])?; // $ sql-sink
34+
let params: Vec<(i32, postgres::types::Type)> = vec![(0, postgres::types::Type::INT4)];
35+
conn.query_typed_raw(query2, params)?; // $ sql-sink
3436

3537
for row in &conn.query("SELECT id, name, age FROM person", &[])? { // $ sql-sink
3638
let id: i32 = row.get("id"); // $ database-read
@@ -39,5 +41,14 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
3941
println!("found person: {} {} {}", id, name, age);
4042
}
4143

44+
for message in &conn.simple_query("SELECT id, name, age FROM person")? { // $ MISSING: sql-sink
45+
if let postgres::SimpleQueryMessage::Row(row) = message {
46+
let id: i32 = row.get(0).unwrap().parse().unwrap(); // $ MISSING: database-read
47+
let name: &str = row.get(1).unwrap(); // $ MISSING: database-read
48+
let age: i32 = row.get(2).unwrap().parse().unwrap(); // $ MISSING: database-read
49+
println!("found person: {} {} {}", id, name, age);
50+
}
51+
}
52+
4253
Ok(())
4354
}

0 commit comments

Comments
 (0)