From 23979669900d75bccefb5b4a825882d329a2bd9d Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Mon, 6 Sep 2010 14:37:33 +0200 Subject: some more places are handling SQLITE_BUSY correctly now, test9 still breaks under heavy load --- src/prepared_statement.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/prepared_statement.cpp b/src/prepared_statement.cpp index 674fbec..a63a75c 100644 --- a/src/prepared_statement.cpp +++ b/src/prepared_statement.cpp @@ -123,12 +123,12 @@ prepared_stmt::prepared_stmt( sqlite3 *db, string __sql ) : rc = sqlite3_prepare( db, _sql.c_str( ), -1, &_stmt, &tail ); #endif switch( rc ) { - case SQLITE_BUSY: - throw database_locked( ); - case SQLITE_OK: break; + case SQLITE_BUSY: + throw database_locked( ); + default: { ostringstream s; @@ -158,11 +158,20 @@ void prepared_stmt::reset( ) { int rc; assert( _stmt != NULL ); rc = sqlite3_reset( _stmt ); - if( rc != SQLITE_OK ) { - ostringstream s; - s << "sqlite3::prepared_stmt::reset error: " << sqlite3_errmsg( _db ); - string msg = s.str( ); - throw sql_error( msg, _sql ); + switch( rc ) { + case SQLITE_OK: + break; + + case SQLITE_BUSY: + throw database_locked( ); + + default: + { + ostringstream s; + s << "sqlite3::prepared_stmt::reset error: " << sqlite3_errmsg( _db ); + string msg = s.str( ); + throw sql_error( msg, _sql ); + } } } -- cgit v1.2.3-54-g00ecf