Skip to content

Commit 7ba9db9

Browse files
committed
Check for statement close errors in execute
1 parent d674b8a commit 7ba9db9

1 file changed

Lines changed: 17 additions & 5 deletions

File tree

src/lib.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -853,7 +853,10 @@ impl Connection {
853853
///
854854
/// On success, returns the number of rows modified or 0 if not applicable.
855855
pub fn execute(&self, query: &str, params: &[&ToSql]) -> Result<uint> {
856-
self.prepare(query).and_then(|stmt| stmt.execute(params))
856+
let stmt = try!(self.prepare(query));
857+
let out = try!(stmt.execute(params));
858+
try!(stmt.finish());
859+
Ok(out)
857860
}
858861

859862
/// Execute a sequence of SQL statements.
@@ -999,7 +1002,10 @@ impl<'conn> Transaction<'conn> {
9991002

10001003
/// Like `Connection::execute`.
10011004
pub fn execute(&self, query: &str, params: &[&ToSql]) -> Result<uint> {
1002-
self.prepare(query).and_then(|s| s.execute(params))
1005+
let stmt = try!(self.prepare(query));
1006+
let out = try!(stmt.execute(params));
1007+
try!(stmt.finish());
1008+
Ok(out)
10031009
}
10041010

10051011
/// Like `Connection::batch_execute`.
@@ -1680,9 +1686,7 @@ pub trait GenericConnection {
16801686
fn prepare<'a>(&'a self, query: &str) -> Result<Statement<'a>>;
16811687

16821688
/// Like `Connection::execute`.
1683-
fn execute(&self, query: &str, params: &[&ToSql]) -> Result<uint> {
1684-
self.prepare(query).and_then(|s| s.execute(params))
1685-
}
1689+
fn execute(&self, query: &str, params: &[&ToSql]) -> Result<uint>;
16861690

16871691
/// Like `Connection::prepare_copy_in`.
16881692
fn prepare_copy_in<'a>(&'a self, table: &str, columns: &[&str])
@@ -1700,6 +1704,10 @@ impl GenericConnection for Connection {
17001704
self.prepare(query)
17011705
}
17021706

1707+
fn execute(&self, query: &str, params: &[&ToSql]) -> Result<uint> {
1708+
self.execute(query, params)
1709+
}
1710+
17031711
fn transaction<'a>(&'a self) -> Result<Transaction<'a>> {
17041712
self.transaction()
17051713
}
@@ -1719,6 +1727,10 @@ impl<'a> GenericConnection for Transaction<'a> {
17191727
self.prepare(query)
17201728
}
17211729

1730+
fn execute(&self, query: &str, params: &[&ToSql]) -> Result<uint> {
1731+
self.execute(query, params)
1732+
}
1733+
17221734
fn transaction<'a>(&'a self) -> Result<Transaction<'a>> {
17231735
self.transaction()
17241736
}

0 commit comments

Comments
 (0)