[darwinbuild-changes] [701] branches/PR-7489777/darwinup

source_changes at macosforge.org source_changes at macosforge.org
Wed Feb 10 10:48:44 PST 2010


Revision: 701
          http://trac.macosforge.org/projects/darwinbuild/changeset/701
Author:   wsiegrist at apple.com
Date:     2010-02-10 10:48:44 -0800 (Wed, 10 Feb 2010)
Log Message:
-----------
Prepare and cache transaction statements since they are used often

Modified Paths:
--------------
    branches/PR-7489777/darwinup/Database.cpp
    branches/PR-7489777/darwinup/Database.h

Modified: branches/PR-7489777/darwinup/Database.cpp
===================================================================
--- branches/PR-7489777/darwinup/Database.cpp	2010-02-09 23:43:11 UTC (rev 700)
+++ branches/PR-7489777/darwinup/Database.cpp	2010-02-10 18:48:44 UTC (rev 701)
@@ -79,6 +79,11 @@
 		delete m_tables[i];
 	}
 	this->destroy_cache();
+	
+	sqlite3_finalize(m_begin_transaction);
+	sqlite3_finalize(m_rollback_transaction);
+	sqlite3_finalize(m_commit_transaction);
+
 	free(m_tables);
 	free(m_path);
 	free(m_error);
@@ -144,7 +149,7 @@
 }
 
 int Database::connect() {
-	int res = 0;
+	int res = SQLITE_OK;
 	this->init_schema();
 	res = sqlite3_open(m_path, &m_db);
 	if (res) {
@@ -156,7 +161,16 @@
 	sqlite3_trace(m_db, dbtrace, NULL);
 	if (this->is_empty()) {
 		assert(this->create_tables() == 0);
-	}	
+	}
+	
+	// prepare transaction statements
+	if (res == SQLITE_OK) res = sqlite3_prepare_v2(m_db, "BEGIN TRANSACTION", 18,
+												   &m_begin_transaction, NULL);
+	if (res == SQLITE_OK) res = sqlite3_prepare_v2(m_db, "ROLLBACK TRANSACTION", 21,
+												   &m_rollback_transaction, NULL);
+	if (res == SQLITE_OK) res = sqlite3_prepare_v2(m_db, "COMMIT TRANSACTION", 19,
+												   &m_commit_transaction, NULL);
+	
 	return res;	
 }
 
@@ -515,14 +529,14 @@
 
 
 int Database::begin_transaction() {
-	return this->sql_once("BEGIN TRANSACTION");
+	return this->execute(m_begin_transaction);
 }
 
 int Database::rollback_transaction() {
-	return this->sql_once("ROLLBACK TRANSACTION");
+	return this->execute(m_rollback_transaction);
 }
 
 int Database::commit_transaction() {
-	return this->sql_once("COMMIT TRANSACTION");
+	return this->execute(m_commit_transaction);
 }
 

Modified: branches/PR-7489777/darwinup/Database.h
===================================================================
--- branches/PR-7489777/darwinup/Database.h	2010-02-09 23:43:11 UTC (rev 700)
+++ branches/PR-7489777/darwinup/Database.h	2010-02-10 18:48:44 UTC (rev 701)
@@ -128,6 +128,10 @@
 
 	cache_t*         m_statement_cache;
 	
+	sqlite3_stmt*    m_begin_transaction;
+	sqlite3_stmt*    m_rollback_transaction;
+	sqlite3_stmt*    m_commit_transaction;
+	
 	char*            m_error;
 	size_t           m_error_size;
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/darwinbuild-changes/attachments/20100210/3106767e/attachment.html>


More information about the darwinbuild-changes mailing list