From d26f045819ef4e6303c285d7ca5bffa421e728b1 Mon Sep 17 00:00:00 2001 From: Alexey Milovidov Date: Sat, 14 Jan 2017 00:18:07 +0300 Subject: [PATCH] Addition to prev. revision [#CLICKHOUSE-2716]. --- libs/libmysqlxx/CMakeLists.txt | 3 ++ libs/libmysqlxx/include/mysqlxx/Pool.h | 40 ++---------------------- libs/libmysqlxx/src/Pool.cpp | 42 +++++++++++++++++++++++++- 3 files changed, 47 insertions(+), 38 deletions(-) diff --git a/libs/libmysqlxx/CMakeLists.txt b/libs/libmysqlxx/CMakeLists.txt index 890978dfbc..e0cc3d4c5b 100644 --- a/libs/libmysqlxx/CMakeLists.txt +++ b/libs/libmysqlxx/CMakeLists.txt @@ -1,10 +1,13 @@ add_library (mysqlxx src/Connection.cpp + src/Exception.cpp src/Query.cpp src/ResultBase.cpp src/StoreQueryResult.cpp src/UseQueryResult.cpp + src/Row.cpp src/Value.cpp + src/Pool.cpp src/PoolWithFailover.cpp include/mysqlxx/Connection.h diff --git a/libs/libmysqlxx/include/mysqlxx/Pool.h b/libs/libmysqlxx/include/mysqlxx/Pool.h index c937ad89ca..c90561b971 100644 --- a/libs/libmysqlxx/include/mysqlxx/Pool.h +++ b/libs/libmysqlxx/include/mysqlxx/Pool.h @@ -172,10 +172,8 @@ public: unsigned default_connections_ = MYSQLXX_POOL_DEFAULT_START_CONNECTIONS, unsigned max_connections_ = MYSQLXX_POOL_DEFAULT_MAX_CONNECTIONS, const char * parent_config_name_ = nullptr) - : Pool{ - Poco::Util::Application::instance().config(), config_name, - default_connections_, max_connections_, parent_config_name_ - } + : Pool{Poco::Util::Application::instance().config(), config_name, + default_connections_, max_connections_, parent_config_name_} {} /** @@ -186,39 +184,7 @@ public: Pool(const Poco::Util::AbstractConfiguration & cfg, const std::string & config_name, unsigned default_connections_ = MYSQLXX_POOL_DEFAULT_START_CONNECTIONS, unsigned max_connections_ = MYSQLXX_POOL_DEFAULT_MAX_CONNECTIONS, - const char * parent_config_name_ = nullptr) - : default_connections(default_connections_), max_connections(max_connections_) - { - server = cfg.getString(config_name + ".host"); - - if (parent_config_name_) - { - const std::string parent_config_name(parent_config_name_); - db = cfg.getString(config_name + ".db", cfg.getString(parent_config_name + ".db", "")); - user = cfg.has(config_name + ".user") ? - cfg.getString(config_name + ".user") : cfg.getString(parent_config_name + ".user"); - password = cfg.has(config_name + ".password") ? - cfg.getString(config_name + ".password") : cfg.getString(parent_config_name + ".password"); - port = cfg.has(config_name + ".port") ? cfg.getInt(config_name + ".port") : - cfg.getInt(parent_config_name + ".port"); - } - else - { - db = cfg.getString(config_name + ".db", ""); - user = cfg.getString(config_name + ".user"); - password = cfg.getString(config_name + ".password"); - port = cfg.getInt(config_name + ".port"); - } - - connect_timeout = cfg.getInt(config_name + ".connect_timeout", - cfg.getInt("mysql_connect_timeout", - MYSQLXX_DEFAULT_TIMEOUT)); - - rw_timeout = - cfg.getInt(config_name + ".rw_timeout", - cfg.getInt("mysql_rw_timeout", - MYSQLXX_DEFAULT_RW_TIMEOUT)); - } + const char * parent_config_name_ = nullptr); /** * @param db_ Имя БД diff --git a/libs/libmysqlxx/src/Pool.cpp b/libs/libmysqlxx/src/Pool.cpp index e67dbf2b36..4640a825cc 100644 --- a/libs/libmysqlxx/src/Pool.cpp +++ b/libs/libmysqlxx/src/Pool.cpp @@ -23,6 +23,46 @@ void Pool::Entry::decrementRefCount() } +Pool::Pool(const Poco::Util::AbstractConfiguration & cfg, const std::string & config_name, + unsigned default_connections_, unsigned max_connections_, + const char * parent_config_name_) + : default_connections(default_connections_), max_connections(max_connections_) +{ + server = cfg.getString(config_name + ".host"); + + if (parent_config_name_) + { + const std::string parent_config_name(parent_config_name_); + db = cfg.getString(config_name + ".db", cfg.getString(parent_config_name + ".db", "")); + user = cfg.has(config_name + ".user") + ? cfg.getString(config_name + ".user") + : cfg.getString(parent_config_name + ".user"); + password = cfg.has(config_name + ".password") + ? cfg.getString(config_name + ".password") + : cfg.getString(parent_config_name + ".password"); + port = cfg.has(config_name + ".port") + ? cfg.getInt(config_name + ".port") + : cfg.getInt(parent_config_name + ".port"); + } + else + { + db = cfg.getString(config_name + ".db", ""); + user = cfg.getString(config_name + ".user"); + password = cfg.getString(config_name + ".password"); + port = cfg.getInt(config_name + ".port"); + } + + connect_timeout = cfg.getInt(config_name + ".connect_timeout", + cfg.getInt("mysql_connect_timeout", + MYSQLXX_DEFAULT_TIMEOUT)); + + rw_timeout = + cfg.getInt(config_name + ".rw_timeout", + cfg.getInt("mysql_rw_timeout", + MYSQLXX_DEFAULT_RW_TIMEOUT)); +} + + Pool::~Pool() { Poco::ScopedLock locker(lock); @@ -102,7 +142,7 @@ void Pool::initialize() } -Connection * Pool::allocConnection(bool dont_throw_if_failed_first_time) +Pool::Connection * Pool::allocConnection(bool dont_throw_if_failed_first_time) { Poco::Util::Application & app = Poco::Util::Application::instance(); -- GitLab