mirror of
https://github.com/apache/doris.git
synced 2026-11-04 07:31:17 +00:00
[Chore](build) remove libmysql libodbc link (#50494)
### What problem does this PR solve?
remove libmysql libodbc link but do not remove those from thirdparty
(coz 2.1/3.0 may used)
### Check List (For Author)
- Test <!-- At least one of them must be included. -->
- [ ] Regression test
- [ ] Unit Test
- [ ] Manual test (add detailed scripts or steps below)
- [x] No need to test or manual test. Explain why:
- [ ] This is a refactor/code format and no logic has been changed.
- [x] Previous test can cover this change.
- [ ] No code files have been changed.
- [ ] Other reason <!-- Add your reason? -->
- Behavior changed:
- [x] No.
- [ ] Yes. <!-- Explain the behavior change -->
- Does this need documentation?
- [x] No.
- [ ] Yes. <!-- Add document PR link here. eg:
https://github.com/apache/doris-website/pull/1214 -->
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR
should merge into -->
This commit is contained in:
8 files changed
-300
No files matched your search
@@ -140,8 +140,6 @@ message(STATUS "make test: ${MAKE_TEST}")
|
||||
option(BUILD_BENCHMARK "ON for make google benchmark or OFF for not" OFF)
|
||||
message(STATUS "make benchmark: ${BUILD_BENCHMARK}")
|
||||
|
||||
option(WITH_MYSQL "Support access MySQL" ON)
|
||||
|
||||
option(BUILD_FS_BENCHMARK "ON for building fs benchmark tool or OFF for not" OFF)
|
||||
message(STATUS "build fs benchmark tool: ${BUILD_FS_BENCHMARK}")
|
||||
|
||||
@@ -361,10 +359,6 @@ if (ARCH_ARM)
|
||||
endif()
|
||||
#
|
||||
|
||||
if (WITH_MYSQL)
|
||||
add_definitions(-DDORIS_WITH_MYSQL)
|
||||
endif()
|
||||
|
||||
if (ENABLE_INJECTION_POINT)
|
||||
set(CXX_COMMON_FLAGS "${CXX_COMMON_FLAGS} -DENABLE_INJECTION_POINT")
|
||||
endif()
|
||||
@@ -612,10 +606,6 @@ set(DORIS_DEPENDENCIES
|
||||
${KRB5_LIBS}
|
||||
)
|
||||
|
||||
if (WITH_MYSQL)
|
||||
set(DORIS_DEPENDENCIES ${DORIS_DEPENDENCIES} mysql)
|
||||
endif()
|
||||
|
||||
if (USE_UNWIND)
|
||||
set(DORIS_DEPENDENCIES ${DORIS_DEPENDENCIES} libunwind)
|
||||
endif()
|
||||
|
||||
@@ -82,10 +82,6 @@ else()
|
||||
add_thirdparty(tcmalloc WHOLELIBPATH ${GPERFTOOLS_HOME}/lib/libtcmalloc.a NOTADD)
|
||||
endif()
|
||||
|
||||
if (WITH_MYSQL)
|
||||
add_thirdparty(mysql LIBNAME "lib/libmysqlclient.a")
|
||||
endif()
|
||||
|
||||
if (USE_UNWIND)
|
||||
add_thirdparty(libunwind LIBNAME "lib64/libunwind.a")
|
||||
endif()
|
||||
|
||||
@@ -23,10 +23,6 @@ set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/src/pipeline")
|
||||
|
||||
file(GLOB_RECURSE PIPELINE_FILES CONFIGURE_DEPENDS *.cpp)
|
||||
|
||||
if (NOT WITH_MYSQL)
|
||||
list(REMOVE_ITEM PIPELINE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/exec/mysql_scan_operator.cpp)
|
||||
endif ()
|
||||
|
||||
add_library(Pipeline STATIC
|
||||
${PIPELINE_FILES}
|
||||
)
|
||||
|
||||
@@ -21,10 +21,6 @@ set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/src/vec")
|
||||
|
||||
file(GLOB_RECURSE VEC_FILES CONFIGURE_DEPENDS *.cpp)
|
||||
|
||||
if (NOT WITH_MYSQL)
|
||||
list(REMOVE_ITEM VEC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/exec/vmysql_scan_node.cpp ${CMAKE_CURRENT_SOURCE_DIR}/exec/scan/mysql_scanner.cpp)
|
||||
endif ()
|
||||
|
||||
add_library(Vec STATIC
|
||||
${VEC_FILES}
|
||||
)
|
||||
|
||||
@@ -1,197 +0,0 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
#include <mysql/mysql.h>
|
||||
|
||||
#define __DorisMysql MYSQL
|
||||
#define __DorisMysqlRes MYSQL_RES
|
||||
#include "common/config.h"
|
||||
#include "common/logging.h"
|
||||
#include "mysql_scanner.h"
|
||||
#include "util/md5.h"
|
||||
|
||||
namespace doris::vectorized {
|
||||
|
||||
MysqlScanner::MysqlScanner(const MysqlScannerParam& param)
|
||||
: _my_param(param),
|
||||
_my_conn(nullptr),
|
||||
_my_result(nullptr),
|
||||
_is_open(false),
|
||||
_field_num(0) {}
|
||||
|
||||
MysqlScanner::~MysqlScanner() {
|
||||
if (_my_result) {
|
||||
mysql_free_result(_my_result);
|
||||
_my_result = nullptr;
|
||||
}
|
||||
|
||||
if (_my_conn) {
|
||||
mysql_close(_my_conn);
|
||||
_my_conn = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
Status MysqlScanner::open() {
|
||||
if (_is_open) {
|
||||
LOG(INFO) << "this scanner already opened";
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
_my_conn = mysql_init(nullptr);
|
||||
|
||||
if (nullptr == _my_conn) {
|
||||
return Status::InternalError("mysql init failed.");
|
||||
}
|
||||
|
||||
VLOG_CRITICAL << "MysqlScanner::Connect";
|
||||
|
||||
unsigned int mysql_ct = config::external_table_connect_timeout_sec;
|
||||
mysql_options(_my_conn, MYSQL_OPT_CONNECT_TIMEOUT, &mysql_ct);
|
||||
mysql_options(_my_conn, MYSQL_OPT_READ_TIMEOUT, &mysql_ct);
|
||||
if (nullptr == mysql_real_connect(_my_conn, _my_param.host.c_str(), _my_param.user.c_str(),
|
||||
_my_param.passwd.c_str(), _my_param.db.c_str(),
|
||||
atoi(_my_param.port.c_str()), nullptr,
|
||||
_my_param.client_flag)) {
|
||||
Md5Digest pwd;
|
||||
pwd.update(static_cast<const void*>(_my_param.passwd.c_str()), _my_param.passwd.length());
|
||||
pwd.digest();
|
||||
LOG(WARNING) << "connect Mysql: "
|
||||
<< "Host: " << _my_param.host << " user: " << _my_param.user
|
||||
<< " passwd: " << pwd.hex() << " db: " << _my_param.db
|
||||
<< " port: " << _my_param.port;
|
||||
|
||||
return _error_status("mysql real connect failed.");
|
||||
}
|
||||
|
||||
if (mysql_set_character_set(_my_conn, _my_param.charset.c_str())) {
|
||||
return Status::InternalError("mysql set character set failed.");
|
||||
}
|
||||
|
||||
_is_open = true;
|
||||
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status MysqlScanner::query(const std::string& query) {
|
||||
if (!_is_open) {
|
||||
return Status::InternalError("Query before open.");
|
||||
}
|
||||
|
||||
int sql_result = mysql_query(_my_conn, query.c_str());
|
||||
|
||||
if (0 != sql_result) {
|
||||
LOG(WARNING) << "mysql query failed. query =" << query;
|
||||
return _error_status("mysql query failed.");
|
||||
} else {
|
||||
LOG(INFO) << "mysql query success. query =" << query;
|
||||
}
|
||||
|
||||
// clean the last query result
|
||||
if (_my_result) {
|
||||
mysql_free_result(_my_result);
|
||||
}
|
||||
|
||||
// use store result because mysql table is small, can load in memory avoid of many RPC
|
||||
_my_result = mysql_store_result(_my_conn);
|
||||
|
||||
if (nullptr == _my_result) {
|
||||
return _error_status("mysql store result failed.");
|
||||
}
|
||||
|
||||
_field_num = mysql_num_fields(_my_result);
|
||||
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status MysqlScanner::query(const std::string& table, const std::vector<std::string>& fields,
|
||||
const std::vector<std::string>& filters, const uint64_t limit) {
|
||||
if (!_is_open) {
|
||||
return Status::InternalError("Query before open.");
|
||||
}
|
||||
|
||||
_sql_str = "SELECT";
|
||||
|
||||
for (int i = 0; i < fields.size(); ++i) {
|
||||
if (0 != i) {
|
||||
_sql_str += ",";
|
||||
}
|
||||
|
||||
_sql_str += " " + fields[i];
|
||||
}
|
||||
|
||||
_sql_str += " FROM " + table;
|
||||
|
||||
if (!filters.empty()) {
|
||||
_sql_str += " WHERE ";
|
||||
|
||||
for (int i = 0; i < filters.size(); ++i) {
|
||||
if (0 != i) {
|
||||
_sql_str += " AND";
|
||||
}
|
||||
|
||||
_sql_str += " (" + filters[i] + ") ";
|
||||
}
|
||||
}
|
||||
|
||||
if (limit != -1) {
|
||||
_sql_str += " LIMIT " + std::to_string(limit);
|
||||
}
|
||||
|
||||
return query(_sql_str);
|
||||
}
|
||||
|
||||
Status MysqlScanner::get_next_row(char*** buf, unsigned long** lengths, bool* eos) {
|
||||
if (!_is_open) {
|
||||
return Status::InternalError("GetNextRow before open.");
|
||||
}
|
||||
|
||||
if (nullptr == buf || nullptr == lengths || nullptr == eos) {
|
||||
return Status::InternalError("input parameter invalid.");
|
||||
}
|
||||
|
||||
if (nullptr == _my_result) {
|
||||
return Status::InternalError("get next row before query.");
|
||||
}
|
||||
|
||||
*buf = mysql_fetch_row(_my_result);
|
||||
|
||||
if (nullptr == *buf) {
|
||||
*eos = true;
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
*lengths = mysql_fetch_lengths(_my_result);
|
||||
|
||||
if (nullptr == *lengths) {
|
||||
return _error_status("mysql fetch row failed.");
|
||||
}
|
||||
|
||||
*eos = false;
|
||||
|
||||
return Status::OK();
|
||||
}
|
||||
|
||||
Status MysqlScanner::_error_status(const std::string& prefix) {
|
||||
std::stringstream msg;
|
||||
msg << prefix << " Err: " << mysql_error(_my_conn);
|
||||
LOG(INFO) << msg.str();
|
||||
return Status::InternalError(msg.str());
|
||||
}
|
||||
|
||||
} // namespace doris::vectorized
|
||||
|
||||
/* vim: set ts=4 sw=4 sts=4 tw=100 noet: */
|
||||
@@ -1,75 +0,0 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "common/status.h"
|
||||
|
||||
#ifndef __DorisMysql
|
||||
#define __DorisMysql void
|
||||
#endif
|
||||
|
||||
#ifndef __DorisMysqlRes
|
||||
#define __DorisMysqlRes void
|
||||
#endif
|
||||
|
||||
namespace doris::vectorized {
|
||||
|
||||
struct MysqlScannerParam {
|
||||
std::string host;
|
||||
std::string port;
|
||||
std::string user;
|
||||
std::string passwd;
|
||||
std::string db;
|
||||
std::string charset;
|
||||
unsigned long client_flag;
|
||||
MysqlScannerParam() : client_flag(0) {}
|
||||
};
|
||||
|
||||
// Mysql Scanner for scan data from mysql
|
||||
class MysqlScanner {
|
||||
public:
|
||||
MysqlScanner(const MysqlScannerParam& param);
|
||||
~MysqlScanner();
|
||||
|
||||
Status open();
|
||||
Status query(const std::string& query);
|
||||
|
||||
// query for DORIS
|
||||
Status query(const std::string& table, const std::vector<std::string>& fields,
|
||||
const std::vector<std::string>& filters, const uint64_t limit);
|
||||
Status get_next_row(char*** buf, unsigned long** lengths, bool* eos);
|
||||
|
||||
int field_num() const { return _field_num; }
|
||||
|
||||
private:
|
||||
Status _error_status(const std::string& prefix);
|
||||
|
||||
const MysqlScannerParam& _my_param;
|
||||
__DorisMysql* _my_conn = nullptr;
|
||||
__DorisMysqlRes* _my_result = nullptr;
|
||||
std::string _sql_str;
|
||||
bool _is_open;
|
||||
int _field_num;
|
||||
};
|
||||
|
||||
} // namespace doris::vectorized
|
||||
@@ -362,9 +362,6 @@ if [[ "${CLEAN}" -eq 1 && "${BUILD_BE}" -eq 0 && "${BUILD_FE}" -eq 0 && "${BUILD
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ -z "${WITH_MYSQL}" ]]; then
|
||||
WITH_MYSQL='OFF'
|
||||
fi
|
||||
if [[ -z "${GLIBC_COMPATIBILITY}" ]]; then
|
||||
if [[ "${TARGET_SYSTEM}" != 'Darwin' ]]; then
|
||||
GLIBC_COMPATIBILITY='ON'
|
||||
@@ -527,7 +524,6 @@ echo "Get params:
|
||||
BUILD_HIVE_UDF -- ${BUILD_HIVE_UDF}
|
||||
PARALLEL -- ${PARALLEL}
|
||||
CLEAN -- ${CLEAN}
|
||||
WITH_MYSQL -- ${WITH_MYSQL}
|
||||
GLIBC_COMPATIBILITY -- ${GLIBC_COMPATIBILITY}
|
||||
USE_AVX2 -- ${USE_AVX2}
|
||||
USE_LIBCPP -- ${USE_LIBCPP}
|
||||
@@ -627,7 +623,6 @@ if [[ "${BUILD_BE}" -eq 1 ]]; then
|
||||
-DBUILD_BENCHMARK="${BUILD_BENCHMARK}" \
|
||||
-DBUILD_FS_BENCHMARK="${BUILD_FS_BENCHMARK}" \
|
||||
${CMAKE_USE_CCACHE:+${CMAKE_USE_CCACHE}} \
|
||||
-DWITH_MYSQL="${WITH_MYSQL}" \
|
||||
-DUSE_LIBCPP="${USE_LIBCPP}" \
|
||||
-DBUILD_META_TOOL="${BUILD_META_TOOL}" \
|
||||
-DBUILD_FILE_CACHE_MICROBENCH_TOOL="${BUILD_FILE_CACHE_MICROBENCH_TOOL}" \
|
||||
|
||||
@@ -245,7 +245,6 @@ cd "${CMAKE_BUILD_DIR}"
|
||||
-DUSE_LIBCPP="${USE_LIBCPP}" \
|
||||
-DBUILD_META_TOOL=OFF \
|
||||
-DBUILD_FILE_CACHE_MICROBENCH_TOOL=OFF \
|
||||
-DWITH_MYSQL=ON \
|
||||
-DUSE_DWARF="${USE_DWARF}" \
|
||||
-DUSE_UNWIND="${USE_UNWIND}" \
|
||||
-DUSE_MEM_TRACKER="${USE_MEM_TRACKER}" \
|
||||
|
||||
Reference in new issue
Block a user