aboutsummaryrefslogtreecommitdiff
path: root/odb/mssql/container-statements.hxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2013-09-10 14:10:45 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2013-09-10 14:10:45 +0200
commitd3ec68714365046a30379a410cdff52e5f5ae066 (patch)
tree36b971dd06626cc39b51eb0ec6e7f4f3ca40fcba /odb/mssql/container-statements.hxx
parent88f3f0282bad25c962783defa1e34dcbec60a07c (diff)
Schema versioning support
Diffstat (limited to 'odb/mssql/container-statements.hxx')
-rw-r--r--odb/mssql/container-statements.hxx35
1 files changed, 32 insertions, 3 deletions
diff --git a/odb/mssql/container-statements.hxx b/odb/mssql/container-statements.hxx
index 8653afe..5a7e52c 100644
--- a/odb/mssql/container-statements.hxx
+++ b/odb/mssql/container-statements.hxx
@@ -10,6 +10,7 @@
#include <cstddef> // std::size_t
#include <odb/forward.hxx>
+#include <odb/schema-version.hxx>
#include <odb/traits.hxx>
#include <odb/mssql/version.hxx>
@@ -58,6 +59,14 @@ namespace odb
return functions_;
}
+ // Schema version.
+ //
+ const schema_version_migration&
+ version_migration () const {return *svm_;}
+
+ void
+ version_migration (const schema_version_migration& svm) {svm_ = &svm;}
+
// Id image binding (external).
//
const binding&
@@ -109,7 +118,13 @@ namespace odb
if (insert_ == 0)
insert_.reset (
new (details::shared) insert_statement_type (
- conn_, insert_text_, insert_image_binding_, false, false, false));
+ conn_,
+ insert_text_,
+ versioned_, // Process if versioned.
+ insert_image_binding_,
+ false,
+ false,
+ false));
return *insert_;
}
@@ -120,7 +135,13 @@ namespace odb
if (select_ == 0)
select_.reset (
new (details::shared) select_statement_type (
- conn_, select_text_, id_binding_, select_image_binding_, false));
+ conn_,
+ select_text_,
+ versioned_, // Process if versioned.
+ false, // Don't optimize.
+ id_binding_,
+ select_image_binding_,
+ false));
return *select_;
}
@@ -157,6 +178,9 @@ namespace odb
const char* select_text_;
const char* delete_text_;
+ bool versioned_;
+ const schema_version_migration* svm_;
+
details::shared_ptr<insert_statement_type> insert_;
details::shared_ptr<select_statement_type> select_;
details::shared_ptr<delete_statement_type> delete_;
@@ -259,7 +283,12 @@ namespace odb
if (update_ == 0)
update_.reset (
new (details::shared) update_statement_type (
- this->conn_, update_text_, update_image_binding_, false, false));
+ this->conn_,
+ update_text_,
+ this->versioned_, // Process if versioned.
+ update_image_binding_,
+ false,
+ false));
return *update_;
}