r19739 - gnucash/trunk/src/backend/dbi - Bug 629238: Part 2: Extend locking table to SQLite3.
John Ralls
jralls at code.gnucash.org
Sun Oct 31 16:51:57 EDT 2010
Author: jralls
Date: 2010-10-31 16:51:57 -0400 (Sun, 31 Oct 2010)
New Revision: 19739
Trac: http://svn.gnucash.org/trac/changeset/19739
Modified:
gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
Log:
Bug 629238: Part 2: Extend locking table to SQLite3.
Modified: gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c
===================================================================
--- gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c 2010-10-31 20:31:27 UTC (rev 19738)
+++ gnucash/trunk/src/backend/dbi/gnc-backend-dbi.c 2010-10-31 20:51:57 UTC (rev 19739)
@@ -123,6 +123,9 @@
const GList* col_info_list );
static GSList* conn_get_table_list_pgsql( dbi_conn conn, const gchar* dbname );
static void append_pgsql_col_def( GString* ddl, GncSqlColumnInfo* info );
+static gboolean gnc_dbi_lock_database( QofBackend *qbe, gboolean ignore_lock );
+static void gnc_dbi_unlock( QofBackend *qbe );
+
static provider_functions_t provider_pgsql =
{
conn_create_table_ddl_pgsql,
@@ -259,8 +262,7 @@
static void
gnc_dbi_sqlite3_session_begin( QofBackend *qbe, QofSession *session,
- const gchar *book_id,
- /*@ unused @*/ gboolean ignore_lock,
+ const gchar *book_id, gboolean ignore_lock,
gboolean create_if_nonexistent )
{
GncDbiBackend *be = (GncDbiBackend*)qbe;
@@ -331,7 +333,6 @@
result = dbi_conn_connect( be->conn );
g_free( basename );
g_free( dirname );
-/* Need some better error handling here. In particular, need to emit a QOF_ERROR_LOCKED if the database is in use by another process. */
if ( result < 0 )
{
PERR( "Unable to connect to %s: %d\n", book_id, result );
@@ -340,6 +341,13 @@
return;
}
+ if ( !gnc_dbi_lock_database( qbe, ignore_lock ) )
+ {
+ qof_backend_set_error( qbe, ERR_BACKEND_LOCKED );
+ LEAVE( "Locked" );
+ return;
+ }
+
if ( be->sql_be.conn != NULL )
{
gnc_sql_connection_dispose( be->sql_be.conn );
More information about the gnucash-changes
mailing list