From a051c451c178152dc0b37bf955bf60022d226843 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Thu, 12 Sep 2013 13:01:49 +0200 Subject: Optimize schema version access for default schema --- odb/database.cxx | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'odb/database.cxx') diff --git a/odb/database.cxx b/odb/database.cxx index ad71b4f..c9692ba 100644 --- a/odb/database.cxx +++ b/odb/database.cxx @@ -4,6 +4,8 @@ #include +using namespace std; + namespace odb { database:: @@ -17,4 +19,35 @@ namespace odb connection_type& c (transaction::current ().connection ()); return c.execute (st, n); } + + const database::schema_version_info& database:: + schema_version_migration_ (const string& name) const + { + schema_version_map::const_iterator i (schema_version_map_.find (name)); + const schema_version_info& svi ( + i != schema_version_map_.end () && i->second.version != 0 + ? i->second + : load_schema_version (name)); + + if (default_schema_version_ == 0 && name.empty ()) + default_schema_version_ = &svi; + + return svi; + } + + void database:: + schema_version_migration (const schema_version_migration_type& svm, + const string& name) + { + schema_version_info& svi (schema_version_map_[name]); + if (svi.version != svm.version || svi.migration != svm.migration) + { + svi.version = svm.version; + svi.migration = svm.migration; + schema_version_seq_++; + } + + if (default_schema_version_ == 0 && name.empty ()) + default_schema_version_ = &svi; + } } -- cgit v1.1