From ea1fb7db74c17ce64403b4350d93f18d41c31f81 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 24 Mar 2011 12:19:54 +0200 Subject: Add image/binding versioning --- odb/sqlite/container-statements.hxx | 56 ++++++++++++++++++++++++++++++++++++- odb/sqlite/container-statements.txx | 8 ++++++ odb/sqlite/object-statements.hxx | 40 ++++++++++++++++++++++++++ odb/sqlite/object-statements.txx | 7 +++++ 4 files changed, 110 insertions(+), 1 deletion(-) (limited to 'odb/sqlite') diff --git a/odb/sqlite/container-statements.hxx b/odb/sqlite/container-statements.hxx index a114990..5f5caef 100644 --- a/odb/sqlite/container-statements.hxx +++ b/odb/sqlite/container-statements.hxx @@ -8,6 +8,8 @@ #include +#include // std::size_t + #include #include @@ -80,6 +82,30 @@ namespace odb return cond_image_; } + std::size_t + cond_image_version () const + { + return cond_image_version_; + } + + void + cond_image_version (std::size_t v) + { + cond_image_version_ = v; + } + + std::size_t + cond_id_image_version () const + { + return cond_id_image_version_; + } + + void + cond_id_image_version (std::size_t v) + { + cond_id_image_version_ = v; + } + binding& cond_image_binding () { @@ -94,6 +120,30 @@ namespace odb return data_image_; } + std::size_t + data_image_version () const + { + return data_image_version_; + } + + void + data_image_version (std::size_t v) + { + data_image_version_ = v; + } + + std::size_t + data_id_image_version () const + { + return data_id_image_version_; + } + + void + data_id_image_version (std::size_t v) + { + data_id_image_version_ = v; + } + binding& data_image_binding () { @@ -103,7 +153,7 @@ namespace odb bool* data_image_truncated () { - return data_image_truncation_; + return data_image_truncated_; } // @@ -157,10 +207,14 @@ namespace odb id_image_type* id_image_; cond_image_type cond_image_; + std::size_t cond_image_version_; + std::size_t cond_id_image_version_; binding cond_image_binding_; bind cond_image_bind_[traits::cond_column_count]; data_image_type data_image_; + std::size_t data_image_version_; + std::size_t data_id_image_version_; binding data_image_binding_; bind data_image_bind_[traits::data_column_count]; bool data_image_truncated_[traits::data_column_count]; diff --git a/odb/sqlite/container-statements.txx b/odb/sqlite/container-statements.txx index 23466df..bfef187 100644 --- a/odb/sqlite/container-statements.txx +++ b/odb/sqlite/container-statements.txx @@ -25,6 +25,14 @@ namespace odb cond_image_binding_ (cond_image_bind_, traits::cond_column_count), data_image_binding_ (data_image_bind_, traits::data_column_count) { + cond_image_.version = 0; + cond_image_version_ = 0; + cond_id_image_version_ = 0; + + data_image_.version = 0; + data_image_version_ = 0; + data_id_image_version_ = 0; + std::memset (cond_image_bind_, 0, sizeof (cond_image_bind_)); std::memset (data_image_bind_, 0, sizeof (data_image_bind_)); std::memset (data_image_truncated_, 0, sizeof (data_image_truncated_)); diff --git a/odb/sqlite/object-statements.hxx b/odb/sqlite/object-statements.hxx index 73f3162..68fd04e 100644 --- a/odb/sqlite/object-statements.hxx +++ b/odb/sqlite/object-statements.hxx @@ -10,6 +10,7 @@ #include #include +#include // std::size_t #include #include @@ -171,6 +172,30 @@ namespace odb return image_; } + std::size_t + in_image_version () const + { + return in_image_version_; + } + + std::size_t + out_image_version () const + { + return out_image_version_; + } + + void + in_image_version (std::size_t v) + { + in_image_version_ = v; + } + + void + out_image_version (std::size_t v) + { + out_image_version_ = v; + } + binding& in_image_binding () { @@ -197,6 +222,18 @@ namespace odb return id_image_; } + std::size_t + id_image_version () const + { + return id_image_version_; + } + + void + id_image_version (std::size_t v) + { + id_image_version_ = v; + } + binding& id_image_binding () { @@ -283,11 +320,13 @@ namespace odb // In (send) binding. The last element is the id parameter. // + std::size_t in_image_version_; binding in_image_binding_; bind in_image_bind_[object_traits::in_column_count + 1]; // Out (receive) binding. // + std::size_t out_image_version_; binding out_image_binding_; bind out_image_bind_[object_traits::out_column_count]; bool out_image_truncated_[object_traits::out_column_count]; @@ -295,6 +334,7 @@ namespace odb // Id image binding (only in). // id_image_type id_image_; + std::size_t id_image_version_; binding id_image_binding_; details::shared_ptr persist_; diff --git a/odb/sqlite/object-statements.txx b/odb/sqlite/object-statements.txx index 88b99e8..53a157f 100644 --- a/odb/sqlite/object-statements.txx +++ b/odb/sqlite/object-statements.txx @@ -24,6 +24,13 @@ namespace odb out_image_binding_ (out_image_bind_, object_traits::out_column_count), id_image_binding_ (in_image_bind_ + object_traits::in_column_count, 1) { + image_.version = 0; + in_image_version_ = 0; + out_image_version_ = 0; + + id_image_.version = 0; + id_image_version_ = 0; + std::memset (in_image_bind_, 0, sizeof (in_image_bind_)); std::memset (out_image_bind_, 0, sizeof (out_image_bind_)); std::memset (out_image_truncated_, 0, sizeof (out_image_truncated_)); -- cgit v1.1