diff --git a/.gitignore b/.gitignore index 67983ce52..45cf9fb40 100644 --- a/.gitignore +++ b/.gitignore @@ -121,7 +121,7 @@ deps/libhttpserver/libhttpserver-master_20191121/ deps/libhttpserver/libhttpserver-0.18.1/ #clickhouse -deps/clickhouse-cpp/clickhouse-cpp/ +deps/clickhouse-cpp/clickhouse-cpp-* deps/cityhash/cityhash/ deps/lz4/lz4-1.7.5/ deps/lz4/lz4/ diff --git a/deps/Makefile b/deps/Makefile index 9c45e073e..cc5b3b185 100644 --- a/deps/Makefile +++ b/deps/Makefile @@ -140,17 +140,17 @@ lz4/lz4/liblz4.a: cd lz4/lz4 && CC=${CC} CXX=${CXX} ${MAKE} lz4: lz4/lz4/liblz4.a -clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib.a: - cd clickhouse-cpp && rm -rf clickhouse-cpp/ || true - cd clickhouse-cpp && tar -zxf clickhouse-cpp.tar.gz +clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib-static.a: + cd clickhouse-cpp && rm -rf clickhouse-cpp-* || true + cd clickhouse-cpp && tar -zxf v2.1.0.tar.gz ifeq ($(CXX),clang++) cd clickhouse-cpp/clickhouse-cpp && sed -i 's/"-O2 -pthread -Wall -Wextra -Werror"/"-O2 -pthread -Wall -Wextra -Werror -Wno-deprecated-copy"/' CMakeLists.txt endif cd clickhouse-cpp/clickhouse-cpp && cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo . - cd clickhouse-cpp/clickhouse-cpp && patch clickhouse/columns/column.h < ../column.h.diff +# cd clickhouse-cpp/clickhouse-cpp && patch clickhouse/columns/column.h < ../column.h.diff cd clickhouse-cpp/clickhouse-cpp && CC=${CC} CXX=${CXX} ${MAKE} -clickhouse-cpp: clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib.a +clickhouse-cpp: clickhouse-cpp/clickhouse-cpp/clickhouse/libclickhouse-cpp-lib-static.a libdaemon/libdaemon/libdaemon/.libs/libdaemon.a: diff --git a/deps/clickhouse-cpp/clickhouse-cpp b/deps/clickhouse-cpp/clickhouse-cpp new file mode 120000 index 000000000..64c429a75 --- /dev/null +++ b/deps/clickhouse-cpp/clickhouse-cpp @@ -0,0 +1 @@ +clickhouse-cpp-2.1.0 \ No newline at end of file diff --git a/deps/clickhouse-cpp/clickhouse-cpp.tar.gz b/deps/clickhouse-cpp/clickhouse-cpp.tar.gz deleted file mode 100644 index 6df8f3176..000000000 Binary files a/deps/clickhouse-cpp/clickhouse-cpp.tar.gz and /dev/null differ diff --git a/deps/clickhouse-cpp/column.h.diff b/deps/clickhouse-cpp/column.h.diff deleted file mode 100644 index 7205089f2..000000000 --- a/deps/clickhouse-cpp/column.h.diff +++ /dev/null @@ -1,9 +0,0 @@ -@@ -4,6 +4,8 @@ - #include "../base/coded.h" - #include "../types/types.h" - -+#include -+ - namespace clickhouse { - - using ColumnRef = std::shared_ptr; diff --git a/deps/clickhouse-cpp/v2.1.0.tar.gz b/deps/clickhouse-cpp/v2.1.0.tar.gz new file mode 100644 index 000000000..36954c4bb Binary files /dev/null and b/deps/clickhouse-cpp/v2.1.0.tar.gz differ diff --git a/include/proxysql_utils.h b/include/proxysql_utils.h index 555f27564..b2cbe2b93 100644 --- a/include/proxysql_utils.h +++ b/include/proxysql_utils.h @@ -7,10 +7,10 @@ #include template struct conjunction : std::true_type { }; -template struct conjunction : B1 { }; +template struct std::conjunction : B1 { }; template -struct conjunction - : std::conditional, B1>::type {}; +struct std::conjunction + : std::conditional, B1>::type {}; /** * @brief Stores the result of formatting the first parameter with the provided @@ -24,7 +24,7 @@ struct conjunction */ template< typename... Args, - typename std::enable_if...>::value,int>::type = 0 + typename std::enable_if...>::value,int>::type = 0 > int string_format(const std::string& str, std::string& result, Args... args) { int err = 0; diff --git a/lib/ClickHouse_Server.cpp b/lib/ClickHouse_Server.cpp index 73e6485f3..8c51f556b 100644 --- a/lib/ClickHouse_Server.cpp +++ b/lib/ClickHouse_Server.cpp @@ -64,6 +64,7 @@ } while (rc==SQLITE_LOCKED || rc==SQLITE_BUSY);\ } while (0) +#include #include "clickhouse/client.h" using namespace clickhouse; @@ -177,9 +178,9 @@ inline void ClickHouse_to_MySQL(const Block& block) { { auto s_t = block[i]->As(); if (s_t->IsNull(r)) { - s = "\\N"; + s = "NULL"; } else { - clickhouse::Type::Code cnc = block[i]->Type()->GetNestedType()->GetCode(); + clickhouse::Type::Code cnc = block[i]->Type()->GetCode(); switch (cnc) { case clickhouse::Type::Code::Int8: s=std::to_string(s_t->Nested()->As()->At(r)); diff --git a/lib/Makefile b/lib/Makefile index b583ab668..b00b705f4 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -54,7 +54,7 @@ PROMETHEUS_LDIR=$(PROMETHEUS_PATH)/lib IDIR=../include -IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(RE2_IDIR) -I$(SQLITE3_DIR) -I$(PCRE_PATH) -I/usr/local/include -I$(CLICKHOUSE_CPP_DIR) $(MICROHTTPD_IDIR) $(LIBHTTPSERVER_IDIR) $(LIBINJECTION_IDIR) $(CURL_IDIR) -I$(EV_DIR) -I$(SSL_IDIR) -I$(PROMETHEUS_IDIR) +IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(RE2_IDIR) -I$(SQLITE3_DIR) -I$(PCRE_PATH) -I/usr/local/include -I$(CLICKHOUSE_CPP_DIR) -I$(CLICKHOUSE_CPP_DIR)/contrib/ $(MICROHTTPD_IDIR) $(LIBHTTPSERVER_IDIR) $(LIBINJECTION_IDIR) $(CURL_IDIR) -I$(EV_DIR) -I$(SSL_IDIR) -I$(PROMETHEUS_IDIR) LDIRS=-L$(JEMALLOC_PATH)/lib -L$(RE2_PATH)/obj -L$(INJECTION_PATH) -L$(PROMETHEUS_LDIR) @@ -99,7 +99,7 @@ endif PROXYSQLCLICKHOUSE := $(shell echo $(PROXYSQLCLICKHOUSE)) ifeq ($(PROXYSQLCLICKHOUSE),1) -PSQLCH=-DPROXYSQLCLICKHOUSE +PSQLCH=-DPROXYSQLCLICKHOUSE -std=c++17 else PSQLCH= endif diff --git a/lib/MySQL_HostGroups_Manager.cpp b/lib/MySQL_HostGroups_Manager.cpp index 3cac9df5e..911a38f3d 100644 --- a/lib/MySQL_HostGroups_Manager.cpp +++ b/lib/MySQL_HostGroups_Manager.cpp @@ -3561,7 +3561,7 @@ void MySQL_HostGroups_Manager::group_replication_lag_action( bool writer_is_also_reader = false; // Get the reader_hostgroup for the supplied writter hostgroup - std::string t_reader_hostgroup_query { + const std::string t_reader_hostgroup_query { "SELECT reader_hostgroup,writer_is_also_reader FROM mysql_group_replication_hostgroups WHERE writer_hostgroup=%d" }; std::string reader_hostgroup_query {}; diff --git a/src/Makefile b/src/Makefile index 4a9cb8a22..69b26a455 100644 --- a/src/Makefile +++ b/src/Makefile @@ -76,7 +76,7 @@ EV_LDIR=$(EV_DIR)/.libs IDIR=../include LDIR=../lib -IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(DAEMONPATH_IDIR) -I$(SQLITE3_DIR) -I$(CLICKHOUSE_CPP_DIR) -I$(MICROHTTPD_IDIR) -I$(LIBHTTPSERVER_IDIR) -I$(LIBINJECTION_IDIR) -I$(CURL_IDIR) -I$(EV_IDIR) -I$(SSL_IDIR) -I$(RE2_IDIR) -I$(PROMETHEUS_IDIR) +IDIRS=-I$(IDIR) -I$(JEMALLOC_IDIR) -I$(MARIADB_IDIR) $(LIBCONFIG_IDIR) -I$(DAEMONPATH_IDIR) -I$(SQLITE3_DIR) -I$(CLICKHOUSE_CPP_DIR) -I$(CLICKHOUSE_CPP_DIR)/contrib/ -I$(MICROHTTPD_IDIR) -I$(LIBHTTPSERVER_IDIR) -I$(LIBINJECTION_IDIR) -I$(CURL_IDIR) -I$(EV_IDIR) -I$(SSL_IDIR) -I$(RE2_IDIR) -I$(PROMETHEUS_IDIR) LDIRS=-L$(LDIR) -L$(JEMALLOC_LDIR) $(LIBCONFIG_LDIR) -L$(RE2_PATH)/obj -L$(MARIADB_LDIR) -L$(DAEMONPATH_LDIR) -L$(PCRE_LDIR) -L$(MICROHTTPD_LDIR) -L$(LIBHTTPSERVER_LDIR) -L$(LIBINJECTION_LDIR) -L$(CURL_LDIR) -L$(EV_LDIR) -L$(SSL_LDIR) -L$(PROMETHEUS_LDIR) UNAME_S := $(shell uname -s) @@ -88,7 +88,7 @@ endif PROXYSQLCLICKHOUSE := $(shell echo $(PROXYSQLCLICKHOUSE)) ifeq ($(PROXYSQLCLICKHOUSE),1) -PSQLCH=-DPROXYSQLCLICKHOUSE +PSQLCH=-DPROXYSQLCLICKHOUSE -std=c++17 else PSQLCH= endif @@ -170,7 +170,7 @@ $(ODIR)/%.o: %.cpp $(EXECUTABLE): $(ODIR) $(OBJ) $(LIBPROXYSQLAR) ifeq ($(PROXYSQLCLICKHOUSE),1) - $(CXX) -o $@ $(OBJ) $(LIBPROXYSQLAR) $(CLICKHOUSE_CPP_DIR)/clickhouse/libclickhouse-cpp-lib.a $(CITYHASH_DIR)/libcityhash.a $(LZ4_DIR)/liblz4.a $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(LDFLAGS) $(MYLIBS) + $(CXX) -o $@ $(OBJ) $(LIBPROXYSQLAR) $(CLICKHOUSE_CPP_DIR)/clickhouse/libclickhouse-cpp-lib-static.a $(CITYHASH_DIR)/libcityhash.a $(LZ4_DIR)/liblz4.a $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(LDFLAGS) $(MYLIBS) else $(CXX) -o $@ $(OBJ) $(LIBPROXYSQLAR) $(MYCXXFLAGS) $(CXXFLAGS) $(LDIRS) $(LIBS) $(LDFLAGS) $(MYLIBS) endif