8 Commits

16 changed files with 87 additions and 18987 deletions

View File

@ -20,8 +20,8 @@ ob_define(OB_USE_ASAN OFF)
ob_define(OB_RELEASEID 1)
set(OBJCOPY_BIN "${DEVTOOLS_DIR}/bin/objcopy")
set(LD_BIN "${DEVTOOLS_DIR}/bin/ld")
find_program(OBJCOPY_BIN objcopy PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin")
find_program(LD_BIN ld PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin")
# share compile cache between different directories
set(DEBUG_PREFIX "-fdebug-prefix-map=${CMAKE_SOURCE_DIR}=.")
@ -43,13 +43,13 @@ if (OB_USE_LLVM_LIBTOOLS)
# use llvm-ar llvm-ranlib llvm-objcopy ld.lld...
set(_CMAKE_TOOLCHAIN_PREFIX llvm-)
set(_CMAKE_TOOLCHAIN_LOCATION "${DEVTOOLS_DIR}/bin")
set(LD_BIN "${DEVTOOLS_DIR}/bin/ld.lld")
set(OBJCOPY_BIN "${DEVTOOLS_DIR}/bin/llvm-objcopy")
find_program(LD_BIN ld.lld PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin")
find_program(OBJCOPY_BIN llvm-objcopy PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin")
endif()
if (OB_USE_CCACHE)
find_program(OB_CCACHE ccache
PATHS "${DEVTOOLS_DIR}/bin"
PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin"
NO_DEFAULT_PATH)
if (NOT OB_CCACHE)
message(WARNING "CCACHE NOT FOUND, COMPILE CACHE MAY NOT WORK.")
@ -65,14 +65,13 @@ endif()
if (OB_USE_CLANG)
find_program(OB_CC clang
PATHS "${DEVTOOLS_DIR}/bin"
PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin"
NO_DEFAULT_PATH)
find_program(OB_CXX clang++
PATHS "${DEVTOOLS_DIR}/bin"
PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin"
NO_DEFAULT_PATH)
set(BUILD_OPT "${BUILD_OPT} --gcc-toolchain=${DEVTOOLS_DIR} -fcolor-diagnostics")
set(BUILD_OPT "${BUILD_OPT} -fcolor-diagnostics")
# just make embedded clang and ccache happy...
set(BUILD_OPT "${BUILD_OPT} -I${DEVTOOLS_DIR}/lib/clang/11.0.1/include")
set(LD_OPT "${LD_OPT} -Wl,-z,noexecstack")
if (OB_USE_ASAN)
@ -97,13 +96,13 @@ else() # not clang, use gcc (such as gcc52 in x86_64)
if(NOT DEFINED OB_CC)
find_program(OB_CC gcc
PATHS "${DEVTOOLS_DIR}/bin"
PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin"
NO_DEFAULT_PATH)
endif()
if(NOT DEFINED OB_CXX)
find_program(OB_CC g++
PATHS "${DEVTOOLS_DIR}/bin"
PATHS "${DEVTOOLS_DIR}/bin" "/usr/bin"
NO_DEFAULT_PATH)
endif()

1
deps/3rd/compile/ld vendored
View File

@ -1 +0,0 @@
../usr/local/oceanbase/devtools/bin/ld.lld

View File

@ -20,6 +20,14 @@ set_property(GLOBAL PROPERTY EASY_INCLUDE_DIRS
${INNER_INCLUDE_DIRS}
)
find_package(PkgConfig REQUIRED)
pkg_check_modules(OPENSSL REQUIRED IMPORTED_TARGET openssl)
if(${OPENSSL_FOUND})
include_directories(${OPENSSL_INCLUDE_DIRS})
else()
message("oceanbase need openssl")
endif()
target_include_directories(
easy_base INTERFACE
${INNER_INCLUDE_DIRS}
@ -43,12 +51,14 @@ target_compile_options(easy_base
INTERFACE
-D_GLIBCXX_USE_CXX11_ABI=0 -D_GNU_SOURCE -D__STDC_LIMIT_MACROS
${MARCH_CFLAGS} ${MTUNE_CFLAGS}
$<$<COMPILE_LANGUAGE:C>:-g -Wall -Werror -fPIC ${EASY_CC_WNO}>
$<$<COMPILE_LANGUAGE:C>:-g -Wall -fPIC ${EASY_CC_WNO}>
)
target_link_libraries(easy_base
INTERFACE
-L${DEP_DIR}/lib
-L${OPENSSL_LIBDIR}
${OPENSSL_LIBRARIES}
-lpthread -lm -l:libssl.a -l:libcrypto.a
${ARCH_LDFLAGS}
)

View File

@ -184,7 +184,10 @@ int easy_ssl_cleanup()
ERR_free_strings();
// SSL_COMP_free();
// sk_SSL_COMP_free (SSL_COMP_get_compression_methods());
#if OPENSSL_VERSION_NUMBER < 0x10100000L
// openssl-1.1 doesn't seem to export this symbol, confirmed on Archlinux
CRYPTO_mem_leaks_fp(stderr);
#endif
easy_free((char*)easy_ssl_lock_cs);
return EASY_OK;
@ -429,9 +432,11 @@ static int easy_ssl_handshake(easy_connection_t* c)
c->read = easy_ssl_read;
c->write = easy_ssl_write;
#if OPENSSL_VERSION_NUMBER < 0x10100000L
if (c->sc->connection->s3) {
c->sc->connection->s3->flags |= SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS;
}
#endif
return EASY_OK;
}
@ -1765,14 +1770,22 @@ static int easy_ssl_dhparam(easy_ssl_ctx_t* ssl, char* file)
return EASY_ERROR;
}
dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL);
dh->g = BN_bin2bn(dh1024_g, sizeof(dh1024_g), NULL);
BIGNUM* p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL);
BIGNUM* g = BN_bin2bn(dh1024_g, sizeof(dh1024_g), NULL);
if (dh->p == NULL || dh->g == NULL) {
if (p == NULL || g == NULL
#if OPENSSL_VERSION_NUMBER >= 0x10100000L
|| !DH_set0_pqg(dh, p, NULL, g)
#endif /* OPENSSL_VERSION_NUMBER >= 0x10100000L */
) {
easy_ssl_error(EASY_LOG_ERROR, "BN_bin2bn() failed");
DH_free(dh);
return EASY_ERROR;
}
#if OPENSSL_VERSION_NUMBER < 0x10100000L
dh->p = p;
dh->g = g;
#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */
SSL_CTX_set_tmp_dh(ssl->ctx, dh);

View File

@ -21,8 +21,8 @@ if (OB_USE_CLANG)
-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_NO_EXCEPTION
-Wall -Wextra -Wformat -Wno-deprecated
-fno-omit-frame-pointer ${MARCH_CFLAGS} ${MTUNE_CFLAGS}
-Wno-address-of-packed-member -Wno-sign-compare -Werror
-Wno-inconsistent-missing-override
-Wno-address-of-packed-member -Wno-sign-compare
-Wno-inconsistent-missing-override
-fno-delete-null-pointer-checks
-Wno-delete-non-virtual-dtor -Wno-dynamic-class-memaccess
-Wno-format-security -Wno-reserved-user-defined-literal -Wno-sometimes-uninitialized

View File

@ -478,4 +478,10 @@ ob_server_add_pchs(share
ob_common_rpc_proxy.h
)
SET(GEN_ERRNO_SCRIPT ${CMAKE_SOURCE_DIR}/src/share/gen_errno.pl)
execute_process(
COMMAND perl ${GEN_ERRNO_SCRIPT}
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/share
)
ob_server_add_target(ob_share)

View File

@ -310,6 +310,11 @@ print $fh_cpp '/**
#define NULL 0
#include <string.h>
#endif
#define ER_KEY_COLUMN_DOES_NOT_EXITS -5211
#define ER_DROP_PARTITION_NON_EXISTENT -5303
#define ER_BLOB_CANT_HAVE_DEFAULT -5994
using namespace oceanbase::common;
// fix ob_error.cpp file requires at least 20g memory for release(-O2) compilation

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1172,8 +1172,9 @@ ob_server_add_pchs(sql
ob_server_add_target(ob_sql)
SET(GEN_PARSER_SCRIPT ${CMAKE_SOURCE_DIR}/src/sql/parser/gen_parser.sh)
execute_process(
COMMAND bash gen_parser.sh
COMMAND bash ${GEN_PARSER_SCRIPT}
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/src/sql/parser
OUTPUT_FILE _gen_parser.output
ERROR_FILE _gen_parser.error)

View File

@ -7,18 +7,9 @@
set +x
CURDIR="$(dirname $(readlink -f "$0"))"
export PATH=$CURDIR/../../../deps/3rd/usr/local/oceanbase/devtools/bin:$PATH
export BISON_PKGDATADIR=$CURDIR/../../../deps/3rd/usr/local/oceanbase/devtools/share/bison
BISON_VERSION=`bison -V| grep 'bison (GNU Bison)'|awk '{ print $4;}'`
NEED_VERSION='2.4.1'
if [ "$BISON_VERSION" != "$NEED_VERSION" ]; then
echo "bison version not match, please use bison-$NEED_VERSION"
exit 1
fi
# generate sql_parser
bison -v -Werror -d ../../../src/sql/parser/sql_parser_mysql_mode.y -o ../../../src/sql/parser/sql_parser_mysql_mode_tab.c
bison -v -d ../../../src/sql/parser/sql_parser_mysql_mode.y -o ../../../src/sql/parser/sql_parser_mysql_mode_tab.c
BISON_RETURN="$?"
if [ $BISON_RETURN -ne 0 ]
then

View File

@ -22,6 +22,9 @@
#include "sql_parser_base.h"
#include "sql_parser_mysql_mode_tab.h"
#define YYLTYPE OBSQL_MYSQL_YYLTYPE
#define YYSTYPE OBSQL_MYSQL_YYSTYPE
#define YYEMPTY OBSQL_MYSQL_YYEMPTY
extern void obsql_mysql_yyerror(YYLTYPE *yylloc, ParseResult *p, char *s,...);
extern void obsql_mysql_parser_fatal_error(yyconst char *msg, yyscan_t yyscanner);
#define yyerror obsql_mysql_yyerror

View File

@ -10,11 +10,16 @@
* See the Mulan PubL v2 for more details.
*/
%define api.pure
%parse-param {ParseResult *result}
%name-prefix "obsql_mysql_yy"
%code requires {
#include "../../../src/sql/parser/parse_node.h"
#define YYEMPTY OBSQL_MYSQL_YYEMPTY
}
%param {ParseResult *result}
%define api.prefix {obsql_mysql_yy}
%locations
%verbose
%error-verbose
%define parse.error verbose
%{
#include <stdint.h>
#define YYDEBUG 1
@ -9100,7 +9105,7 @@ table_factor %prec LOWER_COMMA
natural_join_type:
NATURAL outer_join_type
{
$$ = $2
$$ = $2;
}
| NATURAL opt_inner JOIN
{
@ -12894,7 +12899,7 @@ FILE_ID opt_equal_mark INTNUM
opt_file_id:
file_id
{
$$ = $1
$$ = $1;
}
|
{

View File

@ -1,18 +1,23 @@
message(STATUS "OB_BUILD_LIBOBLOG ${OB_BUILD_LIBOBLOG}")
if (OB_BUILD_LIBOBLOG)
find_package(Git QUIET)
if (GIT_FOUND)
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --remote
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if (NOT GIT_SUBMOD_RESULT EQUAL "0")
message(FATAL_ERROR "git submodule update --init --remote failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
if( NOT EXISTS "${PROJECT_SOURCE_DIR}/deps/logmessage/.git" )
message("not exists ${PROJECT_SOURCE_DIR}/deps/logmessage/.git")
find_package(Git QUIET)
if (GIT_FOUND)
execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --remote
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
RESULT_VARIABLE GIT_SUBMOD_RESULT)
if (NOT GIT_SUBMOD_RESULT EQUAL "0")
message(SEND_ERROR "git submodule update --init --remote failed with ${GIT_SUBMOD_RESULT}, please checkout submodules")
endif()
add_subdirectory(${PROJECT_SOURCE_DIR}/deps/logmessage ${PROJECT_BINARY_DIR}/deps/logmessage EXCLUDE_FROM_ALL)
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
add_subdirectory(src)
add_subdirectory(tests)
else()
message(SEND_ERROR "The git submodules are not available. Please run
git submodule update --init --recursive"
)
endif()
endif()
add_subdirectory(${PROJECT_SOURCE_DIR}/deps/logmessage ${PROJECT_BINARY_DIR}/deps/logmessage EXCLUDE_FROM_ALL)
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
add_subdirectory(src)
add_subdirectory(tests)
else()
message("cannot find executable git")
endif()
endif()

View File

@ -110,7 +110,7 @@ set(SRC_LIST
add_library(obcdc_objects OBJECT ${SRC_LIST})
target_link_libraries(obcdc_objects PUBLIC obcdc_base)
target_compile_definitions(obcdc_objects PRIVATE ENABLE_DEBUG_LOG)
target_compile_options(obcdc_objects PRIVATE -Werror)
#target_compile_options(obcdc_objects PRIVATE -Werror)
disable_pch(obcdc_objects)
set(LGPL_DEPS "-L${DEP_DIR}/lib/mariadb -l:libmariadbclient.a -laio")