diff options
Diffstat (limited to 'odb/pgsql/connection.cxx')
-rw-r--r-- | odb/pgsql/connection.cxx | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/odb/pgsql/connection.cxx b/odb/pgsql/connection.cxx index 0a23ed7..be88446 100644 --- a/odb/pgsql/connection.cxx +++ b/odb/pgsql/connection.cxx @@ -31,10 +31,7 @@ namespace odb { connection:: connection (database_type& db) - : odb::connection (db), - db_ (db), - handle_ (0), - statement_cache_ (new statement_cache_type (*this)) + : odb::connection (db), db_ (db) { handle_ = PQconnectdb (db.conninfo ().c_str ()); @@ -48,16 +45,33 @@ namespace odb throw database_exception (m); } - // Suppress server notifications to stdout. - // - PQsetNoticeProcessor (handle_, &odb_pgsql_process_notice, 0); + init (); + } + + connection:: + connection (database_type& db, PGconn* handle) + : odb::connection (db), db_ (db), handle_ (handle) + { + init (); + } + void connection:: + init () + { // Establish whether date/time values are represented as // 8-byte integers. // if (strcmp (PQparameterStatus (handle_, "integer_datetimes"), "on") != 0) throw database_exception ("unsupported binary format for PostgreSQL " "date-time SQL types"); + + // Suppress server notifications to stdout. + // + PQsetNoticeProcessor (handle_, &odb_pgsql_process_notice, 0); + + // Create statement cache. + // + statement_cache_.reset (new statement_cache_type (*this)); } connection:: |