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.hxx | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'odb/database.hxx') diff --git a/odb/database.hxx b/odb/database.hxx index c7c4598..7ddbecb 100644 --- a/odb/database.hxx +++ b/odb/database.hxx @@ -339,24 +339,29 @@ namespace odb typedef odb::schema_version_migration schema_version_migration_type; schema_version_type - schema_version (const std::string& schema_name = "") const; + schema_version (const std::string& schema_name = std::string ()) const; bool - schema_migration (const std::string& schema_name = "") const; + schema_migration (const std::string& schema_name = std::string ()) const; + // Note that there is code that relies on the returned reference + // being valid until the version is changed or the database instance + // is destroyed. + // const schema_version_migration_type& - schema_version_migration (const std::string& schema_name = "") const; + schema_version_migration ( + const std::string& schema_name = std::string ()) const; // Set schema version and migration state manually. // void schema_version_migration (schema_version_type, bool migration, - const std::string& schema_name = ""); + const std::string& schema_name = std::string ()); void schema_version_migration (const schema_version_migration_type&, - const std::string& schema_name = ""); + const std::string& schema_name = std::string ()); // Set default schema version table for all schema names. The table // name should already be quoted if necessary. @@ -386,6 +391,10 @@ namespace odb virtual const schema_version_info& load_schema_version (const std::string& schema_name) const = 0; + private: + const schema_version_info& + schema_version_migration_ (const std::string& schema_name) const; + // Database id. // public: @@ -478,6 +487,7 @@ namespace odb std::string schema_version_table_; mutable schema_version_map schema_version_map_; + mutable const schema_version_info* default_schema_version_; // Cached. unsigned int schema_version_seq_; }; } -- cgit v1.1