From d3ec68714365046a30379a410cdff52e5f5ae066 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 10 Sep 2013 14:10:45 +0200 Subject: Schema versioning support --- odb/mssql/container-statements.hxx | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'odb/mssql/container-statements.hxx') 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 // std::size_t #include +#include #include #include @@ -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_; details::shared_ptr select_; details::shared_ptr 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_; } -- cgit v1.1