aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-08-28 16:07:38 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-08-28 16:07:38 +0200
commitb9764c3eb6626fb96deb0901b9ee63c2246ff52e (patch)
treeaf583f5fcfa512638f47c153cc54d827936766a1
parent7392db256c1587ff8fe87d95c5ae5c10f854f79e (diff)
Add support for creating connection from existing handle
This will allow for custom connection establishment and configuration.
-rw-r--r--odb/sqlite/connection.cxx23
-rw-r--r--odb/sqlite/connection.hxx5
2 files changed, 26 insertions, 2 deletions
diff --git a/odb/sqlite/connection.cxx b/odb/sqlite/connection.cxx
index 1e9ff6f..68b57f9 100644
--- a/odb/sqlite/connection.cxx
+++ b/odb/sqlite/connection.cxx
@@ -66,16 +66,35 @@ namespace odb
translate_error (e, *this);
}
+ init ();
+ }
+
+ connection::
+ connection (database_type& db, sqlite3* handle)
+ : odb::connection (db),
+ db_ (db),
+ handle_ (handle),
+ unlock_cond_ (unlock_mutex_),
+ statements_ (0)
+ {
+ init ();
+ }
+
+ void connection::
+ init ()
+ {
// Enable/disable foreign key constraints.
//
simple_statement st (
*this,
- db.foreign_keys ()
+ db_.foreign_keys ()
? "PRAGMA foreign_keys=ON"
: "PRAGMA foreign_keys=OFF",
- db.foreign_keys () ? 22 : 23);
+ db_.foreign_keys () ? 22 : 23);
st.execute ();
+ // Create statement cache.
+ //
statement_cache_.reset (new statement_cache_type (*this));
}
diff --git a/odb/sqlite/connection.hxx b/odb/sqlite/connection.hxx
index e069ce9..e487e6b 100644
--- a/odb/sqlite/connection.hxx
+++ b/odb/sqlite/connection.hxx
@@ -43,6 +43,7 @@ namespace odb
~connection ();
connection (database_type&, int extra_flags = 0);
+ connection (database_type&, sqlite3* handle);
database_type&
database ()
@@ -96,6 +97,10 @@ namespace odb
connection& operator= (const connection&);
private:
+ void
+ init ();
+
+ private:
database_type& db_;
sqlite3* handle_;