From eb2aa66bfe1268cbe8bba4069357f822580ee6fc Mon Sep 17 00:00:00 2001 From: Phil Longstaff Date: Fri, 13 Mar 2009 16:33:19 +0000 Subject: [PATCH] Implement BEGIN/COMMIT/ROLLBACK for transaction support. Provides a *huge* performance improvement when saving to an sqlite3 file. git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@17993 57a11ea4-9604-0410-9ed3-97b8803252fd --- src/backend/dbi/gnc-backend-dbi.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/backend/dbi/gnc-backend-dbi.c b/src/backend/dbi/gnc-backend-dbi.c index 190c0e185b..3b4a91d010 100644 --- a/src/backend/dbi/gnc-backend-dbi.c +++ b/src/backend/dbi/gnc-backend-dbi.c @@ -1071,7 +1071,11 @@ conn_does_table_exist( GncSqlConnection* conn, const gchar* table_name ) static gboolean conn_begin_transaction( /*@ unused @*/ GncSqlConnection* conn ) { - //GncDbiSqlConnection* dbi_conn = (GncDbiSqlConnection*)conn; + GncDbiSqlConnection* dbi_conn = (GncDbiSqlConnection*)conn; + dbi_result result; + + result = dbi_conn_queryf( dbi_conn->conn, "BEGIN" ); + (void)dbi_result_free( result ); return TRUE; } @@ -1079,7 +1083,11 @@ conn_begin_transaction( /*@ unused @*/ GncSqlConnection* conn ) static gboolean conn_rollback_transaction( /*@ unused @*/ GncSqlConnection* conn ) { - //GncDbiSqlConnection* dbi_conn = (GncDbiSqlConnection*)conn; + GncDbiSqlConnection* dbi_conn = (GncDbiSqlConnection*)conn; + dbi_result result; + + result = dbi_conn_queryf( dbi_conn->conn, "ROLLBACK" ); + (void)dbi_result_free( result ); return TRUE; } @@ -1087,7 +1095,11 @@ conn_rollback_transaction( /*@ unused @*/ GncSqlConnection* conn ) static gboolean conn_commit_transaction( /*@ unused @*/ GncSqlConnection* conn ) { - //GncDbiSqlConnection* dbi_conn = (GncDbiSqlConnection*)conn; + GncDbiSqlConnection* dbi_conn = (GncDbiSqlConnection*)conn; + dbi_result result; + + result = dbi_conn_queryf( dbi_conn->conn, "COMMIT" ); + (void)dbi_result_free( result ); return TRUE; }