diff options
author | Andreas Baumann <Andreas.Baumann@eurospider.com> | 2010-09-06 14:37:33 +0200 |
---|---|---|
committer | Andreas Baumann <Andreas.Baumann@eurospider.com> | 2010-09-06 14:37:33 +0200 |
commit | 23979669900d75bccefb5b4a825882d329a2bd9d (patch) | |
tree | a8e9f2d14608e87569d902219a48970654eb9600 /src | |
parent | 1dcc640c490a6619eeba19a6bdb93c4ac8d5a6fc (diff) | |
download | sqlitexx-23979669900d75bccefb5b4a825882d329a2bd9d.tar.gz sqlitexx-23979669900d75bccefb5b4a825882d329a2bd9d.tar.bz2 |
some more places are handling SQLITE_BUSY correctly now, test9
still breaks under heavy load
Diffstat (limited to 'src')
-rw-r--r-- | src/prepared_statement.cpp | 25 |
1 files changed, 17 insertions, 8 deletions
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 ); + } } } |