aboutsummaryrefslogtreecommitdiff
path: root/odb/sqlite/transaction-impl.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'odb/sqlite/transaction-impl.cxx')
-rw-r--r--odb/sqlite/transaction-impl.cxx35
1 files changed, 28 insertions, 7 deletions
diff --git a/odb/sqlite/transaction-impl.cxx b/odb/sqlite/transaction-impl.cxx
index 772b274..b425ed8 100644
--- a/odb/sqlite/transaction-impl.cxx
+++ b/odb/sqlite/transaction-impl.cxx
@@ -14,12 +14,38 @@ namespace odb
namespace sqlite
{
transaction_impl::
+ transaction_impl (database_type& db, lock l)
+ : odb::transaction_impl (db), lock_ (l)
+ {
+ }
+
+ transaction_impl::
transaction_impl (connection_ptr c, lock l)
- : odb::transaction_impl (c->database (), *c), connection_ (c)
+ : odb::transaction_impl (c->database (), *c),
+ connection_ (c),
+ lock_ (l)
+ {
+ }
+
+ transaction_impl::
+ ~transaction_impl ()
+ {
+ }
+
+ void transaction_impl::
+ start ()
{
+ // Grab a connection if we don't already have one.
+ //
+ if (connection_ == 0)
+ {
+ connection_ = static_cast<database_type&> (database_).connection ();
+ odb::transaction_impl::connection_ = connection_.get ();
+ }
+
statement_cache& sc (connection_->statement_cache ());
- switch (l)
+ switch (lock_)
{
case deferred:
{
@@ -39,11 +65,6 @@ namespace odb
}
}
- transaction_impl::
- ~transaction_impl ()
- {
- }
-
void transaction_impl::
commit ()
{