From bfd074d589ce5c7c0f0e071a7d25546e0e75fd7f Mon Sep 17 00:00:00 2001 From: Han Fei Date: Thu, 31 Oct 2019 21:30:11 +0800 Subject: [PATCH 1/2] replace function `gethostbyname` with poco api --- .../src/Storages/Transaction/PDTiKVClient.cpp | 33 ++++--------------- 1 file changed, 6 insertions(+), 27 deletions(-) diff --git a/dbms/src/Storages/Transaction/PDTiKVClient.cpp b/dbms/src/Storages/Transaction/PDTiKVClient.cpp index c154f3c00a3..a66d87defd4 100644 --- a/dbms/src/Storages/Transaction/PDTiKVClient.cpp +++ b/dbms/src/Storages/Transaction/PDTiKVClient.cpp @@ -1,9 +1,8 @@ #include +#include #include -#include - namespace DB { @@ -29,31 +28,11 @@ std::string IndexReader::convertAddr(const std::string & address) { if (address.size() == 0) return ""; - size_t idx = address.find(":"); - if (idx == std::string::npos) - return ""; - auto host = address.substr(0, idx); - auto port = address.substr(idx + 1); - - char buf[1024]; - struct hostent buff_storage; - struct hostent * result; - int err = 0; - gethostbyname_r(host.data(), &buff_storage, buf, sizeof(buf), &result, &err); - // Suppose we always use IPv4 address. - if (result == nullptr || result->h_addr == nullptr || err != 0) - { - LOG_ERROR(log, "Cannot resolve host name: " << address << " error message is :" << hstrerror(err)); - return ""; - } - std::string addr; - for (int i = 0; i < 4; i++) - { - addr.append(std::to_string(static_cast((uint8_t)result->h_addr[i]))); - if (i != 3) - addr.push_back('.'); - } - return addr; + auto socket_addr = DNSCache::instance().resolveHostAndPort(address); + std::string ip = socket_addr.host().toString(); + if (ip.size() == 0) + LOG_ERROR(log, "cannot resolve address: " << address); + return ip; } IndexReader::IndexReader(pingcap::kv::RegionCachePtr cache_, From 262502fe863eef4407c6186cb70f5f7236daf83b Mon Sep 17 00:00:00 2001 From: zanmato1984 Date: Fri, 1 Nov 2019 02:11:20 +0800 Subject: [PATCH 2/2] Remove costly logging in dag expr analyzer --- dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.cpp | 8 +------- dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.h | 1 - 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.cpp b/dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.cpp index 11b446656cb..ea7e943931e 100644 --- a/dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.cpp +++ b/dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.cpp @@ -48,11 +48,7 @@ static String genFuncString(const String & func_name, const Names & argument_nam } DAGExpressionAnalyzer::DAGExpressionAnalyzer(std::vector && source_columns_, const Context & context_) - : source_columns(std::move(source_columns_)), - context(context_), - after_agg(false), - implicit_cast_count(0), - log(&Logger::get("DAGExpressionAnalyzer")) + : source_columns(std::move(source_columns_)), context(context_), after_agg(false), implicit_cast_count(0) { settings = context.getSettings(); } @@ -391,8 +387,6 @@ String DAGExpressionAnalyzer::appendCastIfNeeded(const tipb::Expr & expr, Expres // todo ignore nullable info?? if (expected_type->getName() != actual_type->getName()) { - LOG_DEBUG( - log, __PRETTY_FUNCTION__ << " Add implicit cast: from " << actual_type->getName() << " to " << expected_type->getName()); implicit_cast_count++; // need to add cast function // first construct the second argument diff --git a/dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.h b/dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.h index e940ba164c6..70fdcfdfff0 100644 --- a/dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.h +++ b/dbms/src/Flash/Coprocessor/DAGExpressionAnalyzer.h @@ -34,7 +34,6 @@ class DAGExpressionAnalyzer : private boost::noncopyable const Context & context; bool after_agg; Int32 implicit_cast_count; - Poco::Logger * log; public: DAGExpressionAnalyzer(std::vector && source_columns_, const Context & context_);