Skip to content

Commit cf68afd

Browse files
committed
Bind doubles, compare parameters
1 parent 18d87e3 commit cf68afd

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

crates/core/src/sync_local.rs

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -501,8 +501,20 @@ impl<'a> PreparedPendingStatement<'a> {
501501
pub fn prepare(
502502
db: *mut sqlite::sqlite3,
503503
pending: &'a PendingStatement,
504-
) -> Result<Self, ResultCode> {
504+
) -> Result<Self, SQLiteError> {
505505
let stmt = db.prepare_v2(&pending.sql)?;
506+
if stmt.bind_parameter_count() as usize != pending.params.len() {
507+
return Err(SQLiteError(
508+
ResultCode::MISUSE,
509+
Some(format!(
510+
"Statement {} has {} parameters, but {} values were provided as sources.",
511+
&pending.sql,
512+
stmt.bind_parameter_count(),
513+
pending.params.len(),
514+
)),
515+
));
516+
}
517+
506518
// TODO: Compare number of variables / other validity checks?
507519

508520
Ok(Self {
@@ -534,8 +546,7 @@ impl<'a> PreparedPendingStatement<'a> {
534546
}
535547
Some(Value::Number(value)) => {
536548
if let Some(value) = value.as_f64() {
537-
// ??? there's no bind_double???
538-
self.stmt.bind_int64(i, value as i64)
549+
self.stmt.bind_double(i, value)
539550
} else if let Some(value) = value.as_u64() {
540551
self.stmt.bind_int64(i, value as i64)
541552
} else {

0 commit comments

Comments
 (0)