[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