From 3fb92c470f67162617704ad897cf90f73a18ac00 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 18 Mar 2013 14:17:42 +0200 Subject: Add separate exception for SQLite forced rollbacks --- odb/sqlite/error.cxx | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'odb/sqlite/error.cxx') diff --git a/odb/sqlite/error.cxx b/odb/sqlite/error.cxx index 74822d3..6107427 100644 --- a/odb/sqlite/error.cxx +++ b/odb/sqlite/error.cxx @@ -47,6 +47,15 @@ namespace odb m = "SQLite API misuse"; break; } +#ifdef SQLITE_ABORT_ROLLBACK + case SQLITE_ABORT: + { + if (ee == SQLITE_ABORT_ROLLBACK) + throw forced_rollback (); + + break; + } +#endif case SQLITE_LOCKED: { #ifdef LIBODB_SQLITE_HAVE_UNLOCK_NOTIFY @@ -65,16 +74,15 @@ namespace odb if (e != SQLITE_IOERR || ee == SQLITE_IOERR_BLOCKED) throw timeout (); #endif - - // Fall throught. - } - default: - { - m = sqlite3_errmsg (h); break; } + default: + break; } + if (m.empty ()) + m = sqlite3_errmsg (h); + throw database_exception (e, ee, m); } } -- cgit v1.1