aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2012-04-26 11:29:05 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2012-04-26 11:29:05 +0200
commitaad1221242bb26e109aafc52d7a09dc2b04897ad (patch)
treed83f515f4ea04521d3f638374d5fa082404a45ee
parentf039726a9d756dff85607d89bf4ba5fd1ef42edf (diff)
Make session optional
-rw-r--r--odb/oracle/polymorphic-object-result.txx1
-rw-r--r--odb/oracle/simple-object-statements.hxx1
-rw-r--r--odb/oracle/simple-object-statements.txx16
3 files changed, 8 insertions, 10 deletions
diff --git a/odb/oracle/polymorphic-object-result.txx b/odb/oracle/polymorphic-object-result.txx
index f371258..af9f8eb 100644
--- a/odb/oracle/polymorphic-object-result.txx
+++ b/odb/oracle/polymorphic-object-result.txx
@@ -5,7 +5,6 @@
#include <cassert>
#include <odb/callback.hxx>
-#include <odb/cache-traits.hxx>
#include <odb/exceptions.hxx> // result_not_cached
#include <odb/oracle/polymorphic-object-statements.hxx>
diff --git a/odb/oracle/simple-object-statements.hxx b/odb/oracle/simple-object-statements.hxx
index 2a007b2..101c96f 100644
--- a/odb/oracle/simple-object-statements.hxx
+++ b/odb/oracle/simple-object-statements.hxx
@@ -13,7 +13,6 @@
#include <odb/forward.hxx>
#include <odb/traits.hxx>
-#include <odb/cache-traits.hxx>
#include <odb/details/shared-ptr.hxx>
diff --git a/odb/oracle/simple-object-statements.txx b/odb/oracle/simple-object-statements.txx
index 83aff45..a5f30e4 100644
--- a/odb/oracle/simple-object-statements.txx
+++ b/odb/oracle/simple-object-statements.txx
@@ -4,7 +4,6 @@
#include <cstring> // std::memset
-#include <odb/session.hxx>
#include <odb/callback.hxx>
#include <odb/exceptions.hxx>
@@ -126,15 +125,16 @@ namespace odb
void object_statements<T>::
clear_delayed_ ()
{
- // Remove the objects from the session cache.
+ // Remove the objects from the session cache. This is not the most
+ // efficient way to do this (cache_traits::erase() will check for
+ // a session on every iteration), but the delay vector won't be
+ // empty only if something goes wrong (i.e., we are throwing an
+ // exception).
//
- if (session::has_current ())
+ for (typename delayed_loads::iterator i (delayed_.begin ()),
+ e (delayed_.end ()); i != e; ++i)
{
- for (typename delayed_loads::iterator i (delayed_.begin ()),
- e (delayed_.end ()); i != e; ++i)
- {
- pointer_cache_traits::erase (i->pos);
- }
+ pointer_cache_traits::erase (i->pos);
}
delayed_.clear ();