aboutsummaryrefslogtreecommitdiff
path: root/odb/sqlite
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
commited96c77af3264975403fbb12d3ef3796c763b756 (patch)
treeb795dc8b5ac32ff0117c6b45d718f7757b75226c /odb/sqlite
parent851cbe3927b987ec992bbbb69bd62224bf4a0dc3 (diff)
Make session optional
Diffstat (limited to 'odb/sqlite')
-rw-r--r--odb/sqlite/polymorphic-object-result.txx1
-rw-r--r--odb/sqlite/simple-object-statements.hxx1
-rw-r--r--odb/sqlite/simple-object-statements.txx16
3 files changed, 8 insertions, 10 deletions
diff --git a/odb/sqlite/polymorphic-object-result.txx b/odb/sqlite/polymorphic-object-result.txx
index a8cd1f0..dfff9ff 100644
--- a/odb/sqlite/polymorphic-object-result.txx
+++ b/odb/sqlite/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/sqlite/polymorphic-object-statements.hxx>
diff --git a/odb/sqlite/simple-object-statements.hxx b/odb/sqlite/simple-object-statements.hxx
index 2cdb16c..ee383b5 100644
--- a/odb/sqlite/simple-object-statements.hxx
+++ b/odb/sqlite/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/sqlite/simple-object-statements.txx b/odb/sqlite/simple-object-statements.txx
index ea0b89b..995aca6 100644
--- a/odb/sqlite/simple-object-statements.txx
+++ b/odb/sqlite/simple-object-statements.txx
@@ -4,7 +4,6 @@
#include <cstring> // std::memset
-#include <odb/session.hxx>
#include <odb/callback.hxx>
#include <odb/exceptions.hxx>
@@ -128,15 +127,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 ();