From 0703c42b9da223ece21f7e9977c7dcbd032d8d0d Mon Sep 17 00:00:00 2001 From: liunyl Date: Sat, 18 Oct 2025 08:09:17 +0000 Subject: [PATCH] converge restructure fix incorrect compile macro move data substrate init after mysql init rename eloq files, add build as lib option Override cmake source dir with my source dir update latest submodule fix shutdown crash rename tx service to data_substrate update build and pr script fix mtr compatible issue update ci script update default compile options skip basic and main for testing, revert later update config name yield on sync kv call to avoid blocking bthreads update pr and open main ci script --- .gitignore | 1 + .gitmodules | 13 +- CMakeLists.txt | 68 +- README.md | 150 +- client/CMakeLists.txt | 22 +- cmake/abi_check.cmake | 40 +- .../build_configurations/mysql_release.cmake | 2 +- cmake/cpack_deb.cmake | 4 +- cmake/cpack_rpm.cmake | 32 +- cmake/ctest.cmake | 4 +- cmake/dtrace.cmake | 34 +- cmake/info_macros.cmake.in | 22 +- cmake/install_macros.cmake | 10 +- cmake/libutils.cmake | 2 +- cmake/make_dist.cmake.in | 58 +- cmake/mysql_add_executable.cmake | 2 +- cmake/mysql_version.cmake | 14 +- cmake/pcre.cmake | 2 +- cmake/plugin.cmake | 14 +- cmake/readline.cmake | 4 +- cmake/sign.cmake.in | 2 +- cmake/ssl.cmake | 6 +- cmake/submodules.cmake | 12 +- cmake/tags.cmake | 4 +- cmake/wsrep.cmake | 10 +- cmake/zlib.cmake | 2 +- concourse/scripts/main.bash | 180 +- concourse/scripts/main.ent.bash | 159 +- concourse/scripts/mtr_bootstrap.cnf | 25 +- concourse/scripts/mtr_bootstrap_ds.cnf | 26 + concourse/scripts/mtr_multi_bootstrap.cnf | 25 +- concourse/scripts/mtr_multi_bootstrap_ds.cnf | 28 + concourse/scripts/pr.ent.bash | 161 +- concourse/scripts/tag.sh | 4 +- configure.cmake | 6 +- data_substrate | 1 + dbug/CMakeLists.txt | 4 +- extra/CMakeLists.txt | 24 +- extra/mariabackup/CMakeLists.txt | 6 +- extra/readline/CMakeLists.txt | 2 +- libmysqld/CMakeLists.txt | 22 +- libmysqld/examples/CMakeLists.txt | 6 +- libservices/CMakeLists.txt | 2 +- mysql-test/CMakeLists.txt | 4 +- mysql-test/include/eloq_kv_dss.cnf | 15 - mysql-test/include/eloq_kv_keyspace.cnf | 4 - mysql-test/include/eloq_kv_storage.cnf | 2 - mysql-test/lib/My/SafeProcess/CMakeLists.txt | 4 +- mysql-test/mtr.out-of-source | 6 +- mysys/CMakeLists.txt | 2 +- mysys_ssl/CMakeLists.txt | 4 +- plugin/auth_dialog/CMakeLists.txt | 2 +- plugin/disks/CMakeLists.txt | 2 +- plugin/feedback/CMakeLists.txt | 2 +- plugin/file_key_management/CMakeLists.txt | 2 +- plugin/locale_info/CMakeLists.txt | 2 +- plugin/qc_info/CMakeLists.txt | 2 +- plugin/type_geom/CMakeLists.txt | 2 +- plugin/userstat/CMakeLists.txt | 2 +- plugin/wsrep_info/CMakeLists.txt | 4 +- scripts/CMakeLists.txt | 6 +- scripts/sys_schema/CMakeLists.txt | 2 +- sql/CMakeLists.txt | 71 +- sql/circular_queue.h | 258 +++ sql/glog_error_logging.cc | 6 +- sql/handler.cc | 1 + sql/main.cc | 22 + sql/mdl.h | 2 +- sql/mysql_metrics.h | 4 +- sql/mysqld.cc | 89 +- sql/sql_class.h | 3 +- sql/sql_parse.cc | 2 +- sql/sql_select.cc | 2 +- sql/threadpool_generic.h | 2 +- storage/eloq/CMakeLists.txt | 332 +-- storage/eloq/build_eloq_log_service.cmake | 281 --- storage/eloq/build_eloq_metrics.cmake | 42 - storage/eloq/build_log_service.cmake | 158 -- storage/eloq/build_tx_service.cmake | 273 --- storage/eloq/eloq_db.cpp | 12 +- storage/eloq/eloq_db_dl.h | 25 +- storage/eloq/eloq_i_s.cc | 2 +- storage/eloq/eloq_key_def.cc | 4 +- storage/eloq/eloq_key_def.h | 2 +- storage/eloq/eloq_metrics | 1 - storage/eloq/eloq_system_handler.h | 11 +- ...actory.cpp => eloqsql_catalog_factory.cpp} | 8 +- ...og_factory.h => eloqsql_catalog_factory.h} | 11 +- storage/eloq/{eloq_key.h => eloqsql_key.h} | 0 .../{eloq_schema.cpp => eloqsql_schema.cpp} | 4 +- .../eloq/{eloq_schema.h => eloqsql_schema.h} | 0 storage/eloq/ha_eloq.cc | 2003 +---------------- storage/eloq/ha_eloq.h | 8 +- storage/eloq/log_service | 1 - storage/eloq/metrics_registry_impl.cpp | 80 - storage/eloq/metrics_registry_impl.h | 67 - .../mysql-test/mono_basic/data_substrate.cnf | 24 + .../include/have_range_partition.inc | 21 - storage/eloq/mysql-test/mono_basic/my.cnf | 15 +- .../mysql-test/mono_basic/t/alter_table.test | 1 - .../mono_basic/t/alter_table_recovery.test | 1 - .../mono_basic/t/create_drop_index.test | 1 - .../mono_basic/t/data_store_error.test | 1 - .../mono_basic/t/deadlock_handling.cnf | 14 +- .../mono_basic/t/flush_undo_while_ckpt.cnf | 15 +- .../mono_basic/t/flush_undo_while_ckpt.opt | 1 + .../t/isolation_level_for_locking.cnf | 12 +- .../mono_basic/t/isolation_level_for_mvcc.cnf | 14 +- .../mono_basic/t/isolation_level_for_mvcc.opt | 1 + .../mono_basic/t/isolation_level_for_occ.cnf | 18 +- .../mysql-test/mono_basic/t/key_cache.cnf | 14 +- .../mysql-test/mono_basic/t/key_cache.opt | 1 + .../mono_basic/t/mvcc_archives_recycle.cnf | 12 +- .../mono_basic/t/mvcc_archives_recycle.opt | 1 + ...vcc_read_after_flushing_deleted_record.cnf | 12 +- ...vcc_read_after_flushing_deleted_record.opt | 1 + ...nique_sk_after_flushing_deleted_record.cnf | 12 +- ...nique_sk_after_flushing_deleted_record.opt | 1 + .../mysql-test/mono_basic/t/mvcc_scan.cnf | 15 +- .../mysql-test/mono_basic/t/mvcc_scan.opt | 1 + ...vcc_scan_after_flushing_deleted_record.cnf | 12 +- ...vcc_scan_after_flushing_deleted_record.opt | 1 + .../mysql-test/mono_basic/t/mvcc_scan_sk.cnf | 12 +- .../mysql-test/mono_basic/t/mvcc_scan_sk.opt | 1 + .../mono_basic/t/mvcc_scan_sk_rc_isolvl.cnf | 4 +- .../mono_basic/t/mvcc_unique_sk_lookup.cnf | 12 +- .../mono_basic/t/mvcc_unique_sk_lookup.opt | 1 + .../mono_basic/t/poor_performance.cnf | 16 +- .../mono_basic/t/poor_performance.opt | 1 + .../mono_basic/t/poor_performance.test | 1 - .../mono_basic/t/range_split_keycache.cnf | 18 +- .../mono_basic/t/range_split_keycache.opt | 1 + .../mono_basic/t/range_split_keycache.test | 1 - .../t/select_for_update_and_share.cnf | 12 +- .../t/select_for_update_and_share_occ.cnf | 26 - .../mono_basic/t/single_dead_lock_check.cnf | 15 +- .../mono_basic/t/single_dead_lock_check.opt | 1 + .../mysql-test/mono_basic/t/single_node.cnf | 27 - .../mysql-test/mono_main/data_substrate.cnf | 24 + storage/eloq/mysql-test/mono_main/my.cnf | 17 +- .../r/system_mysql_db_error_log.result | 8 +- .../eloq/mysql-test/mono_main/t/commit.opt | 2 +- .../mono_main/t/connect-abstract.cnf | 17 +- .../eloq/mysql-test/mono_main/t/connect.cnf | 17 +- .../eloq/mysql-test/mono_main/t/connect2.cnf | 13 +- .../eloq/mysql-test/mono_main/t/connect2.opt | 1 + .../mono_main/t/consistent_snapshot.opt | 2 +- .../mono_main/t/pool_of_threads.cnf | 13 +- .../mono_main/t/pool_of_threads.opt | 1 + .../mysql-test/mono_main/t/sp_notembedded.opt | 2 +- .../t/subselect_exists2in_costmat.cnf | 13 +- .../mono_main/t/subselect_mat_cost.cnf | 13 +- .../t/system_mysql_db_error_log.test | 8 +- .../mysql-test/mono_multi/data_substrate1.cnf | 19 + .../mysql-test/mono_multi/data_substrate2.cnf | 19 + .../mysql-test/mono_multi/data_substrate3.cnf | 18 + storage/eloq/mysql-test/mono_multi/my.cnf | 21 +- .../t/alter_schema_term_changed.test | 1 - .../mono_multi/t/check_blocked_request.cnf | 46 - .../mono_multi/t/check_blocked_request.opt | 1 + .../mono_multi/t/create_drop_index.test | 1 - .../mono_multi/t/fault_create_drop_index.test | 1 - .../mono_multi/t/improve_ckpt_flush_undo.cnf | 46 - .../mono_multi/t/improve_ckpt_flush_undo.opt | 1 + .../t/improve_ckpt_flush_undo_sk1.cnf | 46 - .../t/improve_ckpt_flush_undo_sk1.opt | 1 + .../t/improve_ckpt_flush_undo_sk2.cnf | 46 - .../t/improve_ckpt_flush_undo_sk2.opt | 1 + .../mono_multi/t/multi_dead_lock_check.cnf | 48 - .../mono_multi/t/multi_dead_lock_check.opt | 1 + .../mysql-test/mono_multi/t/range_split.test | 1 - .../mono_multi/t/range_split_keycache.cnf | 51 - .../mono_multi/t/range_split_keycache.opt | 1 + .../mono_multi/t/range_split_keycache.test | 1 - .../mono_multi/t/range_split_recovery.cnf | 49 - .../mono_multi/t/range_split_recovery.opt | 1 + .../mono_multi/t/range_split_recovery.test | 1 - .../t/range_split_write_forward.test | 1 - .../mysql-test/mono_multi/t/tx_timeout.cnf | 45 - .../mysql-test/mono_multi/t/tx_timeout.opt | 1 + storage/eloq/store_handler | 1 - storage/eloq/tx_service | 1 - storage/innobase/CMakeLists.txt | 2 +- storage/innobase/innodb.cmake | 10 +- storage/innobase/unittest/CMakeLists.txt | 8 +- storage/maria/unittest/CMakeLists.txt | 4 +- storage/mroonga/CMakeLists.txt | 12 +- storage/mroonga/vendor/groonga/CMakeLists.txt | 2 +- .../groonga-normalizer-mysql/CMakeLists.txt | 4 +- storage/perfschema/CMakeLists.txt | 6 +- storage/perfschema/unittest/CMakeLists.txt | 10 +- storage/rocksdb/unittest/CMakeLists.txt | 6 +- storage/spider/CMakeLists.txt | 8 +- strings/CMakeLists.txt | 2 +- tests/CMakeLists.txt | 8 +- unittest/embedded/CMakeLists.txt | 6 +- unittest/json_lib/CMakeLists.txt | 8 +- unittest/my_decimal/CMakeLists.txt | 8 +- unittest/mytap/CMakeLists.txt | 2 +- unittest/sql/CMakeLists.txt | 8 +- vio/CMakeLists.txt | 2 +- win/packaging/CMakeLists.txt | 10 +- win/packaging/ca/CMakeLists.txt | 4 +- win/upgrade_wizard/CMakeLists.txt | 4 +- 204 files changed, 1508 insertions(+), 4690 deletions(-) create mode 100644 concourse/scripts/mtr_bootstrap_ds.cnf create mode 100644 concourse/scripts/mtr_multi_bootstrap_ds.cnf create mode 160000 data_substrate delete mode 100644 mysql-test/include/eloq_kv_dss.cnf delete mode 100644 mysql-test/include/eloq_kv_storage.cnf create mode 100644 sql/circular_queue.h delete mode 100644 storage/eloq/build_eloq_log_service.cmake delete mode 100644 storage/eloq/build_eloq_metrics.cmake delete mode 100644 storage/eloq/build_log_service.cmake delete mode 100644 storage/eloq/build_tx_service.cmake delete mode 160000 storage/eloq/eloq_metrics rename storage/eloq/{eloq_catalog_factory.cpp => eloqsql_catalog_factory.cpp} (99%) rename storage/eloq/{eloq_catalog_factory.h => eloqsql_catalog_factory.h} (96%) rename storage/eloq/{eloq_key.h => eloqsql_key.h} (100%) rename storage/eloq/{eloq_schema.cpp => eloqsql_schema.cpp} (99%) rename storage/eloq/{eloq_schema.h => eloqsql_schema.h} (100%) delete mode 160000 storage/eloq/log_service delete mode 100644 storage/eloq/metrics_registry_impl.cpp delete mode 100644 storage/eloq/metrics_registry_impl.h create mode 100644 storage/eloq/mysql-test/mono_basic/data_substrate.cnf delete mode 100644 storage/eloq/mysql-test/mono_basic/include/have_range_partition.inc create mode 100644 storage/eloq/mysql-test/mono_basic/t/flush_undo_while_ckpt.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/isolation_level_for_mvcc.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/key_cache.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/mvcc_archives_recycle.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/mvcc_read_after_flushing_deleted_record.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/mvcc_read_unique_sk_after_flushing_deleted_record.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/mvcc_scan.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/mvcc_scan_after_flushing_deleted_record.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/mvcc_unique_sk_lookup.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/poor_performance.opt create mode 100644 storage/eloq/mysql-test/mono_basic/t/range_split_keycache.opt delete mode 100644 storage/eloq/mysql-test/mono_basic/t/select_for_update_and_share_occ.cnf create mode 100644 storage/eloq/mysql-test/mono_basic/t/single_dead_lock_check.opt delete mode 100644 storage/eloq/mysql-test/mono_basic/t/single_node.cnf create mode 100644 storage/eloq/mysql-test/mono_main/data_substrate.cnf create mode 100644 storage/eloq/mysql-test/mono_main/t/connect2.opt create mode 100644 storage/eloq/mysql-test/mono_main/t/pool_of_threads.opt create mode 100644 storage/eloq/mysql-test/mono_multi/data_substrate1.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/data_substrate2.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/data_substrate3.cnf delete mode 100644 storage/eloq/mysql-test/mono_multi/t/check_blocked_request.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/t/check_blocked_request.opt delete mode 100644 storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo.opt delete mode 100644 storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk1.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk1.opt delete mode 100644 storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk2.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk2.opt delete mode 100644 storage/eloq/mysql-test/mono_multi/t/multi_dead_lock_check.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/t/multi_dead_lock_check.opt delete mode 100644 storage/eloq/mysql-test/mono_multi/t/range_split_keycache.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/t/range_split_keycache.opt delete mode 100644 storage/eloq/mysql-test/mono_multi/t/range_split_recovery.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/t/range_split_recovery.opt delete mode 100644 storage/eloq/mysql-test/mono_multi/t/tx_timeout.cnf create mode 100644 storage/eloq/mysql-test/mono_multi/t/tx_timeout.opt delete mode 160000 storage/eloq/store_handler delete mode 160000 storage/eloq/tx_service diff --git a/.gitignore b/.gitignore index 5233e6382a6..b1921f1e071 100644 --- a/.gitignore +++ b/.gitignore @@ -544,6 +544,7 @@ compile_commands.json # Visual Studio Code workspace .vscode/ +.cursor/ # Clion && other JetBrains ides /.idea/ diff --git a/.gitmodules b/.gitmodules index f680171f7ba..9d05722eee7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -17,15 +17,6 @@ [submodule "storage/columnstore/columnstore"] path = storage/columnstore/columnstore url = https://github.com/mariadb-corporation/mariadb-columnstore-engine.git -[submodule "storage/eloq/eloq_metrics"] - path = storage/eloq/eloq_metrics - url = https://github.com/eloqdata/eloq-metrics.git -[submodule "storage/eloq/tx_service"] - path = storage/eloq/tx_service +[submodule "data_substrate/tx_service"] + path = data_substrate url = https://github.com/eloqdata/tx_service.git -[submodule "storage/eloq/store_handler"] - path = storage/eloq/store_handler - url = https://github.com/eloqdata/store_handler.git -[submodule "storage/eloq/log_service"] - path = storage/eloq/log_service - url = https://github.com/eloqdata/log_service.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 84ac54ce155..7338538da78 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,9 +40,16 @@ FOREACH(p CMP0022 CMP0046 CMP0040 CMP0048 CMP0054 CMP0075 CMP0069 CMP0135) ENDFOREACH() MESSAGE(STATUS "Running cmake version ${CMAKE_VERSION}") +# Option to build as library for converged binary +option(BUILD_ELOQSQL_AS_LIBRARY "Build eloqsql as library instead of executable" OFF) + +# IF(BUILD_ELOQSQL_AS_LIBRARY) + SET(ELOQSQL_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + SET(ELOQSQL_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}) +# ENDIF() SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_SOURCE_DIR}/cmake/Internal/CPack) + ${ELOQSQL_SOURCE_DIR}/cmake ${ELOQSQL_SOURCE_DIR}/cmake/Internal/CPack) # Use a default manufacturer if no manufacturer was identified. IF(NOT DEFINED MANUFACTURER) @@ -98,9 +105,10 @@ SET(CPACK_PACKAGE_NAME "MariaDB") SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "MariaDB: a very fast and robust SQL database server") SET(CPACK_PACKAGE_URL "http://mariadb.org") +option(WITH_DYNAMO_DB "With DynamoDB" OFF) IF(BUILD_CONFIG) INCLUDE( - ${CMAKE_SOURCE_DIR}/cmake/build_configurations/${BUILD_CONFIG}.cmake) + ${ELOQSQL_SOURCE_DIR}/cmake/build_configurations/${BUILD_CONFIG}.cmake) ENDIF() # Include the platform-specific file. To allow exceptions, this code @@ -113,7 +121,7 @@ FOREACH(_base ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}-${CMAKE_SYSTEM_PROCESSOR} ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION} ${CMAKE_SYSTEM_NAME}) - SET(_file ${CMAKE_SOURCE_DIR}/cmake/os/${_base}.cmake) + SET(_file ${ELOQSQL_SOURCE_DIR}/cmake/os/${_base}.cmake) IF(EXISTS ${_file}) INCLUDE(${_file}) BREAK() @@ -189,7 +197,7 @@ OPTION(WITHOUT_SERVER "Build only the client library and clients" OFF) IF(UNIX) OPTION(WITH_VALGRIND "Valgrind instrumentation" OFF) ENDIF() -OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" ON) +OPTION (WITH_UNIT_TESTS "Compile MySQL with unit tests" OFF) IF (WITHOUT_SERVER) SET (SKIP_COMPONENTS "Server|IniFiles|SuportFiles|Readme") @@ -450,10 +458,21 @@ INCLUDE(cpack_deb) SET(PYTHON_SHEBANG "/usr/bin/env python3" CACHE STRING "python shebang") MARK_AS_ADVANCED(PYTHON_SHEBANG) - # Add storage engines and plugins. CONFIGURE_PLUGINS() +add_compile_definitions(ELOQ_MODULE_ELOQSQL) +# Build data substrate library first (before sql/ and storage/) +if(NOT BUILD_ELOQSQL_AS_LIBRARY) + # Build data substrate library first (standalone mode) + ADD_SUBDIRECTORY(data_substrate) +else() + # Use parent data_substrate (converged mode) + message(STATUS "EloqSQL: Using parent data_substrate") + # When building as library, mysqld will NOT initialize data substrate + # It will use synchronization with converged main instead + add_compile_definitions(MYSQLD_LIBRARY_MODE) +endif() ADD_SUBDIRECTORY(include) ADD_SUBDIRECTORY(dbug) ADD_SUBDIRECTORY(strings) @@ -505,15 +524,15 @@ IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR) ENDIF() # minimal target to build only binaries for export ADD_CUSTOM_TARGET(import_executables DEPENDS ${EXPORTED}) - EXPORT(TARGETS ${EXPORTED} FILE ${CMAKE_BINARY_DIR}/import_executables.cmake) + EXPORT(TARGETS ${EXPORTED} FILE ${ELOQSQL_BINARY_DIR}/import_executables.cmake) ENDIF() -CONFIGURE_FILE(config.h.cmake ${CMAKE_BINARY_DIR}/include/my_config.h) -CONFIGURE_FILE(config.h.cmake ${CMAKE_BINARY_DIR}/include/config.h) -CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/mysql_version.h.in - ${CMAKE_BINARY_DIR}/include/mysql_version.h ) -CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/sql/sql_builtin.cc.in - ${CMAKE_BINARY_DIR}/sql/sql_builtin.cc) +CONFIGURE_FILE(config.h.cmake ${ELOQSQL_BINARY_DIR}/include/my_config.h) +CONFIGURE_FILE(config.h.cmake ${ELOQSQL_BINARY_DIR}/include/config.h) +CONFIGURE_FILE(${ELOQSQL_SOURCE_DIR}/include/mysql_version.h.in + ${ELOQSQL_BINARY_DIR}/include/mysql_version.h ) +CONFIGURE_FILE(${ELOQSQL_SOURCE_DIR}/sql/sql_builtin.cc.in + ${ELOQSQL_BINARY_DIR}/sql/sql_builtin.cc) IF(GIT_EXECUTABLE AND EXISTS ${PROJECT_SOURCE_DIR}/.git) EXECUTE_PROCESS( @@ -531,30 +550,30 @@ IF(SOURCE_REVISION OR ENDIF() CONFIGURE_FILE( - ${CMAKE_SOURCE_DIR}/cmake/info_macros.cmake.in - ${CMAKE_BINARY_DIR}/info_macros.cmake @ONLY) + ${ELOQSQL_SOURCE_DIR}/cmake/info_macros.cmake.in + ${ELOQSQL_BINARY_DIR}/info_macros.cmake @ONLY) # Handle the "INFO_*" files. -INCLUDE(${CMAKE_BINARY_DIR}/info_macros.cmake) +INCLUDE(${ELOQSQL_BINARY_DIR}/info_macros.cmake) # Source: This can be done during the cmake phase, all information is # available, but should be repeated on each "make" just in case someone # does "cmake ; make ; git pull ; make". -CREATE_INFO_SRC(${CMAKE_BINARY_DIR}/Docs) +CREATE_INFO_SRC(${ELOQSQL_BINARY_DIR}/Docs) ADD_CUSTOM_TARGET(INFO_SRC ALL - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/info_src.cmake - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -P ${ELOQSQL_SOURCE_DIR}/cmake/info_src.cmake + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR} ) # Build flags: This must be postponed to the make phase. ADD_CUSTOM_TARGET(INFO_BIN ALL - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/info_bin.cmake - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -P ${ELOQSQL_SOURCE_DIR}/cmake/info_bin.cmake + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR} ) INSTALL_DOCUMENTATION(README.md CREDITS COPYING THIRDPARTY COMPONENT Readme) # MDEV-6526 these files are not installed anymore -#INSTALL_DOCUMENTATION(${CMAKE_BINARY_DIR}/Docs/INFO_SRC -# ${CMAKE_BINARY_DIR}/Docs/INFO_BIN) +#INSTALL_DOCUMENTATION(${ELOQSQL_BINARY_DIR}/Docs/INFO_SRC +# ${ELOQSQL_BINARY_DIR}/Docs/INFO_BIN) IF(UNIX) INSTALL_DOCUMENTATION(Docs/INSTALL-BINARY Docs/README-wsrep COMPONENT Readme) @@ -583,7 +602,7 @@ IF(NON_DISTRIBUTABLE_WARNING) You have linked MariaDB with ${NON_DISTRIBUTABLE_WARNING} libraries! You may not distribute the resulting binary. If you do, you will put yourself into a legal problem with the Free Software Foundation.") ENDIF() -IF(NOT WITHOUT_SERVER) +IF(NOT WITHOUT_SERVER AND NOT BUILD_ELOQSQL_AS_LIBRARY) # Define target for minimal mtr-testable build ADD_CUSTOM_TARGET(minbuild) ADD_DEPENDENCIES(minbuild @@ -617,8 +636,7 @@ IF(NOT WITHOUT_SERVER) ENDIF() ADD_CUSTOM_TARGET(smoketest COMMAND perl ./mysql-test-run.pl main.1st - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/mysql-test) + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR}/mysql-test) ADD_DEPENDENCIES(smoketest minbuild) ENDIF() -option(WITH_DYNAMO_DB "With DynamoDB" OFF) diff --git a/README.md b/README.md index 0f77f0e7d46..158b5da9fce 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ A MySQL-compatible, high performance, elastic, distributed SQL database. --- ## Overview -EloqSQL is a distributed SQL database designed to combine MySQL compatibility with the scalability and performance of modern distributed systems. Built on top of [Data Substrate](https://www.eloqdata.com/blog/2024/08/11/data-substrate), it replaces traditional storage engines like InnoDB with a flexible, distributed and high-performance eloq engine: [Transaction Service](https://github.com/eloqdata/tx_service). It has distributed buffer pool and support Cassandra, ScyllaDB and DynamoDB as the underlying data store. +EloqSQL is a distributed SQL database designed to combine MySQL compatibility with the scalability and performance of modern distributed systems. Built on top of [Data Substrate](https://www.eloqdata.com/blog/2024/08/11/data-substrate), it replaces traditional storage engines like InnoDB with a flexible, distributed and high-performance eloq engine: [Transaction Service](https://github.com/eloqdata/tx_service). It has distributed buffer pool and support **RocksDB**, **RocksDB-Cloud**, and **DynamoDB** as storage. EloqSQL delivers full ACID transactions, elastic scaling, and efficient resource utilization, making it ideal for demanding workloads. @@ -129,9 +129,9 @@ cmake --install . --config RelWithDebInfo ``` ### 4. Set Up Storage Backend -EloqSQL use s3 as storage backends. For testing, just deploy a s3 emulator. +EloqSQL relies on S3-compatible object storage for durable data. In development you can emulate this by running [MinIO](https://min.io/). -Download and start a MINIO instance: +Download and start a MinIO instance: ```bash wget https://dl.min.io/server/minio/release/linux-amd64/minio @@ -140,7 +140,12 @@ chmod +x minio ``` ### 5. Configure EloqSQL -Edit my-config.cnf with the following example settings: +EloqSQL now uses **two** configuration files: + +1. A MySQL config (`my-config.cnf`) for server/bootstrap settings. +2. A Data Substrate config (`data_substrate.cnf`) that contains data substrate related settings. This file must be in INI format, and MySQL references it through the `eloq_config` system variable. + +#### MySQL config (`my-config.cnf`) ``` [mariadb] @@ -153,16 +158,34 @@ socket=/tmp/mysqld3316.sock plugin_load_add=ha_eloq eloq eloq_kv_storage=eloqds -eloq_dss_rocksdb_cloud_endpoint_url=http://127.0.0.1:9000 -eloq_dss_rocksdb_cloud_bucket_name=eloqsql -eloq_dss_rocksdb_cloud_bucket_prefix=dss- -eloq_dss_rocksdb_cloud_region=ap-northeast-1 -eloq_aws_access_key_id=minioadmin -eloq_aws_secret_key=minioadmin -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 +eloq_config=${HOME}/data_substrate.cnf ``` +> **Note:** `eloq_config` must point to an absolute path that the `mysqld` process can read. Without this file, the Data Substrate initialization fails and the server will not start. + +#### Data Substrate config (`data_substrate.cnf`) + +``` +[local] +tx_ip=127.0.0.1 +tx_port=8000 +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9000 +txlog_rocksdb_cloud_bucket_name=eloqsql +txlog_rocksdb_cloud_bucket_prefix=txlog- +txlog_rocksdb_cloud_region=ap-northeast-1 + +[store] +aws_access_key_id=minioadmin +aws_secret_key=minioadmin +rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9000 +rocksdb_cloud_bucket_name=eloqsql +rocksdb_cloud_bucket_prefix=dss- +rocksdb_cloud_region=ap-northeast-1 +eloq_dss_config_file_path= +``` + +You can copy `storage/eloq/mysql-test/mono_main/data_substrate.cnf` as a starting point and then set the values to match your environment. Any option related to Data Substrate (TX service, storage backends, AWS credentials, etc.) must live in this INI file so that the `eloq_config` pointer can load it during server startup. + ### 6. Bootstrap EloqSQL Node Initialize the database: @@ -193,47 +216,39 @@ sudo ${INSTALL_DIR}/bin/mysql -u root -S /tmp/mysqld3316.sock --- ### 9. Run mtr test locally -Shutdown EloqSQL before running mtr tests. +MariaDB’s **mysql-test-runner (mtr)** suite still works with EloqSQL. Stop any running server before launching tests so the harness can manage its own instances. #### 1. mono_basic and mono_main: -Edit eloqsql/concourse/scripts/mtr_bootstrap.cnf with the following example settings: +Edit `eloqsql/concourse/scripts/mtr_bootstrap.cnf` to point at the shared Data Substrate template. Example: ```ini [mariadb] ... -eloq_aws_access_key_id=minioadmin -eloq_aws_secret_key=minioadmin -eloq_txlog_rocksdb_cloud_endpoint_url=http://127.0.0.1:9000 -eloq_txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_txlog_rocksdb_cloud_bucket_prefix = txlog- -eloq_txlog_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_rocksdb_cloud_endpoint_url=http://127.0.0.1:9000 -eloq_dss_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_dss_rocksdb_cloud_bucket_prefix = dss- -eloq_dss_rocksdb_cloud_region = ap-northeast-1 - -... - +eloq_config=/abs/path/to/eloqsql/concourse/scripts/mtr_bootstrap_ds.cnf ``` -Edit eloqsql/mysql-test/include/eloq_kv_dss.cnf with the following example settings: +Then populate `eloqsql/concourse/scripts/mtr_bootstrap_ds.cnf` with your S3/Dynamo/AWS credentials: ```ini -[mysqld] -eloq_aws_access_key_id=minioadmin -eloq_aws_secret_key=minioadmin -eloq_txlog_rocksdb_cloud_endpoint_url=http://127.0.0.1:9000 -eloq_txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_txlog_rocksdb_cloud_bucket_prefix = txlog- -eloq_txlog_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_rocksdb_cloud_endpoint_url=http://127.0.0.1:9000 -eloq_dss_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_dss_rocksdb_cloud_bucket_prefix = dss- -eloq_dss_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_rocksdb_cloud_sst_file_cache_size = 20GB +[local] +tx_ip=127.0.0.1 +tx_port=8000 +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9000 +txlog_rocksdb_cloud_bucket_name=eloqsql-mtr-test +txlog_rocksdb_cloud_bucket_prefix=txlog- +txlog_rocksdb_cloud_region=ap-northeast-1 +[store] +aws_access_key_id=minioadmin +aws_secret_key=minioadmin +rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9000 +rocksdb_cloud_bucket_name=eloqsql-mtr-test +rocksdb_cloud_bucket_prefix=dss- +rocksdb_cloud_region=ap-northeast-1 ``` +> Tip: the same values should be copied into `storage/eloq/mysql-test/mono_basic/data_substrate.cnf` and `storage/eloq/mysql-test/mono_main/data_substrate.cnf` so the suite-specific configs stay consistent. + Run mono_basic and mono_main test ```bash pkill -9 dss_server @@ -251,26 +266,29 @@ build/mysql-test/mtr --clean-txlog-bucket-restart --suite=mono_basic,mono_main - #### 2. mono_multi: -Edit eloqsql/concourse/scripts/mtr_multi_bootstrap.cnf with the following example settings: -```ini -[mariadb] +Edit `eloqsql/concourse/scripts/mtr_multi_bootstrap.cnf` so that `eloq_config` references `concourse/scripts/mtr_multi_bootstrap_ds.cnf` (same pattern as mono_basic). -... +Configure `eloqsql/concourse/scripts/mtr_multi_bootstrap_ds.cnf` with the multi-node Data Substrate details: +```ini +[local] +tx_ip=127.0.0.1 +tx_port=8000 +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9000 +txlog_rocksdb_cloud_bucket_name=eloqsql-mtr-test +txlog_rocksdb_cloud_bucket_prefix=txlog- +txlog_rocksdb_cloud_region=ap-northeast-1 -eloq_aws_access_key_id=minioadmin -eloq_aws_secret_key=minioadmin -eloq_txlog_rocksdb_cloud_endpoint_url=http://127.0.0.1:9000 -eloq_txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_txlog_rocksdb_cloud_bucket_prefix = txlog- -eloq_txlog_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_rocksdb_cloud_endpoint_url=http://127.0.0.1:9000 -eloq_dss_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_dss_rocksdb_cloud_bucket_prefix = dss- -eloq_dss_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_peer_node=localhost:9100 # add this line for mono_multi - -... +[cluster] +tx_ip_port_list=127.0.0.1:8000 +eloq_dss_peer_node=localhost:9100 +[store] +aws_access_key_id=minioadmin +aws_secret_key=minioadmin +rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9000 +rocksdb_cloud_bucket_name=eloqsql-mtr-test +rocksdb_cloud_bucket_prefix=dss- +rocksdb_cloud_region=ap-northeast-1 ``` Edit eloqsql/concourse/scripts/dss_server.ini with the following example settings: @@ -291,23 +309,7 @@ aws_secret_key=minioadmin ``` -Edit eloqsql/mysql-test/include/eloq_kv_dss.cnf with the following example settings: -```ini -[mysqld] -eloq_aws_access_key_id=minioadmin -eloq_aws_secret_key=minioadmin -eloq_txlog_rocksdb_cloud_endpoint_url=http://127.0.0.1:9000 -eloq_txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_txlog_rocksdb_cloud_bucket_prefix = txlog- -eloq_txlog_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_rocksdb_cloud_endpoint_url=http://127.0.0.1:9000 -eloq_dss_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_dss_rocksdb_cloud_bucket_prefix = dss- -eloq_dss_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_peer_node = localhost:9100 # add this line for mono_multi -eloq_dss_rocksdb_cloud_sst_file_cache_size = 20GB - -``` +Each `storage/eloq/mysql-test/mono_multi/data_substrate*.cnf` file also mirrors these values for the individual mysqld instances in the suite. Run mono_multi test ```bash diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 27fc76e6321..8b91bca8e70 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -15,20 +15,20 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA INCLUDE_DIRECTORIES( - ${CMAKE_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/include ${PCRE_INCLUDES} - ${CMAKE_SOURCE_DIR}/mysys_ssl + ${ELOQSQL_SOURCE_DIR}/mysys_ssl ${ZLIB_INCLUDE_DIR} ${SSL_INCLUDE_DIRS} - ${CMAKE_SOURCE_DIR}/sql - ${CMAKE_SOURCE_DIR}/strings + ${ELOQSQL_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/strings ${MY_READLINE_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ) INCLUDE_DIRECTORIES(BEFORE - ${CMAKE_BINARY_DIR}/libmariadb/include - ${CMAKE_SOURCE_DIR}/libmariadb/include) + ${ELOQSQL_BINARY_DIR}/libmariadb/include + ${ELOQSQL_SOURCE_DIR}/libmariadb/include) ## We will need libeay32.dll and ssleay32.dll when running client executables. COPY_OPENSSL_DLLS(copy_openssl_client) @@ -37,18 +37,18 @@ SET(CLIENT_LIB mariadbclient mysys) ADD_DEFINITIONS(${SSL_DEFINES}) MYSQL_ADD_EXECUTABLE(mariadb completion_hash.cc mysql.cc readline.cc - ${CMAKE_SOURCE_DIR}/sql/sql_string.cc) + ${ELOQSQL_SOURCE_DIR}/sql/sql_string.cc) TARGET_LINK_LIBRARIES(mariadb ${CLIENT_LIB}) IF(UNIX) TARGET_LINK_LIBRARIES(mariadb ${MY_READLINE_LIBRARY}) SET_TARGET_PROPERTIES(mariadb PROPERTIES ENABLE_EXPORTS TRUE) ENDIF(UNIX) -IF(PLUGIN_ELOQ) +# IF(PLUGIN_ELOQ) ADD_DEFINITIONS(-DWITH_ELOQ_STORAGE_ENGINE) -ENDIF() +# ENDIF() -MYSQL_ADD_EXECUTABLE(mariadb-test mysqltest.cc ${CMAKE_SOURCE_DIR}/sql/sql_string.cc COMPONENT Test) +MYSQL_ADD_EXECUTABLE(mariadb-test mysqltest.cc ${ELOQSQL_SOURCE_DIR}/sql/sql_string.cc COMPONENT Test) SET_SOURCE_FILES_PROPERTIES(mysqltest.cc PROPERTIES COMPILE_FLAGS "-DTHREADS ${PCRE2_DEBIAN_HACK}") TARGET_LINK_LIBRARIES(mariadb-test ${CLIENT_LIB} pcre2-posix pcre2-8) SET_TARGET_PROPERTIES(mariadb-test PROPERTIES ENABLE_EXPORTS TRUE) @@ -85,7 +85,7 @@ SET_SOURCE_FILES_PROPERTIES(mysqlslap.c PROPERTIES COMPILE_FLAGS "-DTHREADS") TARGET_LINK_LIBRARIES(mariadb-slap ${CLIENT_LIB}) MYSQL_ADD_EXECUTABLE(mariadb-conv mariadb-conv.cc - ${CMAKE_SOURCE_DIR}/sql/sql_string.cc) + ${ELOQSQL_SOURCE_DIR}/sql/sql_string.cc) TARGET_LINK_LIBRARIES(mariadb-conv mysys strings) IF(WIN32) diff --git a/cmake/abi_check.cmake b/cmake/abi_check.cmake index 98877be9351..e98fbe039d7 100644 --- a/cmake/abi_check.cmake +++ b/cmake/abi_check.cmake @@ -36,26 +36,26 @@ IF(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang" AND RUN_ABI_CHECK) SET(COMPILER ${CMAKE_C_COMPILER}) ENDIF() SET(API_PREPROCESSOR_HEADER - ${CMAKE_SOURCE_DIR}/include/mysql/plugin_audit.h - ${CMAKE_SOURCE_DIR}/include/mysql/plugin_ftparser.h - ${CMAKE_SOURCE_DIR}/include/mysql.h - ${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v1.h - ${CMAKE_SOURCE_DIR}/include/mysql/psi/psi_abi_v2.h - ${CMAKE_SOURCE_DIR}/include/mysql/client_plugin.h - ${CMAKE_SOURCE_DIR}/include/mysql/plugin_auth.h - ${CMAKE_SOURCE_DIR}/include/mysql/plugin_password_validation.h - ${CMAKE_SOURCE_DIR}/include/mysql/plugin_encryption.h - ${CMAKE_SOURCE_DIR}/include/mysql/plugin_data_type.h - ${CMAKE_SOURCE_DIR}/include/mysql/plugin_function.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/plugin_audit.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/plugin_ftparser.h + ${ELOQSQL_SOURCE_DIR}/include/mysql.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/psi/psi_abi_v1.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/psi/psi_abi_v2.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/client_plugin.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/plugin_auth.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/plugin_password_validation.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/plugin_encryption.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/plugin_data_type.h + ${ELOQSQL_SOURCE_DIR}/include/mysql/plugin_function.h ) ADD_CUSTOM_TARGET(abi_check ALL COMMAND ${CMAKE_COMMAND} -DCOMPILER=${COMPILER} - -DSOURCE_DIR=${CMAKE_SOURCE_DIR} - -DBINARY_DIR=${CMAKE_BINARY_DIR} + -DSOURCE_DIR=${ELOQSQL_SOURCE_DIR} + -DBINARY_DIR=${ELOQSQL_BINARY_DIR} "-DABI_HEADERS=${API_PREPROCESSOR_HEADER}" - -P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake + -P ${ELOQSQL_SOURCE_DIR}/cmake/do_abi_check.cmake VERBATIM ) @@ -63,20 +63,20 @@ IF(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang" AND RUN_ABI_CHECK) COMMAND ${CMAKE_COMMAND} -DCOMPILER=${COMPILER} -DABI_UPDATE=1 - -DSOURCE_DIR=${CMAKE_SOURCE_DIR} - -DBINARY_DIR=${CMAKE_BINARY_DIR} + -DSOURCE_DIR=${ELOQSQL_SOURCE_DIR} + -DBINARY_DIR=${ELOQSQL_BINARY_DIR} "-DABI_HEADERS=${API_PREPROCESSOR_HEADER}" - -P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake + -P ${ELOQSQL_SOURCE_DIR}/cmake/do_abi_check.cmake VERBATIM ) ADD_CUSTOM_TARGET(abi_check_all COMMAND ${CMAKE_COMMAND} -DCOMPILER=${COMPILER} - -DSOURCE_DIR=${CMAKE_SOURCE_DIR} - -DBINARY_DIR=${CMAKE_BINARY_DIR} + -DSOURCE_DIR=${ELOQSQL_SOURCE_DIR} + -DBINARY_DIR=${ELOQSQL_BINARY_DIR} "-DABI_HEADERS=${API_PREPROCESSOR_HEADER}" - -P ${CMAKE_SOURCE_DIR}/cmake/do_abi_check.cmake + -P ${ELOQSQL_SOURCE_DIR}/cmake/do_abi_check.cmake VERBATIM ) ENDIF() diff --git a/cmake/build_configurations/mysql_release.cmake b/cmake/build_configurations/mysql_release.cmake index 3a081073f72..93d8ee32c23 100644 --- a/cmake/build_configurations/mysql_release.cmake +++ b/cmake/build_configurations/mysql_release.cmake @@ -86,7 +86,7 @@ SET(WITH_INNODB_SNAPPY OFF CACHE STRING "") SET(WITH_NUMA 0 CACHE BOOL "") SET(CPU_LEVEL1_DCACHE_LINESIZE 0) -IF(NOT EXISTS ${CMAKE_SOURCE_DIR}/.git) +IF(NOT EXISTS ${ELOQSQL_SOURCE_DIR}/.git) SET(GIT_EXECUTABLE GIT_EXECUTABLE-NOTFOUND CACHE FILEPATH "") ENDIF() diff --git a/cmake/cpack_deb.cmake b/cmake/cpack_deb.cmake index b253f8f86c7..a3a01b8d3db 100644 --- a/cmake/cpack_deb.cmake +++ b/cmake/cpack_deb.cmake @@ -12,9 +12,9 @@ FUNCTION(SET_PLUGIN_DEB_VERSION plugin ver) STRING(REPLACE "_" "-" plugin ${plugin}) STRING(REPLACE "-" "." serverver ${SERVER_VERSION}) STRING(REPLACE ${SERVER_VERSION} ${serverver} ver ${ver}) - FILE(READ ${CMAKE_SOURCE_DIR}/debian/changelog changelog) + FILE(READ ${ELOQSQL_SOURCE_DIR}/debian/changelog changelog) STRING(REPLACE ${serverver} ${ver} changelog "${changelog}") - FILE(WRITE ${CMAKE_SOURCE_DIR}/debian/mariadb-plugin-${plugin}.changelog "${changelog}") + FILE(WRITE ${ELOQSQL_SOURCE_DIR}/debian/mariadb-plugin-${plugin}.changelog "${changelog}") ENDFUNCTION() ELSE(DEB) diff --git a/cmake/cpack_rpm.cmake b/cmake/cpack_rpm.cmake index f21c6325ff3..e07646c4d14 100644 --- a/cmake/cpack_rpm.cmake +++ b/cmake/cpack_rpm.cmake @@ -228,15 +228,15 @@ IF(WITH_WSREP) "coreutils" "findutils" "tar") ENDIF() -SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh) -SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-preun.sh) -SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postin.sh) -SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh) -SET(CPACK_RPM_server_POST_TRANS_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-posttrans.sh) -SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh) -SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh) -SET(CPACK_RPM_compat_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh) -SET(CPACK_RPM_compat_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh) +SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/server-prein.sh) +SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/server-preun.sh) +SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/server-postin.sh) +SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/server-postun.sh) +SET(CPACK_RPM_server_POST_TRANS_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/server-posttrans.sh) +SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/shared-post.sh) +SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/shared-post.sh) +SET(CPACK_RPM_compat_POST_INSTALL_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/shared-post.sh) +SET(CPACK_RPM_compat_POST_UNINSTALL_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/shared-post.sh) MACRO(ALTERNATIVE_NAME real alt) IF(${ARGC} GREATER 2) @@ -303,15 +303,15 @@ SET(PYTHON_SHEBANG "/usr/bin/python3" CACHE STRING "python shebang") # If we want to build build MariaDB-shared-compat, # extract compat libraries from MariaDB-shared-5.3 rpm -FILE(GLOB compat53 RELATIVE ${CMAKE_SOURCE_DIR} - "${CMAKE_SOURCE_DIR}/../MariaDB-shared-5.3.*.rpm") -FILE(GLOB compat101 RELATIVE ${CMAKE_SOURCE_DIR} - "${CMAKE_SOURCE_DIR}/../MariaDB-shared-10.1.*.rpm") +FILE(GLOB compat53 RELATIVE ${ELOQSQL_SOURCE_DIR} + "${ELOQSQL_SOURCE_DIR}/../MariaDB-shared-5.3.*.rpm") +FILE(GLOB compat101 RELATIVE ${ELOQSQL_SOURCE_DIR} + "${ELOQSQL_SOURCE_DIR}/../MariaDB-shared-10.1.*.rpm") IF(compat53 AND compat101) FOREACH(compat_rpm "${compat53}" "${compat101}") MESSAGE(STATUS "Using ${compat_rpm} to build MariaDB-compat") INSTALL(CODE "EXECUTE_PROCESS( - COMMAND rpm2cpio ${CMAKE_SOURCE_DIR}/${compat_rpm} + COMMAND rpm2cpio ${ELOQSQL_SOURCE_DIR}/${compat_rpm} COMMAND cpio --extract --make-directories */libmysqlclient*.so.* - WORKING_DIRECTORY \$ENV{DESTDIR}) EXECUTE_PROCESS( @@ -321,11 +321,11 @@ IF(compat53 AND compat101) ENDFOREACH() EXECUTE_PROCESS( - COMMAND rpm -q --provides -p "${CMAKE_SOURCE_DIR}/${compat101}" + COMMAND rpm -q --provides -p "${ELOQSQL_SOURCE_DIR}/${compat101}" ERROR_QUIET OUTPUT_VARIABLE compat_provides) EXECUTE_PROCESS( - COMMAND rpm -q --obsoletes -p "${CMAKE_SOURCE_DIR}/${compat101}" + COMMAND rpm -q --obsoletes -p "${ELOQSQL_SOURCE_DIR}/${compat101}" ERROR_QUIET OUTPUT_VARIABLE compat_obsoletes) diff --git a/cmake/ctest.cmake b/cmake/ctest.cmake index 5bc1ce5f832..aed255cce89 100644 --- a/cmake/ctest.cmake +++ b/cmake/ctest.cmake @@ -8,8 +8,8 @@ ENDMACRO() MACRO(MY_ADD_TESTS) CMAKE_PARSE_ARGUMENTS(ARG "" "EXT" "LINK_LIBRARIES" ${ARGN}) - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/unittest/mytap) + INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/unittest/mytap) IF (NOT ARG_EXT) SET(ARG_EXT "c") diff --git a/cmake/dtrace.cmake b/cmake/dtrace.cmake index dae3b56b584..731fb624722 100644 --- a/cmake/dtrace.cmake +++ b/cmake/dtrace.cmake @@ -70,7 +70,7 @@ MACRO (DTRACE_HEADER provider header header_no_dtrace) ADD_CUSTOM_COMMAND( OUTPUT ${header} ${header_no_dtrace} COMMAND ${DTRACE} -h -s ${provider} -o ${header} - COMMAND perl ${CMAKE_SOURCE_DIR}/scripts/dheadgen.pl -f ${provider} > ${header_no_dtrace} + COMMAND perl ${ELOQSQL_SOURCE_DIR}/scripts/dheadgen.pl -f ${provider} > ${header_no_dtrace} DEPENDS ${provider} ) ENDIF() @@ -79,22 +79,22 @@ ENDMACRO() # Create provider headers IF(ENABLE_DTRACE) - CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/probes_mysql.d.base - ${CMAKE_BINARY_DIR}/include/probes_mysql.d COPYONLY) + CONFIGURE_FILE(${ELOQSQL_SOURCE_DIR}/include/probes_mysql.d.base + ${ELOQSQL_BINARY_DIR}/include/probes_mysql.d COPYONLY) DTRACE_HEADER( - ${CMAKE_BINARY_DIR}/include/probes_mysql.d - ${CMAKE_BINARY_DIR}/include/probes_mysql_dtrace.h - ${CMAKE_BINARY_DIR}/include/probes_mysql_nodtrace.h + ${ELOQSQL_BINARY_DIR}/include/probes_mysql.d + ${ELOQSQL_BINARY_DIR}/include/probes_mysql_dtrace.h + ${ELOQSQL_BINARY_DIR}/include/probes_mysql_nodtrace.h ) ADD_CUSTOM_TARGET(gen_dtrace_header DEPENDS - ${CMAKE_BINARY_DIR}/include/probes_mysql.d - ${CMAKE_BINARY_DIR}/include/probes_mysql_dtrace.h - ${CMAKE_BINARY_DIR}/include/probes_mysql_nodtrace.h + ${ELOQSQL_BINARY_DIR}/include/probes_mysql.d + ${ELOQSQL_BINARY_DIR}/include/probes_mysql_dtrace.h + ${ELOQSQL_BINARY_DIR}/include/probes_mysql_nodtrace.h ) ELSE() - CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/probes_mysql_nodtrace.h.in - ${CMAKE_BINARY_DIR}/include/probes_mysql_nodtrace.h COPYONLY) + CONFIGURE_FILE(${ELOQSQL_SOURCE_DIR}/include/probes_mysql_nodtrace.h.in + ${ELOQSQL_BINARY_DIR}/include/probes_mysql_nodtrace.h COPYONLY) ENDIF() FUNCTION(DTRACE_INSTRUMENT target) @@ -117,21 +117,21 @@ FUNCTION(DTRACE_INSTRUMENT target) COMMAND ${CMAKE_COMMAND} -DDTRACE=${DTRACE} -DOUTFILE=${outfile} - -DDFILE=${CMAKE_BINARY_DIR}/include/probes_mysql.d + -DDFILE=${ELOQSQL_BINARY_DIR}/include/probes_mysql.d -DDTRACE_FLAGS=${DTRACE_FLAGS} -DDIRS=. -DTYPE=${target_type} - -P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake + -P ${ELOQSQL_SOURCE_DIR}/cmake/dtrace_prelink.cmake WORKING_DIRECTORY ${objdir} ) ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Linux") # dtrace on Linux runs gcc and uses flags from environment SET(CFLAGS_SAVED $ENV{CFLAGS}) SET(ENV{CFLAGS} ${CMAKE_C_FLAGS}) - SET(outfile "${CMAKE_BINARY_DIR}/probes_mysql.o") + SET(outfile "${ELOQSQL_BINARY_DIR}/probes_mysql.o") # Systemtap object EXECUTE_PROCESS( - COMMAND ${DTRACE} -G -s ${CMAKE_SOURCE_DIR}/include/probes_mysql.d.base + COMMAND ${DTRACE} -G -s ${ELOQSQL_SOURCE_DIR}/include/probes_mysql.d.base -o ${outfile} ) SET(ENV{CFLAGS} ${CFLAGS_SAVED}) @@ -190,11 +190,11 @@ IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ENABLE_DTRACE) COMMAND ${CMAKE_COMMAND} -DDTRACE=${DTRACE} -DOUTFILE=${obj} - -DDFILE=${CMAKE_BINARY_DIR}/include/probes_mysql.d + -DDFILE=${ELOQSQL_BINARY_DIR}/include/probes_mysql.d -DDTRACE_FLAGS=${DTRACE_FLAGS} "-DDIRS=${dirs}" -DTYPE=MERGE - -P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake + -P ${ELOQSQL_SOURCE_DIR}/cmake/dtrace_prelink.cmake VERBATIM ) ADD_CUSTOM_TARGET(${target}_dtrace_all DEPENDS ${obj}) diff --git a/cmake/info_macros.cmake.in b/cmake/info_macros.cmake.in index 89ca1ec79dc..93fae001051 100644 --- a/cmake/info_macros.cmake.in +++ b/cmake/info_macros.cmake.in @@ -26,8 +26,8 @@ SET(VERSION "@VERSION@") SET(MAJOR_VERSION "@MAJOR_VERSION@") SET(MINOR_VERSION "@MINOR_VERSION@") SET(PATCH_VERSION "@PATCH_VERSION@") -SET(CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@") -SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@") +SET(ELOQSQL_SOURCE_DIR "@ELOQSQL_SOURCE_DIR@") +SET(ELOQSQL_BINARY_DIR "@ELOQSQL_BINARY_DIR@") SET(CMAKE_GENERATOR "@CMAKE_GENERATOR@") SET(CMAKE_SIZEOF_VOID_P "@CMAKE_SIZEOF_VOID_P@") SET(GIT_EXECUTABLE "@GIT_EXECUTABLE@") @@ -60,18 +60,18 @@ MACRO(CREATE_INFO_SRC target_dir) MESSAGE(STATUS "Could not determine build-date: <${error}>") ENDIF() - IF(GIT_EXECUTABLE AND EXISTS ${CMAKE_SOURCE_DIR}/.git) + IF(GIT_EXECUTABLE AND EXISTS ${ELOQSQL_SOURCE_DIR}/.git) # Sources are in a GIT repository: Always update. EXECUTE_PROCESS( COMMAND ${GIT_EXECUTABLE} rev-parse --abbrev-ref HEAD - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${ELOQSQL_SOURCE_DIR} OUTPUT_VARIABLE bname ) EXECUTE_PROCESS( COMMAND ${GIT_EXECUTABLE} log -1 --pretty="commit: %H%ndate: %ci%nbuild-date: ${bdate} %nshort: %h%nbranch: ${bname}" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${ELOQSQL_SOURCE_DIR} OUTPUT_VARIABLE VERSION_INFO ) @@ -85,14 +85,14 @@ MACRO(CREATE_INFO_SRC target_dir) ELSEIF(EXISTS ${INFO_SRC}) # Outside a git tree, there is no need to change an existing "INFO_SRC", # it cannot be improved. - ELSEIF(EXISTS ${CMAKE_SOURCE_DIR}/Docs/INFO_SRC) + ELSEIF(EXISTS ${ELOQSQL_SOURCE_DIR}/Docs/INFO_SRC) # If we are building from a source distribution, it also contains "INFO_SRC". # Similar, the export used for a release build already has the file. - FILE(READ ${CMAKE_SOURCE_DIR}/Docs/INFO_SRC SOURCE_INFO) + FILE(READ ${ELOQSQL_SOURCE_DIR}/Docs/INFO_SRC SOURCE_INFO) FILE(WRITE ${INFO_SRC} "${SOURCE_INFO}\n") - ELSEIF(EXISTS ${CMAKE_SOURCE_DIR}/INFO_SRC) + ELSEIF(EXISTS ${ELOQSQL_SOURCE_DIR}/INFO_SRC) # This is not the proper location, but who knows ... - FILE(READ ${CMAKE_SOURCE_DIR}/INFO_SRC SOURCE_INFO) + FILE(READ ${ELOQSQL_SOURCE_DIR}/INFO_SRC SOURCE_INFO) FILE(WRITE ${INFO_SRC} "${SOURCE_INFO}\n") ELSE() # This is a fall-back. @@ -148,9 +148,9 @@ MACRO(CREATE_INFO_BIN) FILE(APPEND ${INFO_BIN} "Pointer size: ${CMAKE_SIZEOF_VOID_P}\n\n") FILE(APPEND ${INFO_BIN} "===== Feature flags used: =====\n") - IF(EXISTS ${CMAKE_BINARY_DIR}/CMakeCache.txt) + IF(EXISTS ${ELOQSQL_BINARY_DIR}/CMakeCache.txt) # Attention: "-N" prevents cmake from entering a recursion, and it must be a separate flag from "-L". - EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -N -L ${CMAKE_BINARY_DIR} OUTPUT_VARIABLE FEATURE_FLAGS) + EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -N -L ${ELOQSQL_BINARY_DIR} OUTPUT_VARIABLE FEATURE_FLAGS) FILE(APPEND ${INFO_BIN} ${FEATURE_FLAGS} "\n") ELSE() FILE(APPEND ${INFO_BIN} "File 'CMakeCache.txt' is not yet found.\n\n") diff --git a/cmake/install_macros.cmake b/cmake/install_macros.cmake index 765f3be23e0..e5cedffc3e7 100644 --- a/cmake/install_macros.cmake +++ b/cmake/install_macros.cmake @@ -59,10 +59,10 @@ FUNCTION(INSTALL_MANPAGE file) ENDIF() GET_FILENAME_COMPONENT(file_name "${file}" NAME) SET(GLOB_EXPR - ${CMAKE_SOURCE_DIR}/man/*${file}man.1* - ${CMAKE_SOURCE_DIR}/man/*${file}man.8* - ${CMAKE_BINARY_DIR}/man/*${file}man.1* - ${CMAKE_BINARY_DIR}/man/*${file}man.8* + ${ELOQSQL_SOURCE_DIR}/man/*${file}man.1* + ${ELOQSQL_SOURCE_DIR}/man/*${file}man.8* + ${ELOQSQL_BINARY_DIR}/man/*${file}man.1* + ${ELOQSQL_BINARY_DIR}/man/*${file}man.8* ) IF(MYSQL_DOC_DIR) SET(GLOB_EXPR @@ -260,7 +260,7 @@ ENDFUNCTION() # Optionally install mysqld/client/embedded from debug build run. outside of the current build dir # (unless multi-config generator is used like Visual Studio or Xcode). # For Makefile generators we default Debug build directory to ${buildroot}/../debug. -GET_FILENAME_COMPONENT(BINARY_PARENTDIR ${CMAKE_BINARY_DIR} PATH) +GET_FILENAME_COMPONENT(BINARY_PARENTDIR ${ELOQSQL_BINARY_DIR} PATH) SET(DEBUGBUILDDIR "${BINARY_PARENTDIR}/debug" CACHE INTERNAL "Directory of debug build") FUNCTION(INSTALL_MYSQL_TEST from to) diff --git a/cmake/libutils.cmake b/cmake/libutils.cmake index 74853c36a74..8e24cd5a107 100644 --- a/cmake/libutils.cmake +++ b/cmake/libutils.cmake @@ -231,7 +231,7 @@ MACRO(MERGE_STATIC_LIBS TARGET OUTPUT_NAME LIBS_TO_MERGE) COMMAND ${CMAKE_COMMAND} ARGS -DTARGET_SCRIPT="${MRI_SCRIPT}" - -DTOP_DIR="${CMAKE_BINARY_DIR}" + -DTOP_DIR="${ELOQSQL_BINARY_DIR}" -DCMAKE_AR="${CMAKE_AR}" -P "${MYSQL_CMAKE_SCRIPT_DIR}/merge_archives_unix.cmake" COMMAND ${CMAKE_RANLIB} diff --git a/cmake/make_dist.cmake.in b/cmake/make_dist.cmake.in index 4f6988cfed2..d912f792bf0 100644 --- a/cmake/make_dist.cmake.in +++ b/cmake/make_dist.cmake.in @@ -17,8 +17,8 @@ # If bzr is present, run bzr export. # Otherwise, just run cpack with source configuration. -SET(CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@") -SET(CMAKE_BINARY_DIR "@CMAKE_BINARY_DIR@") +SET(ELOQSQL_SOURCE_DIR "@ELOQSQL_SOURCE_DIR@") +SET(ELOQSQL_BINARY_DIR "@ELOQSQL_BINARY_DIR@") SET(CPACK_SOURCE_PACKAGE_FILE_NAME "@CPACK_SOURCE_PACKAGE_FILE_NAME@") SET(CMAKE_CPACK_COMMAND "@CMAKE_CPACK_COMMAND@") SET(CMAKE_COMMAND "@CMAKE_COMMAND@") @@ -34,7 +34,7 @@ SET(VERSION "@VERSION@") SET(MYSQL_DOCS_LOCATION "@MYSQL_DOCS_LOCATION@") -SET(PACKAGE_DIR ${CMAKE_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}) +SET(PACKAGE_DIR ${ELOQSQL_BINARY_DIR}/${CPACK_SOURCE_PACKAGE_FILE_NAME}) FILE(REMOVE_RECURSE ${PACKAGE_DIR}) FILE(REMOVE ${PACKAGE_DIR}.tar.gz ) @@ -43,7 +43,7 @@ IF(GIT_EXECUTABLE) MESSAGE(STATUS "Running git checkout-index") EXECUTE_PROCESS( COMMAND "${GIT_EXECUTABLE}" checkout-index --all --prefix=${PACKAGE_DIR}/ - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${ELOQSQL_SOURCE_DIR} RESULT_VARIABLE RESULT ) IF(NOT RESULT EQUAL 0) @@ -51,7 +51,7 @@ IF(GIT_EXECUTABLE) ENDIF() EXECUTE_PROCESS( COMMAND "${GIT_EXECUTABLE}" submodule foreach "${GIT_EXECUTABLE} checkout-index --all --prefix=${PACKAGE_DIR}/$path/" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${ELOQSQL_SOURCE_DIR} RESULT_VARIABLE RESULT ) IF(NOT RESULT EQUAL 0) @@ -59,7 +59,7 @@ IF(GIT_EXECUTABLE) ENDIF() EXECUTE_PROCESS( COMMAND "${GIT_EXECUTABLE}" submodule foreach "${GIT_EXECUTABLE} checkout-index --all --prefix=${PACKAGE_DIR}/wsrep-lib/$path/" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/wsrep-lib + WORKING_DIRECTORY ${ELOQSQL_SOURCE_DIR}/wsrep-lib RESULT_VARIABLE RESULT ) IF(NOT RESULT EQUAL 0) @@ -67,7 +67,7 @@ IF(GIT_EXECUTABLE) ENDIF() EXECUTE_PROCESS( COMMAND "${GIT_EXECUTABLE}" submodule foreach "${GIT_EXECUTABLE} checkout-index --all --prefix=${PACKAGE_DIR}/storage/columnstore/columnstore/$path/" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/storage/columnstore/columnstore + WORKING_DIRECTORY ${ELOQSQL_SOURCE_DIR}/storage/columnstore/columnstore RESULT_VARIABLE RESULT ) IF(NOT RESULT EQUAL 0) @@ -75,64 +75,64 @@ IF(GIT_EXECUTABLE) ENDIF() ENDIF() -CONFIGURE_FILE(${CMAKE_BINARY_DIR}/include/source_revision.h +CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/include/source_revision.h ${PACKAGE_DIR}/include/source_revision.h COPYONLY) -CONFIGURE_FILE(${CMAKE_BINARY_DIR}/storage/rocksdb/rdb_source_revision.h +CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/storage/rocksdb/rdb_source_revision.h ${PACKAGE_DIR}/storage/rocksdb/rdb_source_revision.h COPYONLY) IF(NOT GIT_EXECUTABLE) MESSAGE(STATUS "git not found or source dir is not a repo, use CPack") - IF(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) + IF(ELOQSQL_SOURCE_DIR STREQUAL ELOQSQL_BINARY_DIR) # In-source build is the worst option, we have to cleanup source tree. # Save bison output first. - CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.cc - ${CMAKE_BINARY_DIR}/sql_yacc.cc COPYONLY) - CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/sql_yacc.hh - ${CMAKE_BINARY_DIR}/sql_yacc.hh COPYONLY) + CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/sql/sql_yacc.cc + ${ELOQSQL_BINARY_DIR}/sql_yacc.cc COPYONLY) + CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/sql/sql_yacc.hh + ${ELOQSQL_BINARY_DIR}/sql_yacc.hh COPYONLY) IF(CMAKE_GENERATOR MATCHES "Makefiles") # make clean EXECUTE_PROCESS( COMMAND ${CMAKE_MAKE_PROGRAM} clean - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR} ) ENDIF() # Restore bison output - CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql_yacc.cc - ${CMAKE_BINARY_DIR}/sql/sql_yacc.cc COPYONLY) - CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql_yacc.hh - ${CMAKE_BINARY_DIR}/sql/sql_yacc.h COPYONLY) - FILE(REMOVE ${CMAKE_BINARY_DIR}/sql_yacc.cc) - FILE(REMOVE ${CMAKE_BINARY_DIR}/sql_yacc.hh) + CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/sql_yacc.cc + ${ELOQSQL_BINARY_DIR}/sql/sql_yacc.cc COPYONLY) + CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/sql_yacc.hh + ${ELOQSQL_BINARY_DIR}/sql/sql_yacc.h COPYONLY) + FILE(REMOVE ${ELOQSQL_BINARY_DIR}/sql_yacc.cc) + FILE(REMOVE ${ELOQSQL_BINARY_DIR}/sql_yacc.hh) ENDIF() EXECUTE_PROCESS( COMMAND ${CMAKE_CPACK_COMMAND} -G TGZ --config ./CPackSourceConfig.cmake - ${CMAKE_BINARY_DIR}/CPackSourceConfig.cmake + ${ELOQSQL_BINARY_DIR}/CPackSourceConfig.cmake - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR} ) EXECUTE_PROCESS( COMMAND ${CMAKE_COMMAND} -E tar xzf ${CPACK_SOURCE_PACKAGE_FILE_NAME}.tar.gz ${PACK_SOURCE_PACKAGE_FILE_NAME} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR} ) ENDIF() # Copy bison output -CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/yy_mariadb.hh +CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/sql/yy_mariadb.hh ${PACKAGE_DIR}/sql/yy_mariadb.hh COPYONLY) -CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/yy_mariadb.cc +CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/sql/yy_mariadb.cc ${PACKAGE_DIR}/sql/yy_mariadb.cc COPYONLY) # Copy bison output -CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/yy_oracle.hh +CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/sql/yy_oracle.hh ${PACKAGE_DIR}/sql/yy_oracle.hh COPYONLY) -CONFIGURE_FILE(${CMAKE_BINARY_DIR}/sql/yy_oracle.cc +CONFIGURE_FILE(${ELOQSQL_BINARY_DIR}/sql/yy_oracle.cc ${PACKAGE_DIR}/sql/yy_oracle.cc COPYONLY) # Add documentation, if user has specified where to find them @@ -142,7 +142,7 @@ IF(MYSQL_DOCS_LOCATION) ENDIF() # Ensure there is an "INFO_SRC" file. -INCLUDE(${CMAKE_BINARY_DIR}/info_macros.cmake) +INCLUDE(${ELOQSQL_BINARY_DIR}/info_macros.cmake) IF(NOT EXISTS ${PACKAGE_DIR}/Docs/INFO_SRC) CREATE_INFO_SRC(${PACKAGE_DIR}/Docs) ENDIF() diff --git a/cmake/mysql_add_executable.cmake b/cmake/mysql_add_executable.cmake index 06bdfce14de..df43f7ed220 100644 --- a/cmake/mysql_add_executable.cmake +++ b/cmake/mysql_add_executable.cmake @@ -43,7 +43,7 @@ FUNCTION (MYSQL_ADD_EXECUTABLE) IF(MSVC) # Add compatibility manifest, to fix GetVersionEx on Windows 8.1 and later IF (CMAKE_VERSION VERSION_GREATER 3.3) - SET(sources ${sources} ${PROJECT_SOURCE_DIR}/cmake/win_compatibility.manifest) + SET(sources ${sources} ${ELOQSQL_SOURCE_DIR}/cmake/win_compatibility.manifest) ENDIF() ENDIF() diff --git a/cmake/mysql_version.cmake b/cmake/mysql_version.cmake index a55c27b4d4c..a8eb4fdd089 100644 --- a/cmake/mysql_version.cmake +++ b/cmake/mysql_version.cmake @@ -23,15 +23,15 @@ SET(DOT_FRM_VERSION "6") # Generate "something" to trigger cmake rerun when VERSION changes CONFIGURE_FILE( - ${CMAKE_SOURCE_DIR}/VERSION - ${CMAKE_BINARY_DIR}/VERSION.dep + ${ELOQSQL_SOURCE_DIR}/VERSION + ${ELOQSQL_BINARY_DIR}/VERSION.dep ) # Read value for a variable from VERSION. MACRO(MYSQL_GET_CONFIG_VALUE keyword var) IF(NOT ${var}) - FILE (STRINGS ${CMAKE_SOURCE_DIR}/VERSION str REGEX "^[ ]*${keyword}=") + FILE (STRINGS ${ELOQSQL_SOURCE_DIR}/VERSION str REGEX "^[ ]*${keyword}=") IF(str) STRING(REPLACE "${keyword}=" "" str ${str}) STRING(REGEX REPLACE "[ ].*" "" str "${str}") @@ -127,17 +127,17 @@ IF(MSVC) SET(FILETYPE VFT_APP) CONFIGURE_FILE(${MYSQL_CMAKE_SCRIPT_DIR}/versioninfo.rc.in - ${CMAKE_BINARY_DIR}/versioninfo_exe.rc) + ${ELOQSQL_BINARY_DIR}/versioninfo_exe.rc) SET(FILETYPE VFT_DLL) CONFIGURE_FILE(${MYSQL_CMAKE_SCRIPT_DIR}/versioninfo.rc.in - ${CMAKE_BINARY_DIR}/versioninfo_dll.rc) + ${ELOQSQL_BINARY_DIR}/versioninfo_dll.rc) FUNCTION(ADD_VERSION_INFO target target_type sources_var) IF("${target_type}" MATCHES "SHARED" OR "${target_type}" MATCHES "MODULE") - SET(rcfile ${CMAKE_BINARY_DIR}/versioninfo_dll.rc) + SET(rcfile ${ELOQSQL_BINARY_DIR}/versioninfo_dll.rc) ELSEIF("${target_type}" MATCHES "EXE") - SET(rcfile ${CMAKE_BINARY_DIR}/versioninfo_exe.rc) + SET(rcfile ${ELOQSQL_BINARY_DIR}/versioninfo_exe.rc) ENDIF() SET(${sources_var} ${${sources_var}} ${rcfile} PARENT_SCOPE) ENDFUNCTION() diff --git a/cmake/pcre.cmake b/cmake/pcre.cmake index 0ac834f44a6..93707061289 100644 --- a/cmake/pcre.cmake +++ b/cmake/pcre.cmake @@ -5,7 +5,7 @@ SET(WITH_PCRE "auto" CACHE STRING "Which pcre to use (possible values are 'bundled', 'system', or 'auto')") MACRO(BUNDLE_PCRE2) - SET(dir "${CMAKE_BINARY_DIR}/extra/pcre2") + SET(dir "${ELOQSQL_BINARY_DIR}/extra/pcre2") SET(PCRE_INCLUDES ${dir}/src/pcre2-build ${dir}/src/pcre2/src) SET(byproducts) FOREACH(lib pcre2-posix pcre2-8) diff --git a/cmake/plugin.cmake b/cmake/plugin.cmake index 813d8ef6e42..eb228f509a5 100644 --- a/cmake/plugin.cmake +++ b/cmake/plugin.cmake @@ -42,8 +42,8 @@ MACRO(MYSQL_ADD_PLUGIN) IF(NOT WITHOUT_SERVER OR ARG_CLIENT) # Add common include directories - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/sql + INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/sql ${PCRE_INCLUDES} ${SSL_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIR}) @@ -215,7 +215,7 @@ MACRO(MYSQL_ADD_PLUGIN) TARGET_LINK_LIBRARIES (${target} mysqlservices ${ARG_LINK_LIBRARIES}) IF(CMAKE_SYSTEM_NAME MATCHES AIX) - TARGET_LINK_OPTIONS(${target} PRIVATE "-Wl,-bE:${CMAKE_SOURCE_DIR}/libservices/mysqlservices_aix.def") + TARGET_LINK_OPTIONS(${target} PRIVATE "-Wl,-bE:${ELOQSQL_SOURCE_DIR}/libservices/mysqlservices_aix.def") ENDIF() # Server plugins use symbols defined in mysqld executable. @@ -267,8 +267,8 @@ MACRO(MYSQL_ADD_PLUGIN) FILE(WRITE ${ARG_CONFIG} "[mariadb]\nplugin-load-add=${ARG_MODULE_OUTPUT_NAME}.so\n") ENDIF() SET(CPACK_RPM_${ARG_COMPONENT}_USER_FILELIST ${ignored} "%config(noreplace) ${INSTALL_SYSCONF2DIR}/*" PARENT_SCOPE) - SET(CPACK_RPM_${ARG_COMPONENT}_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/plugin-postin.sh PARENT_SCOPE) - SET(CPACK_RPM_${ARG_COMPONENT}_POST_TRANS_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-posttrans.sh PARENT_SCOPE) + SET(CPACK_RPM_${ARG_COMPONENT}_POST_INSTALL_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/plugin-postin.sh PARENT_SCOPE) + SET(CPACK_RPM_${ARG_COMPONENT}_POST_TRANS_SCRIPT_FILE ${ELOQSQL_SOURCE_DIR}/support-files/rpm/server-posttrans.sh PARENT_SCOPE) ENDIF() ENDIF() ELSE() @@ -308,10 +308,10 @@ ENDMACRO() # subdirectories, configure sql_builtins.cc MACRO(CONFIGURE_PLUGINS) IF(NOT WITHOUT_SERVER) - FILE(GLOB dirs_storage ${CMAKE_SOURCE_DIR}/storage/*) + FILE(GLOB dirs_storage ${ELOQSQL_SOURCE_DIR}/storage/*) ENDIF() - FILE(GLOB dirs_plugin ${CMAKE_SOURCE_DIR}/plugin/*) + FILE(GLOB dirs_plugin ${ELOQSQL_SOURCE_DIR}/plugin/*) FOREACH(dir ${dirs_storage} ${dirs_plugin}) IF (EXISTS ${dir}/CMakeLists.txt) ADD_SUBDIRECTORY(${dir}) diff --git a/cmake/readline.cmake b/cmake/readline.cmake index 9c35d8c7d22..39b8cbae527 100644 --- a/cmake/readline.cmake +++ b/cmake/readline.cmake @@ -93,9 +93,9 @@ ENDMACRO() MACRO (MYSQL_USE_BUNDLED_READLINE) SET(USE_NEW_READLINE_INTERFACE 1) SET(HAVE_HIST_ENTRY 0 CACHE INTERNAL "" FORCE) - SET(MY_READLINE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/extra/readline) + SET(MY_READLINE_INCLUDE_DIR ${ELOQSQL_SOURCE_DIR}/extra/readline) SET(MY_READLINE_LIBRARY readline) - ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/extra/readline) + ADD_SUBDIRECTORY(${ELOQSQL_SOURCE_DIR}/extra/readline) ENDMACRO() MACRO (MYSQL_FIND_SYSTEM_READLINE) diff --git a/cmake/sign.cmake.in b/cmake/sign.cmake.in index 6b0fa8b128f..ac1c540cf0a 100644 --- a/cmake/sign.cmake.in +++ b/cmake/sign.cmake.in @@ -13,7 +13,7 @@ ENDIF() GET_FILENAME_COMPONENT(SIGNTOOL_DIR "@SIGNTOOL_EXECUTABLE@" DIRECTORY) GET_FILENAME_COMPONENT(SIGNTOOL_NAME "@SIGNTOOL_EXECUTABLE@" NAME) -FILE(GLOB_RECURSE files "@CMAKE_BINARY_DIR@/*.signme") +FILE(GLOB_RECURSE files "@ELOQSQL_BINARY_DIR@/*.signme") MESSAGE(STATUS "signing files") diff --git a/cmake/ssl.cmake b/cmake/ssl.cmake index 646aa37a91c..2361173669b 100644 --- a/cmake/ssl.cmake +++ b/cmake/ssl.cmake @@ -49,9 +49,9 @@ ENDMACRO() MACRO (MYSQL_USE_BUNDLED_SSL) SET(INC_DIRS - ${CMAKE_BINARY_DIR}/extra/wolfssl - ${CMAKE_SOURCE_DIR}/extra/wolfssl/wolfssl - ${CMAKE_SOURCE_DIR}/extra/wolfssl/wolfssl/wolfssl + ${ELOQSQL_BINARY_DIR}/extra/wolfssl + ${ELOQSQL_SOURCE_DIR}/extra/wolfssl/wolfssl + ${ELOQSQL_SOURCE_DIR}/extra/wolfssl/wolfssl/wolfssl ) SET(SSL_LIBRARIES wolfssl wolfcrypt) SET(SSL_INCLUDE_DIRS ${INC_DIRS}) diff --git a/cmake/submodules.cmake b/cmake/submodules.cmake index ddebb777ce9..f06ae0f9308 100644 --- a/cmake/submodules.cmake +++ b/cmake/submodules.cmake @@ -5,9 +5,9 @@ IF(NOT UPDATE_SUBMODULES) RETURN() ENDIF() -IF(GIT_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.git") +IF(GIT_EXECUTABLE AND EXISTS "${ELOQSQL_SOURCE_DIR}/.git") EXECUTE_PROCESS(COMMAND "${GIT_EXECUTABLE}" config --get cmake.update-submodules - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + WORKING_DIRECTORY "${ELOQSQL_SOURCE_DIR}" OUTPUT_VARIABLE cmake_update_submodules RESULT_VARIABLE git_config_get_result) IF(cmake_update_submodules MATCHES no) @@ -28,22 +28,22 @@ IF(GIT_EXECUTABLE AND EXISTS "${CMAKE_SOURCE_DIR}/.git") IF(cmake_update_submodules MATCHES force) MESSAGE(STATUS "Updating submodules (forced)") EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND} --force - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + WORKING_DIRECTORY "${ELOQSQL_SOURCE_DIR}" RESULT_VARIABLE update_result) ELSEIF(cmake_update_submodules MATCHES yes) EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND} - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + WORKING_DIRECTORY "${ELOQSQL_SOURCE_DIR}" RESULT_VARIABLE update_result) ELSE() MESSAGE(STATUS "Updating submodules") EXECUTE_PROCESS(COMMAND ${UPDATE_SUBMODULES_COMMAND} - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + WORKING_DIRECTORY "${ELOQSQL_SOURCE_DIR}" RESULT_VARIABLE update_result) ENDIF() ENDIF() ENDIF() -IF(update_result OR NOT EXISTS ${CMAKE_SOURCE_DIR}/libmariadb/CMakeLists.txt) +IF(update_result OR NOT EXISTS ${ELOQSQL_SOURCE_DIR}/libmariadb/CMakeLists.txt) MESSAGE(FATAL_ERROR "No MariaDB Connector/C! Run ${GIT_EXECUTABLE} submodule update --init --recursive Then restart the build.${SUBMODULE_UPDATE_CONFIG_MESSAGE}") diff --git a/cmake/tags.cmake b/cmake/tags.cmake index 309bfae9832..b78ea466dae 100644 --- a/cmake/tags.cmake +++ b/cmake/tags.cmake @@ -17,10 +17,10 @@ IF(UNIX) ADD_CUSTOM_TARGET (tags COMMAND support-files/build-tags - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${ELOQSQL_SOURCE_DIR} ) ADD_CUSTOM_TARGET (ctags COMMAND ctags -R -f CTAGS - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${ELOQSQL_SOURCE_DIR} ) ENDIF() diff --git a/cmake/wsrep.cmake b/cmake/wsrep.cmake index 368ae61d1d3..6dcce024273 100644 --- a/cmake/wsrep.cmake +++ b/cmake/wsrep.cmake @@ -19,7 +19,7 @@ # IF (NOT WITHOUT_SERVER) IF(UNIX) - SET(with_wsrep_default ON) + SET(with_wsrep_default OFF) ELSE() SET(with_wsrep_default OFF) ENDIF() @@ -33,14 +33,14 @@ IF(WITH_WSREP) # Set the patch version SET(WSREP_PATCH_VERSION "22") - IF(NOT EXISTS "${CMAKE_SOURCE_DIR}/wsrep-lib/wsrep-API/v26/wsrep_api.h") + IF(NOT EXISTS "${ELOQSQL_SOURCE_DIR}/wsrep-lib/wsrep-API/v26/wsrep_api.h") MESSAGE(FATAL_ERROR "No MariaDB wsrep-API code! Run ${GIT_EXECUTABLE} submodule update --init --recursive Then restart the build. ") ENDIF() # Obtain wsrep API version - FILE(STRINGS "${CMAKE_SOURCE_DIR}/wsrep-lib/wsrep-API/v26/wsrep_api.h" WSREP_API_VERSION + FILE(STRINGS "${ELOQSQL_SOURCE_DIR}/wsrep-lib/wsrep-API/v26/wsrep_api.h" WSREP_API_VERSION LIMIT_COUNT 1 REGEX "WSREP_INTERFACE_VERSION") STRING(REGEX MATCH "([0-9]+)" WSREP_API_VERSION "${WSREP_API_VERSION}") @@ -56,8 +56,8 @@ Then restart the build. SET(WSREP_LIB_WITH_DBSIM OFF CACHE BOOL "Disable building dbsim for wsrep-lib") endif() - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/wsrep-lib/include) - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/wsrep-lib/wsrep-API/v26) + INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/wsrep-lib/include) + INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/wsrep-lib/wsrep-API/v26) SET(old_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) SET(BUILD_SHARED_LIBS OFF) diff --git a/cmake/zlib.cmake b/cmake/zlib.cmake index 9e085189e4f..09fe71cb03e 100644 --- a/cmake/zlib.cmake +++ b/cmake/zlib.cmake @@ -14,7 +14,7 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA MACRO (MYSQL_USE_BUNDLED_ZLIB) - SET(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/zlib ${CMAKE_BINARY_DIR}/zlib) + SET(ZLIB_INCLUDE_DIR ${ELOQSQL_SOURCE_DIR}/zlib ${ELOQSQL_BINARY_DIR}/zlib) SET(BUILD_BUNDLED_ZLIB 1) SET(ZLIB_LIBRARY zlib CACHE INTERNAL "Bundled zlib library") SET(ZLIB_FOUND TRUE) diff --git a/concourse/scripts/main.bash b/concourse/scripts/main.bash index 10d842bdafc..93e6a6c1642 100755 --- a/concourse/scripts/main.bash +++ b/concourse/scripts/main.bash @@ -30,79 +30,65 @@ git submodule sync git submodule update --init --recursive # setup mc command -mc alias set minio_server ${MINIO_ENDPOINT_URL} ${ELOQ_AWS_ACCESS_KEY_ID} ${ELOQ_AWS_SECRET_KEY} +# minio_server_alias will be used by mtr script for clean up mimio bucket +# in middle of server restart +export minio_server_alias="minio_server" +mc alias set ${minio_server_alias} ${MINIO_ENDPOINT_URL} ${ELOQ_AWS_ACCESS_KEY_ID} ${ELOQ_AWS_SECRET_KEY} # construct minio bucket timestamp=$(($(date +%s%N)/1000000)) -bucket_name="eloqsql-mtr-test-${timestamp}" +export bucket_name="eloqsql-mtr-test-${timestamp}" echo "bucket name is ${bucket_name}" -#config eloq_kv_storage.cnf -sed -i "s/eloq_kv_storage.*=.\+/eloq_kv_storage=eloqds/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_storage.cnf - -echo "eloq_kv_storage.cnf" -cat $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_storage.cnf - -# config eloq_kv_dss.cnf -# ak/sk -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -# OSS settings -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_rocksdb_cloud_endpoint_url.*=.\+|eloq_dss_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_name.*=.\+/eloq_dss_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_region.*=.\+/eloq_txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_dss_rocksdb_cloud_region.*=.\+/eloq_dss_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_prefix.*=.\+/eloq_dss_rocksdb_cloud_bucket_prefix=dss-/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=${WORKSPACE}/eloqsql_src/concourse/scripts/dss_config.example.ini|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_peer_node.*=.\+|eloq_dss_peer_node=|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf - -echo "eloq_kv_dss.cnf" -cat $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf +# Helper function to update config template file with required settings +update_config_template() { + local config_file="$1" + if [ ! -f "$config_file" ]; then + echo "Warning: Config file $config_file does not exist" + return 1 + fi + + # ak/sk + sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" "$config_file" + sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" "$config_file" + # OSS settings + sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" "$config_file" + sed -i "s|txlog_rocksdb_cloud_s3_endpoint_url.*=.\+|txlog_rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" "$config_file" + sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" "$config_file" + sed -i "s/txlog_rocksdb_cloud_bucket_name.*=.\+/txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" "$config_file" + sed -i "s/rocksdb_cloud_region.*=.\+/rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" "$config_file" + sed -i "s/txlog_rocksdb_cloud_region.*=.\+/txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" "$config_file" + sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" "$config_file" + sed -i "s/txlog_rocksdb_cloud_bucket_prefix.*=.\+/txlog_rocksdb_cloud_bucket_prefix=txlog-/g" "$config_file" + sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=${WORKSPACE}/eloqsql_src/concourse/scripts/dss_config.example.ini|g" "$config_file" +} + +# config data_substrate.cnf +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_basic/data_substrate.cnf" +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_main/data_substrate.cnf" +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate1.cnf" +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate2.cnf" +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate3.cnf" +echo "data_substrate.cnf" +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_basic/data_substrate.cnf +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_main/data_substrate.cnf +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate1.cnf +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate2.cnf +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate3.cnf # config mtr_bootstrap.cnf -# ak/sk -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -# kv_storage -sed -i "s/eloq_kv_storage.*=.\+/eloq_kv_storage=eloqds/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -# OSS settings -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s|eloq_dss_rocksdb_cloud_endpoint_url.*=.\+|eloq_dss_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_name.*=.\+/eloq_dss_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_region.*=.\+/eloq_txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_region.*=.\+/eloq_dss_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_prefix.*=.\+/eloq_dss_rocksdb_cloud_bucket_prefix=dss-/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=${WORKSPACE}/eloqsql_src/concourse/scripts/dss_config.example.ini|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s|eloq_dss_peer_node.*=.\+|eloq_dss_peer_node=|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf - -echo "mtr_bootstrap.cnf" -cat $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf +update_config_template "$WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap_ds.cnf" +sed -i "s|eloq_config=.*|eloq_config=$WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap_ds.cnf|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf +sed -i "s|hm_bin_path=.*|hm_bin_path=$WORKSPACE/eloqsql_src/bld/data_substrate/host_manager|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap_ds.cnf +echo "mtr_bootstrap_ds.cnf" +cat $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap_ds.cnf #config mtr_multi_bootstrap.cnf -# ak/sk -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -# kv_storage -sed -i "s/eloq_kv_storage.*=.\+/eloq_kv_storage=eloqds/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -# OSS settings -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s|eloq_dss_rocksdb_cloud_endpoint_url.*=.\+|eloq_dss_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_name.*=.\+/eloq_dss_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_region.*=.\+/eloq_txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_region.*=.\+/eloq_dss_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_prefix.*=.\+/eloq_dss_rocksdb_cloud_bucket_prefix=dss-/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s|eloq_dss_peer_node.*=.\+|eloq_dss_peer_node=localhost:9100|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf - -echo "mtr_multi_bootstrap.cnf" -cat $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf +update_config_template "$WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap_ds.cnf" +sed -i "s|eloq_config=.*|eloq_config=$WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap_ds.cnf|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf +sed -i "s|hm_bin_path=.*|hm_bin_path=$WORKSPACE/eloqsql_src/bld/data_substrate/host_manager|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap_ds.cnf +echo "mtr_multi_bootstrap_ds.cnf" +cat $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap_ds.cnf #config dss_server.ini # ak/sk @@ -139,6 +125,7 @@ if [ ! -f "Makefile" ]; then -DMARIA_WITH_GLOG=ON \ -DSTATISTICS=ON \ -DWITH_DATA_STORE=ELOQDSS_ROCKSDB_CLOUD_S3 \ + -DELOQ_MODULE_ENABLED=ON \ ../ fi @@ -151,7 +138,7 @@ echo "installing" cmake --install . --config Debug echo "building dss_server" -cd /home/$current_user/workspace/eloqsql/storage/eloq/store_handler/eloq_data_store_service +cd /home/$current_user/workspace/eloqsql/data_substrate/store_handler/eloq_data_store_service mkdir bld && cd bld cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DWITH_DATA_STORE=ELOQDSS_ROCKSDB_CLOUD_S3 ../ cmake --build . --config Debug -j8 @@ -159,7 +146,7 @@ echo "installing dss_server" cp dss_server /home/$current_user/workspace/eloqsql/install/bin/ echo "building log_server" -cd /home/$current_user/workspace/eloqsql/storage/eloq/log_service +cd /home/$current_user/workspace/eloqsql/data_substrate/log_service mkdir bld && cd bld cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ../ cmake --build . --config Debug -j8 @@ -168,33 +155,33 @@ cp launch_sv /home/$current_user/workspace/eloqsql/install/bin/ echo "build finished" -cd /home/$current_user/workspace/eloq_test -./setup -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/*_s3.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/*_s3.cnf -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/*_s3.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/*_s3.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" ./bootstrap_cnf/*_s3.cnf - -sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/eloqdss_server.cnf - -sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./storage.cnf -sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./storage.cnf -sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./storage.cnf -sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./storage.cnf -sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./storage.cnf +# cd /home/$current_user/workspace/eloq_test +# ./setup +# sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s|eloq_txlog_rocksdb_cloud_s3_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" ./bootstrap_cnf/*_s3.cnf + +# sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/eloqdss_server.cnf + +# sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./storage.cnf +# sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./storage.cnf +# sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./storage.cnf +# sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./storage.cnf +# sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./storage.cnf # Clean up minio buckets echo "cleaning minio buckets" set +e pkill -9 dss_server rm -rf dss_data -mc rb minio_server/dss-${bucket_name} --force; \ -mc rb minio_server/txlog-${bucket_name} --force +mc rb ${minio_server_alias}/dss-${bucket_name} --force; \ +mc rb ${minio_server_alias}/txlog-${bucket_name} --force set -e echo "running eloq_test" @@ -207,8 +194,8 @@ echo "cleaning minio buckets" set +e pkill -9 dss_server rm -rf dss_data -mc rb minio_server/dss-${bucket_name} --force; \ -mc rb minio_server/txlog-${bucket_name} --force +mc rb ${minio_server_alias}/dss-${bucket_name} --force; \ +mc rb ${minio_server_alias}/txlog-${bucket_name} --force set -e echo "running mono_main,mono_basic" @@ -219,17 +206,10 @@ echo "cleaning minio buckets" set +e pkill -9 dss_server rm -rf dss_data -mc rb minio_server/dss-${bucket_name} --force; \ -mc rb minio_server/txlog-${bucket_name} --force +mc rb ${minio_server_alias}/dss-${bucket_name} --force; \ +mc rb ${minio_server_alias}/txlog-${bucket_name} --force set -e -# Config eloq_kv_dss.cnf for multi -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_peer_node.*=.*|eloq_dss_peer_node=localhost:9100|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf - -echo "eloq_kv_dss.cnf" -cat $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf - # Start dss_server echo "starting dss_server" nohup /home/$current_user/workspace/eloqsql/install/bin/dss_server --config=$WORKSPACE/eloqsql_src/concourse/scripts/dss_server.ini > dss_server.log 2>&1 & @@ -244,6 +224,6 @@ echo "cleaning minio buckets" set +e pkill -9 dss_server rm -rf dss_data -mc rb minio_server/dss-${bucket_name} --force; \ -mc rb minio_server/txlog-${bucket_name} --force +mc rb ${minio_server_alias}/dss-${bucket_name} --force; \ +mc rb ${minio_server_alias}/txlog-${bucket_name} --force set -e diff --git a/concourse/scripts/main.ent.bash b/concourse/scripts/main.ent.bash index 96d4d41883b..83a2e1d7bde 100755 --- a/concourse/scripts/main.ent.bash +++ b/concourse/scripts/main.ent.bash @@ -29,7 +29,7 @@ cd /home/$current_user/workspace/eloqsql git submodule sync git submodule update --init --recursive -cd /home/$current_user/workspace/eloqsql/storage/eloq +cd /home/$current_user/workspace/eloqsql/data_substrate ln -s $WORKSPACE/logservice_src eloq_log_service cd tx_service ln -s $WORKSPACE/raft_host_manager_src raft_host_manager @@ -45,72 +45,55 @@ timestamp=$(($(date +%s%N)/1000000)) export bucket_name="eloqsql-mtr-test-${timestamp}" echo "bucket name is ${bucket_name}" -#config eloq_kv_storage.cnf -sed -i "s/eloq_kv_storage.*=.\+/eloq_kv_storage=eloqds/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_storage.cnf - -echo "eloq_kv_storage.cnf" -cat $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_storage.cnf - -# config eloq_kv_dss.cnf -# ak/sk -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -# OSS settings -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_rocksdb_cloud_endpoint_url.*=.\+|eloq_dss_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_name.*=.\+/eloq_dss_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_region.*=.\+/eloq_txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_dss_rocksdb_cloud_region.*=.\+/eloq_dss_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_prefix.*=.\+/eloq_dss_rocksdb_cloud_bucket_prefix=dss-/g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=${WORKSPACE}/eloqsql_src/concourse/scripts/dss_config.example.ini|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_peer_node.*=.\+|eloq_dss_peer_node=|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf - -echo "eloq_kv_dss.cnf" -cat $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf +# Helper function to update config template file with required settings +update_config_template() { + local config_file="$1" + if [ ! -f "$config_file" ]; then + echo "Warning: Config file $config_file does not exist" + return 1 + fi + + # ak/sk + sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" "$config_file" + sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" "$config_file" + # OSS settings + sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" "$config_file" + sed -i "s|txlog_rocksdb_cloud_s3_endpoint_url.*=.\+|txlog_rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" "$config_file" + sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" "$config_file" + sed -i "s/txlog_rocksdb_cloud_bucket_name.*=.\+/txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" "$config_file" + sed -i "s/rocksdb_cloud_region.*=.\+/rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" "$config_file" + sed -i "s/txlog_rocksdb_cloud_region.*=.\+/txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" "$config_file" + sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" "$config_file" + sed -i "s/txlog_rocksdb_cloud_bucket_prefix.*=.\+/txlog_rocksdb_cloud_bucket_prefix=txlog-/g" "$config_file" + sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=${WORKSPACE}/eloqsql_src/concourse/scripts/dss_config.example.ini|g" "$config_file" +} + +# config data_substrate.cnf +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_basic/data_substrate.cnf" +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_main/data_substrate.cnf" +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate1.cnf" +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate2.cnf" +update_config_template "$WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate3.cnf" +echo "data_substrate.cnf" +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_basic/data_substrate.cnf +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_main/data_substrate.cnf +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate1.cnf +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate2.cnf +cat $WORKSPACE/eloqsql_src/storage/eloq/mysql-test/mono_multi/data_substrate3.cnf # config mtr_bootstrap.cnf -# ak/sk -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -# kv_storage -sed -i "s/eloq_kv_storage.*=.\+/eloq_kv_storage=eloqds/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -# OSS settings -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s|eloq_dss_rocksdb_cloud_endpoint_url.*=.\+|eloq_dss_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_name.*=.\+/eloq_dss_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_region.*=.\+/eloq_txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_region.*=.\+/eloq_dss_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_prefix.*=.\+/eloq_dss_rocksdb_cloud_bucket_prefix=dss-/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=${WORKSPACE}/eloqsql_src/concourse/scripts/dss_config.example.ini|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf -sed -i "s|eloq_dss_peer_node.*=.\+|eloq_dss_peer_node=|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf - -echo "mtr_bootstrap.cnf" -cat $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf +update_config_template "$WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap_ds.cnf" +sed -i "s|eloq_config=.*|eloq_config=$WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap_ds.cnf|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap.cnf +sed -i "s|hm_bin_path=.*|hm_bin_path=$WORKSPACE/eloqsql_src/bld/data_substrate/host_manager|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap_ds.cnf +echo "mtr_bootstrap_ds.cnf" +cat $WORKSPACE/eloqsql_src/concourse/scripts/mtr_bootstrap_ds.cnf #config mtr_multi_bootstrap.cnf -# ak/sk -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -# kv_storage -sed -i "s/eloq_kv_storage.*=.\+/eloq_kv_storage=eloqds/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -# OSS settings -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s|eloq_dss_rocksdb_cloud_endpoint_url.*=.\+|eloq_dss_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_name.*=.\+/eloq_dss_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_region.*=.\+/eloq_txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_region.*=.\+/eloq_dss_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_prefix.*=.\+/eloq_dss_rocksdb_cloud_bucket_prefix=dss-/g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s|eloq_dss_peer_node.*=.\+|eloq_dss_peer_node=localhost:9100|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf - -echo "mtr_multi_bootstrap.cnf" -cat $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf +update_config_template "$WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap_ds.cnf" +sed -i "s|eloq_config=.*|eloq_config=$WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap_ds.cnf|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap.cnf +sed -i "s|hm_bin_path=.*|hm_bin_path=$WORKSPACE/eloqsql_src/bld/data_substrate/host_manager|g" $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap_ds.cnf +echo "mtr_multi_bootstrap_ds.cnf" +cat $WORKSPACE/eloqsql_src/concourse/scripts/mtr_multi_bootstrap_ds.cnf #config dss_server.ini # ak/sk @@ -150,6 +133,7 @@ if [ ! -f "Makefile" ]; then -DOPEN_LOG_SERVICE=OFF \ -DFORK_HM_PROCESS=ON \ -DWITH_LOG_STATE=ROCKSDB_CLOUD_S3 \ + -DELOQ_MODULE_ENABLED=ON \ ../ fi @@ -162,7 +146,7 @@ echo "installing" cmake --install . --config Debug echo "building dss_server" -cd /home/$current_user/workspace/eloqsql/storage/eloq/store_handler/eloq_data_store_service +cd /home/$current_user/workspace/eloqsql/data_substrate/store_handler/eloq_data_store_service mkdir bld && cd bld cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DWITH_DATA_STORE=ELOQDSS_ROCKSDB_CLOUD_S3 ../ cmake --build . --config Debug -j8 @@ -170,7 +154,7 @@ echo "installing dss_server" cp dss_server /home/$current_user/workspace/eloqsql/install/bin/ echo "building log_server" -cd /home/$current_user/workspace/eloqsql/storage/eloq/log_service +cd /home/$current_user/workspace/eloqsql/data_substrate/log_service mkdir bld && cd bld cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWITH_LOG_STATE=ROCKSDB_CLOUD_S3 ../ cmake --build . --config Debug -j8 @@ -179,25 +163,25 @@ cp launch_sv /home/$current_user/workspace/eloqsql/install/bin/ echo "build finished" -cd /home/$current_user/workspace/eloq_test -./setup -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/*_s3.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/*_s3.cnf -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/*_s3.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/*_s3.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" ./bootstrap_cnf/*_s3.cnf - -sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/eloqdss_server.cnf - -sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./storage.cnf -sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./storage.cnf -sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./storage.cnf -sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./storage.cnf -sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./storage.cnf +# cd /home/$current_user/workspace/eloq_test +# ./setup +# sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s|eloq_txlog_rocksdb_cloud_s3_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" ./bootstrap_cnf/*_s3.cnf + +# sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/eloqdss_server.cnf + +# sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./storage.cnf +# sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./storage.cnf +# sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./storage.cnf +# sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./storage.cnf +# sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./storage.cnf # Clean up minio buckets echo "cleaning minio buckets" @@ -234,13 +218,6 @@ mc rb ${minio_server_alias}/dss-${bucket_name} --force mc rb ${minio_server_alias}/txlog-${bucket_name} --force set -e -# Config eloq_kv_dss.cnf for multi -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_peer_node.*=.*|eloq_dss_peer_node=localhost:9100|g" $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf - -echo "eloq_kv_dss.cnf" -cat $WORKSPACE/eloqsql_src/mysql-test/include/eloq_kv_dss.cnf - # Start dss_server echo "starting dss_server" nohup /home/$current_user/workspace/eloqsql/install/bin/dss_server --config=$WORKSPACE/eloqsql_src/concourse/scripts/dss_server.ini > dss_server.log 2>&1 & diff --git a/concourse/scripts/mtr_bootstrap.cnf b/concourse/scripts/mtr_bootstrap.cnf index c5650013ff6..e1263982d64 100644 --- a/concourse/scripts/mtr_bootstrap.cnf +++ b/concourse/scripts/mtr_bootstrap.cnf @@ -1,31 +1,8 @@ [mariadb] plugin_maturity=experimental -plugin_load_add=ha_eloq thread_handling=pool-of-threads thread_pool_size=1 thread_pool_oversubscribe=10 thread_pool_dedicated_listener=1 -eloq -eloq_core_num=1 -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 -eloq_keyspace_name=mono_test -eloq_kv_storage=eloqds - -eloq_dynamodb_endpoint=http://127.0.0.1:8000 -eloq_bigtable_project_id=XXXXXXXX -eloq_bigtable_instance_id=XXXXXXXX - -eloq_aws_access_key_id=XXXXXXXXXX -eloq_aws_secret_key=XXXXXXXXXXXXXXXXXXXXXXXXX -eloq_txlog_rocksdb_cloud_endpoint_url=http://127.0.0.1:9900 -eloq_txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_txlog_rocksdb_cloud_bucket_prefix = txlog- -eloq_txlog_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_rocksdb_cloud_endpoint_url=http://127.0.0.1:9900 -eloq_dss_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_dss_rocksdb_cloud_bucket_prefix = dss- -eloq_dss_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_config_file_path = -eloq_dss_peer_node = +eloq_config= \ No newline at end of file diff --git a/concourse/scripts/mtr_bootstrap_ds.cnf b/concourse/scripts/mtr_bootstrap_ds.cnf new file mode 100644 index 00000000000..89f3c9f69f1 --- /dev/null +++ b/concourse/scripts/mtr_bootstrap_ds.cnf @@ -0,0 +1,26 @@ +[local] +core_number=1 +enable_mvcc=false +txlog_rocksdb_scan_threads=3 +hm_bin_path=../../bld/data_substrate/host_manager +tx_ip=127.0.0.1 +tx_port=8000 +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test +txlog_rocksdb_cloud_bucket_prefix = txlog- +txlog_rocksdb_cloud_region = ap-northeast-1 + +[cluster] +tx_ip_port_list=127.0.0.1:8000 + +[store] +dynamodb_endpoint=http://127.0.0.1:8000 +bigtable_project_id=XXXXXXXX +bigtable_instance_id=XXXXXXXX +aws_access_key_id=XXXXXXXXXX +aws_secret_key=XXXXXXXXXXXXXXXXXXXXX +rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +rocksdb_cloud_bucket_name = eloqsql-mtr-test +rocksdb_cloud_bucket_prefix = dss- +rocksdb_cloud_region = ap-northeast-1 +eloq_dss_config_file_path = \ No newline at end of file diff --git a/concourse/scripts/mtr_multi_bootstrap.cnf b/concourse/scripts/mtr_multi_bootstrap.cnf index 261896805a2..e1263982d64 100644 --- a/concourse/scripts/mtr_multi_bootstrap.cnf +++ b/concourse/scripts/mtr_multi_bootstrap.cnf @@ -1,31 +1,8 @@ [mariadb] plugin_maturity=experimental -plugin_load_add=ha_eloq thread_handling=pool-of-threads thread_pool_size=1 thread_pool_oversubscribe=10 thread_pool_dedicated_listener=1 -eloq -eloq_core_num=1 -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_keyspace_name=mono_test -eloq_kv_storage=eloqds - -eloq_dynamodb_endpoint=http://127.0.0.1:8000 -eloq_bigtable_project_id=XXXXXXXX -eloq_bigtable_instance_id=XXXXXXXX - -eloq_aws_access_key_id=XXXXXXXXXX -eloq_aws_secret_key=XXXXXXXXXXXXXXXXXXXXX -eloq_txlog_rocksdb_cloud_endpoint_url=http://127.0.0.1:9900 -eloq_txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_txlog_rocksdb_cloud_bucket_prefix = txlog- -eloq_txlog_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_rocksdb_cloud_endpoint_url=http://127.0.0.1:9900 -eloq_dss_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_dss_rocksdb_cloud_bucket_prefix = dss- -eloq_dss_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_config_file_path = -eloq_dss_peer_node = #localhost:9100 +eloq_config= \ No newline at end of file diff --git a/concourse/scripts/mtr_multi_bootstrap_ds.cnf b/concourse/scripts/mtr_multi_bootstrap_ds.cnf new file mode 100644 index 00000000000..e2b2bb4c59b --- /dev/null +++ b/concourse/scripts/mtr_multi_bootstrap_ds.cnf @@ -0,0 +1,28 @@ +[local] +core_number=1 +enable_mvcc=false +txlog_rocksdb_scan_threads=3 +hm_bin_path=../../bld/data_substrate/host_manager +tx_ip=127.0.0.1 +tx_port=8000 +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test +txlog_rocksdb_cloud_bucket_prefix = txlog- +txlog_rocksdb_cloud_region = ap-northeast-1 + +[cluster] +tx_ip_port_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 + +[store] +dynamodb_endpoint=http://127.0.0.1:8000 +bigtable_project_id=XXXXXXXX +bigtable_instance_id=XXXXXXXX +aws_access_key_id=XXXXXXXXXX +aws_secret_key=XXXXXXXXXXXXXXXXXXXXX +rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +rocksdb_cloud_bucket_name = eloqsql-mtr-test +rocksdb_cloud_bucket_prefix = dss- +rocksdb_cloud_region = ap-northeast-1 +eloq_dss_config_file_path = +eloq_dss_peer_node = localhost:9100 + diff --git a/concourse/scripts/pr.ent.bash b/concourse/scripts/pr.ent.bash index 2106bae2a16..8297ace31b6 100755 --- a/concourse/scripts/pr.ent.bash +++ b/concourse/scripts/pr.ent.bash @@ -34,7 +34,7 @@ git submodule sync git submodule update --init --recursive pr_branch_name=$(cat .git/resource/metadata.json | jq -r '.[] | select(.name=="head_name") | .value') -cd /home/$current_user/workspace/eloqsql/storage/eloq +cd /home/$current_user/workspace/eloqsql/data_substrate ln -s $WORKSPACE/logservice_src eloq_log_service cd eloq_log_service @@ -66,72 +66,55 @@ timestamp=$(($(date +%s%N)/1000000)) export bucket_name="eloqsql-mtr-test-${timestamp}" echo "bucket name is ${bucket_name}" -#config eloq_kv_storage.cnf -sed -i "s/eloq_kv_storage.*=.\+/eloq_kv_storage=eloqds/g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_storage.cnf - -echo "eloq_kv_storage.cnf" -cat $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_storage.cnf - -# config eloq_kv_dss.cnf -# ak/sk -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -# OSS settings -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_rocksdb_cloud_endpoint_url.*=.\+|eloq_dss_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_name.*=.\+/eloq_dss_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_region.*=.\+/eloq_txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_dss_rocksdb_cloud_region.*=.\+/eloq_dss_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_prefix.*=.\+/eloq_dss_rocksdb_cloud_bucket_prefix=dss-/g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=${WORKSPACE}/eloqsql_pr/concourse/scripts/dss_config.example.ini|g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_peer_node.*=.\+|eloq_dss_peer_node=|g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf - -echo "eloq_kv_dss.cnf" -cat $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf +# Helper function to update config template file with required settings +update_config_template() { + local config_file="$1" + if [ ! -f "$config_file" ]; then + echo "Warning: Config file $config_file does not exist" + return 1 + fi + + # ak/sk + sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" "$config_file" + sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" "$config_file" + # OSS settings + sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" "$config_file" + sed -i "s|txlog_rocksdb_cloud_s3_endpoint_url.*=.\+|txlog_rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" "$config_file" + sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" "$config_file" + sed -i "s/txlog_rocksdb_cloud_bucket_name.*=.\+/txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" "$config_file" + sed -i "s/rocksdb_cloud_region.*=.\+/rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" "$config_file" + sed -i "s/txlog_rocksdb_cloud_region.*=.\+/txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" "$config_file" + sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" "$config_file" + sed -i "s/txlog_rocksdb_cloud_bucket_prefix.*=.\+/txlog_rocksdb_cloud_bucket_prefix=txlog-/g" "$config_file" + sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=${WORKSPACE}/eloqsql_pr/concourse/scripts/dss_config.example.ini|g" "$config_file" +} + +# config data_substrate.cnf +update_config_template "$WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_basic/data_substrate.cnf" +update_config_template "$WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_main/data_substrate.cnf" +update_config_template "$WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_multi/data_substrate1.cnf" +update_config_template "$WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_multi/data_substrate2.cnf" +update_config_template "$WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_multi/data_substrate3.cnf" +echo "data_substrate.cnf" +cat $WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_basic/data_substrate.cnf +cat $WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_main/data_substrate.cnf +cat $WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_multi/data_substrate1.cnf +cat $WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_multi/data_substrate2.cnf +cat $WORKSPACE/eloqsql_pr/storage/eloq/mysql-test/mono_multi/data_substrate3.cnf # config mtr_bootstrap.cnf -# ak/sk -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -# kv_storage -sed -i "s/eloq_kv_storage.*=.\+/eloq_kv_storage=eloqds/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -# OSS settings -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s|eloq_dss_rocksdb_cloud_endpoint_url.*=.\+|eloq_dss_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_name.*=.\+/eloq_dss_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_region.*=.\+/eloq_txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_region.*=.\+/eloq_dss_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_prefix.*=.\+/eloq_dss_rocksdb_cloud_bucket_prefix=dss-/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=${WORKSPACE}/eloqsql_pr/concourse/scripts/dss_config.example.ini|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf -sed -i "s|eloq_dss_peer_node.*=.\+|eloq_dss_peer_node=|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf - -echo "mtr_bootstrap.cnf" -cat $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf +update_config_template "$WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap_ds.cnf" +sed -i "s|eloq_config=.*|eloq_config=$WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap_ds.cnf|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap.cnf +sed -i "s|hm_bin_path=.*|hm_bin_path=$WORKSPACE/eloqsql_pr/bld/data_substrate/host_manager|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap_ds.cnf +echo "mtr_bootstrap_ds.cnf" +cat $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_bootstrap_ds.cnf #config mtr_multi_bootstrap.cnf -# ak/sk -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -# kv_storage -sed -i "s/eloq_kv_storage.*=.\+/eloq_kv_storage=eloqds/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -# OSS settings -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s|eloq_dss_rocksdb_cloud_endpoint_url.*=.\+|eloq_dss_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_name.*=.\+/eloq_dss_rocksdb_cloud_bucket_name=${bucket_name}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_region.*=.\+/eloq_txlog_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_region.*=.\+/eloq_dss_rocksdb_cloud_region=${ELOQ_AWS_REGION}/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s/eloq_dss_rocksdb_cloud_bucket_prefix.*=.\+/eloq_dss_rocksdb_cloud_bucket_prefix=dss-/g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf -sed -i "s|eloq_dss_peer_node.*=.\+|eloq_dss_peer_node=localhost:9100|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf - -echo "mtr_multi_bootstrap.cnf" -cat $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf +update_config_template "$WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap_ds.cnf" +sed -i "s|eloq_config=.*|eloq_config=$WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap_ds.cnf|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap.cnf +sed -i "s|hm_bin_path=.*|hm_bin_path=$WORKSPACE/eloqsql_pr/bld/data_substrate/host_manager|g" $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap_ds.cnf +echo "mtr_multi_bootstrap_ds.cnf" +cat $WORKSPACE/eloqsql_pr/concourse/scripts/mtr_multi_bootstrap_ds.cnf #config dss_server.ini # ak/sk @@ -170,7 +153,8 @@ if [ ! -f "Makefile" ]; then -DWITH_DATA_STORE=ELOQDSS_ROCKSDB_CLOUD_S3 \ -DOPEN_LOG_SERVICE=OFF \ -DFORK_HM_PROCESS=ON \ - -DWITH_LOG_STATE=ROCKSDB_CLOUD_S3 \ + -DWITH_LOG_STATE=ROCKSDB_CLOUD_S3 \ + -DELOQ_MODULE_ENABLED=ON \ ../ fi @@ -183,7 +167,7 @@ echo "installing" cmake --install . --config Debug echo "building dss_server" -cd /home/$current_user/workspace/eloqsql/storage/eloq/store_handler/eloq_data_store_service +cd /home/$current_user/workspace/eloqsql/data_substrate/store_handler/eloq_data_store_service mkdir bld && cd bld cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DCMAKE_BUILD_TYPE=Debug -DWITH_DATA_STORE=ELOQDSS_ROCKSDB_CLOUD_S3 ../ cmake --build . --config Debug -j8 @@ -191,7 +175,7 @@ echo "installing dss_server" cp dss_server /home/$current_user/workspace/eloqsql/install/bin/ echo "building log_server" -cd /home/$current_user/workspace/eloqsql/storage/eloq/eloq_log_service +cd /home/$current_user/workspace/eloqsql/data_substrate/eloq_log_service mkdir bld && cd bld cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWITH_LOG_STATE=ROCKSDB_CLOUD_S3 ../ cmake --build . --config Debug -j8 @@ -200,25 +184,25 @@ cp launch_sv /home/$current_user/workspace/eloqsql/install/bin/ echo "build finished" -cd /home/$current_user/workspace/eloq_test -./setup -sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/*_s3.cnf -sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/*_s3.cnf -sed -i "s|eloq_txlog_rocksdb_cloud_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/*_s3.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/*_s3.cnf -sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" ./bootstrap_cnf/*_s3.cnf - -sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./bootstrap_cnf/eloqdss_server.cnf -sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/eloqdss_server.cnf - -sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./storage.cnf -sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./storage.cnf -sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./storage.cnf -sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./storage.cnf -sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./storage.cnf +# cd /home/$current_user/workspace/eloq_test +# ./setup +# sed -i "s/eloq_aws_access_key_id.*=.\+/eloq_aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s/eloq_aws_secret_key.*=.\+/eloq_aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s|eloq_txlog_rocksdb_cloud_s3_endpoint_url.*=.\+|eloq_txlog_rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s/eloq_txlog_rocksdb_cloud_bucket_name.*=.\+/eloq_txlog_rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/*_s3.cnf +# sed -i "s/eloq_txlog_rocksdb_cloud_bucket_prefix.*=.\+/eloq_txlog_rocksdb_cloud_bucket_prefix=txlog-/g" ./bootstrap_cnf/*_s3.cnf + +# sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./bootstrap_cnf/eloqdss_server.cnf +# sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./bootstrap_cnf/eloqdss_server.cnf + +# sed -i "s/aws_access_key_id.*=.\+/aws_access_key_id=${ELOQ_AWS_ACCESS_KEY_ID}/g" ./storage.cnf +# sed -i "s/aws_secret_key.*=.\+/aws_secret_key=${ELOQ_AWS_SECRET_KEY}/g" ./storage.cnf +# sed -i "s|rocksdb_cloud_s3_endpoint_url.*=.\+|rocksdb_cloud_s3_endpoint_url=${MINIO_ENDPOINT_URL}|g" ./storage.cnf +# sed -i "s/rocksdb_cloud_bucket_prefix.*=.\+/rocksdb_cloud_bucket_prefix=dss-/g" ./storage.cnf +# sed -i "s/rocksdb_cloud_bucket_name.*=.\+/rocksdb_cloud_bucket_name=${bucket_name}/g" ./storage.cnf # Clean up minio buckets echo "cleaning minio buckets" @@ -255,13 +239,6 @@ mc rb ${minio_server_alias}/dss-${bucket_name} --force; \ mc rb ${minio_server_alias}/txlog-${bucket_name} --force set -e -# Config eloq_kv_dss.cnf for multi -sed -i "s|eloq_dss_config_file_path.*=.\+|eloq_dss_config_file_path=|g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf -sed -i "s|eloq_dss_peer_node.*=.*|eloq_dss_peer_node=localhost:9100|g" $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf - -echo "eloq_kv_dss.cnf" -cat $WORKSPACE/eloqsql_pr/mysql-test/include/eloq_kv_dss.cnf - # Start dss_server echo "starting dss_server" nohup /home/$current_user/workspace/eloqsql/install/bin/dss_server --config=$WORKSPACE/eloqsql_pr/concourse/scripts/dss_server.ini > dss_server.log 2>&1 & diff --git a/concourse/scripts/tag.sh b/concourse/scripts/tag.sh index 212e0c958b7..fff5024a6a7 100755 --- a/concourse/scripts/tag.sh +++ b/concourse/scripts/tag.sh @@ -14,8 +14,8 @@ fi cd $HOME ln -s ${WORKSPACE}/eloqsql_src eloqsql cd eloqsql -ln -s $WORKSPACE/logservice_src storage/eloq/eloq_log_service -pushd storage/eloq/tx_service +ln -s $WORKSPACE/logservice_src data_substrate/eloq_log_service +pushd data_substrate/tx_service ln -s $WORKSPACE/raft_host_manager_src raft_host_manager popd diff --git a/configure.cmake b/configure.cmake index 5b49a065b5a..f36c77b411f 100644 --- a/configure.cmake +++ b/configure.cmake @@ -168,7 +168,7 @@ IF(UNIX) HAVE_LIBWRAP) SET(CMAKE_REQUIRED_LIBRARIES ${SAVE_CMAKE_REQUIRED_LIBRARIES}) IF(HAVE_LIBWRAP) - SET(MYSYS_LIBWRAP_SOURCE ${CMAKE_SOURCE_DIR}/mysys/my_libwrap.c) + SET(MYSYS_LIBWRAP_SOURCE ${ELOQSQL_SOURCE_DIR}/mysys/my_libwrap.c) SET(LIBWRAP "wrap") ENDIF() ENDIF() @@ -679,8 +679,8 @@ IF(NOT STACK_DIRECTION) "or -DSTACK_DIRECTION=-1 when calling cmake.") ELSE() TRY_RUN(STACKDIR_RUN_RESULT STACKDIR_COMPILE_RESULT - ${CMAKE_BINARY_DIR} - ${CMAKE_SOURCE_DIR}/cmake/stack_direction.c + ${ELOQSQL_BINARY_DIR} + ${ELOQSQL_SOURCE_DIR}/cmake/stack_direction.c ) # Test program returns 0 (down) or 1 (up). # Convert to -1 or 1 diff --git a/data_substrate b/data_substrate new file mode 160000 index 00000000000..4df2f155a07 --- /dev/null +++ b/data_substrate @@ -0,0 +1 @@ +Subproject commit 4df2f155a074d86594c5fe8075407efe284cb014 diff --git a/dbug/CMakeLists.txt b/dbug/CMakeLists.txt index d938788aded..ce397518f9f 100644 --- a/dbug/CMakeLists.txt +++ b/dbug/CMakeLists.txt @@ -14,8 +14,8 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA INCLUDE_DIRECTORIES( - ${CMAKE_SOURCE_DIR}/dbug - ${CMAKE_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/dbug + ${ELOQSQL_SOURCE_DIR}/include ) SET(DBUG_SOURCES dbug.c) ADD_CONVENIENCE_LIBRARY(dbug ${DBUG_SOURCES}) diff --git a/extra/CMakeLists.txt b/extra/CMakeLists.txt index 5021128ed35..74dacada37c 100644 --- a/extra/CMakeLists.txt +++ b/extra/CMakeLists.txt @@ -13,7 +13,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${ZLIB_INCLUDE_DIR}) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include ${ZLIB_INCLUDE_DIR}) # Default install component for the files is Server here SET(MYSQL_INSTALL_COMPONENT Server) @@ -28,23 +28,23 @@ ENDIF() # mysqld_error.h results in rebuild of the almost whole server) # To preserve timestamp, first generate a temp header file, then copy it # to mysqld_error.h using cmake -E copy_if_different -ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/include/mysqld_error.h.tmp +ADD_CUSTOM_COMMAND(OUTPUT ${ELOQSQL_BINARY_DIR}/include/mysqld_error.h.tmp COMMAND comp_err --charset=${PROJECT_SOURCE_DIR}/sql/share/charsets - --out-dir=${CMAKE_BINARY_DIR}/sql/share/ - --header_file=${CMAKE_BINARY_DIR}/include/mysqld_error.h.tmp - --name_file=${CMAKE_BINARY_DIR}/include/mysqld_ername.h.tmp - --state_file=${CMAKE_BINARY_DIR}/include/sql_state.h.tmp + --out-dir=${ELOQSQL_BINARY_DIR}/sql/share/ + --header_file=${ELOQSQL_BINARY_DIR}/include/mysqld_error.h.tmp + --name_file=${ELOQSQL_BINARY_DIR}/include/mysqld_ername.h.tmp + --state_file=${ELOQSQL_BINARY_DIR}/include/sql_state.h.tmp --in_file=${PROJECT_SOURCE_DIR}/sql/share/errmsg-utf8.txt - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/include/mysqld_error.h.tmp ${CMAKE_BINARY_DIR}/include/mysqld_error.h - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/include/mysqld_ername.h.tmp ${CMAKE_BINARY_DIR}/include/mysqld_ername.h - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/include/sql_state.h.tmp ${CMAKE_BINARY_DIR}/include/sql_state.h + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ELOQSQL_BINARY_DIR}/include/mysqld_error.h.tmp ${ELOQSQL_BINARY_DIR}/include/mysqld_error.h + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ELOQSQL_BINARY_DIR}/include/mysqld_ername.h.tmp ${ELOQSQL_BINARY_DIR}/include/mysqld_ername.h + COMMAND ${CMAKE_COMMAND} -E copy_if_different ${ELOQSQL_BINARY_DIR}/include/sql_state.h.tmp ${ELOQSQL_BINARY_DIR}/include/sql_state.h DEPENDS comp_err ${PROJECT_SOURCE_DIR}/sql/share/errmsg-utf8.txt) ADD_CUSTOM_TARGET(GenError ALL DEPENDS - ${CMAKE_BINARY_DIR}/include/mysqld_error.h.tmp) + ${ELOQSQL_BINARY_DIR}/include/mysqld_error.h.tmp) MYSQL_ADD_EXECUTABLE(my_print_defaults my_print_defaults.c COMPONENT Client) TARGET_LINK_LIBRARIES(my_print_defaults mysys) @@ -67,8 +67,8 @@ ENDIF() IF(WITH_INNOBASE_STORAGE_ENGINE) # Add path to the InnoDB headers INCLUDE_DIRECTORIES( - ${CMAKE_SOURCE_DIR}/storage/innobase/include - ${CMAKE_SOURCE_DIR}/sql) + ${ELOQSQL_SOURCE_DIR}/storage/innobase/include + ${ELOQSQL_SOURCE_DIR}/sql) # We use the InnoDB code directly in case the code changes. ADD_DEFINITIONS("-DUNIV_INNOCHECKSUM") diff --git a/extra/mariabackup/CMakeLists.txt b/extra/mariabackup/CMakeLists.txt index a7a35c58ac3..b58c300c8f5 100644 --- a/extra/mariabackup/CMakeLists.txt +++ b/extra/mariabackup/CMakeLists.txt @@ -14,7 +14,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA -OPTION(WITH_MARIABACKUP "Include mariabackup" ON) +OPTION(WITH_MARIABACKUP "Include mariabackup" OFF) ADD_FEATURE_INFO(MARIABACKUP WITH_MARIABACKUP "MariaDB Backup Utility") IF(NOT WITH_MARIABACKUP) @@ -29,8 +29,8 @@ IF(NOT WIN32) ENDIF() INCLUDE_DIRECTORIES( - ${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/sql ${CMAKE_CURRENT_SOURCE_DIR}/quicklz ${CMAKE_CURRENT_SOURCE_DIR} ) diff --git a/extra/readline/CMakeLists.txt b/extra/readline/CMakeLists.txt index 9a02d9b8247..687a88d3ecd 100644 --- a/extra/readline/CMakeLists.txt +++ b/extra/readline/CMakeLists.txt @@ -13,7 +13,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include ${CMAKE_CURRENT_SOURCE_DIR}) ADD_DEFINITIONS(-DHAVE_CONFIG_H -DNO_KILL_INTR) diff --git a/libmysqld/CMakeLists.txt b/libmysqld/CMakeLists.txt index 85456f91500..6413e5dfc1f 100644 --- a/libmysqld/CMakeLists.txt +++ b/libmysqld/CMakeLists.txt @@ -18,11 +18,11 @@ ADD_DEFINITIONS(-DMYSQL_SERVER -DEMBEDDED_LIBRARY ${SSL_DEFINES}) INCLUDE_DIRECTORIES( -${CMAKE_SOURCE_DIR}/include -${CMAKE_SOURCE_DIR}/libmysqld -${CMAKE_SOURCE_DIR}/sql -${CMAKE_SOURCE_DIR}/tpool -${CMAKE_BINARY_DIR}/sql +${ELOQSQL_SOURCE_DIR}/include +${ELOQSQL_SOURCE_DIR}/libmysqld +${ELOQSQL_SOURCE_DIR}/sql +${ELOQSQL_SOURCE_DIR}/tpool +${ELOQSQL_BINARY_DIR}/sql ${PCRE_INCLUDES} ${ZLIB_INCLUDE_DIR} ${SSL_INCLUDE_DIRS} @@ -30,11 +30,11 @@ ${SSL_INTERNAL_INCLUDE_DIRS} ) SET(GEN_SOURCES -${CMAKE_BINARY_DIR}/sql/sql_yacc.hh -${CMAKE_BINARY_DIR}/sql/yy_mariadb.cc -${CMAKE_BINARY_DIR}/sql/yy_oracle.hh -${CMAKE_BINARY_DIR}/sql/yy_oracle.cc -${CMAKE_BINARY_DIR}/sql/lex_hash.h +${ELOQSQL_BINARY_DIR}/sql/sql_yacc.hh +${ELOQSQL_BINARY_DIR}/sql/yy_mariadb.cc +${ELOQSQL_BINARY_DIR}/sql/yy_oracle.hh +${ELOQSQL_BINARY_DIR}/sql/yy_oracle.cc +${ELOQSQL_BINARY_DIR}/sql/lex_hash.h ) SET_SOURCE_FILES_PROPERTIES(${GEN_SOURCES} PROPERTIES GENERATED TRUE) @@ -99,7 +99,7 @@ SET(SQL_EMBEDDED_SOURCES emb_qcache.cc libmysqld.c lib_sql.cc ../sql/event_parse_data.cc ../sql/sql_signal.cc ../sql/sys_vars.cc - ${CMAKE_BINARY_DIR}/sql/sql_builtin.cc + ${ELOQSQL_BINARY_DIR}/sql/sql_builtin.cc ../sql/mdl.cc ../sql/transaction.cc ../sql/sql_join_cache.cc ../sql/multi_range_read.cc diff --git a/libmysqld/examples/CMakeLists.txt b/libmysqld/examples/CMakeLists.txt index 2a10def8e2e..ef964053444 100644 --- a/libmysqld/examples/CMakeLists.txt +++ b/libmysqld/examples/CMakeLists.txt @@ -13,10 +13,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/libmysqld/include +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/libmysqld/include ${PCRE_INCLUDES} - ${CMAKE_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/sql ${MY_READLINE_INCLUDE_DIR} ) diff --git a/libservices/CMakeLists.txt b/libservices/CMakeLists.txt index 274c8ce6dac..9f4ab13087b 100644 --- a/libservices/CMakeLists.txt +++ b/libservices/CMakeLists.txt @@ -13,7 +13,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include) SET(MYSQLSERVICES_SOURCES base64_service.c diff --git a/mysql-test/CMakeLists.txt b/mysql-test/CMakeLists.txt index 2c040fc0e32..377bdc10865 100644 --- a/mysql-test/CMakeLists.txt +++ b/mysql-test/CMakeLists.txt @@ -16,7 +16,7 @@ INSTALL_MYSQL_TEST("." ".") -IF(NOT ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) +IF(NOT ${ELOQSQL_SOURCE_DIR} STREQUAL ${ELOQSQL_BINARY_DIR}) # Enable running mtr from build directory CONFIGURE_FILE( ${CMAKE_CURRENT_SOURCE_DIR}/mtr.out-of-source @@ -106,7 +106,7 @@ ENDIF() SET(MTR_FORCE perl ./mysql-test-run.pl --force) -IF(EXISTS ${CMAKE_SOURCE_DIR}/mysql-test/suite/nist) +IF(EXISTS ${ELOQSQL_SOURCE_DIR}/mysql-test/suite/nist) SET(TEST_NIST ${MTR_FORCE} --comment=nist suite=nist ${EXP} && ${MTR_FORCE} --comment=nist --force --suite=nist+ps ${EXP}) ELSE() diff --git a/mysql-test/include/eloq_kv_dss.cnf b/mysql-test/include/eloq_kv_dss.cnf deleted file mode 100644 index 11a267751b5..00000000000 --- a/mysql-test/include/eloq_kv_dss.cnf +++ /dev/null @@ -1,15 +0,0 @@ -[mysqld] -eloq_aws_access_key_id=XXXXXXXXXXXXXXX -eloq_aws_secret_key=XXXXXXXXXXXXXXXXXXXXXXXXX -eloq_txlog_rocksdb_cloud_endpoint_url=http://127.0.0.1:9900 -eloq_txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_txlog_rocksdb_cloud_bucket_prefix = txlog- -eloq_txlog_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_rocksdb_cloud_endpoint_url=http://127.0.0.1:9900 -eloq_dss_rocksdb_cloud_bucket_name = eloqsql-mtr-test -eloq_dss_rocksdb_cloud_bucket_prefix = dss- -eloq_dss_rocksdb_cloud_region = ap-northeast-1 -eloq_dss_config_file_path = -eloq_dss_peer_node = -eloq_dss_rocksdb_cloud_sst_file_cache_size = 20GB -eloq_dss_rocksdb_cloud_purger_periodicity_secs = 30 diff --git a/mysql-test/include/eloq_kv_keyspace.cnf b/mysql-test/include/eloq_kv_keyspace.cnf index 0942ada113c..e670b33f60a 100644 --- a/mysql-test/include/eloq_kv_keyspace.cnf +++ b/mysql-test/include/eloq_kv_keyspace.cnf @@ -2,7 +2,3 @@ [mysqld] eloq_random_scan_sort=on -eloq_keyspace_name=mono_test -eloq_dynamodb_endpoint=http://127.0.0.1:9100 -eloq_bigtable_project_id=XXXXXXXX -eloq_bigtable_instance_id=XXXXXXXX diff --git a/mysql-test/include/eloq_kv_storage.cnf b/mysql-test/include/eloq_kv_storage.cnf deleted file mode 100644 index ffcaf59ee52..00000000000 --- a/mysql-test/include/eloq_kv_storage.cnf +++ /dev/null @@ -1,2 +0,0 @@ -[mysqld] -eloq_kv_storage=eloqds diff --git a/mysql-test/lib/My/SafeProcess/CMakeLists.txt b/mysql-test/lib/My/SafeProcess/CMakeLists.txt index 0004a44982d..ad49834349d 100644 --- a/mysql-test/lib/My/SafeProcess/CMakeLists.txt +++ b/mysql-test/lib/My/SafeProcess/CMakeLists.txt @@ -14,12 +14,12 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include) IF (WIN32) ADD_EXECUTABLE(my_safe_process safe_process_win.cc) ADD_EXECUTABLE(my_safe_kill safe_kill_win.cc) - TARGET_INCLUDE_DIRECTORIES(my_safe_kill PRIVATE ${CMAKE_SOURCE_DIR}/include) + TARGET_INCLUDE_DIRECTORIES(my_safe_kill PRIVATE ${ELOQSQL_SOURCE_DIR}/include) TARGET_LINK_LIBRARIES(my_safe_kill mysys psapi) ELSE() ADD_EXECUTABLE(my_safe_process safe_process.cc) diff --git a/mysql-test/mtr.out-of-source b/mysql-test/mtr.out-of-source index abab0be90df..be6c28be567 100644 --- a/mysql-test/mtr.out-of-source +++ b/mysql-test/mtr.out-of-source @@ -1,5 +1,5 @@ #!/usr/bin/env perl # Call mtr in out-of-source build -$ENV{MTR_BINDIR} = '@CMAKE_BINARY_DIR@'; -chdir('@CMAKE_SOURCE_DIR@/mysql-test'); -exit(system($^X, '@CMAKE_SOURCE_DIR@/mysql-test/mariadb-test-run.pl', @ARGV) >> 8); +$ENV{MTR_BINDIR} = '@ELOQSQL_BINARY_DIR@'; +chdir('@ELOQSQL_SOURCE_DIR@/mysql-test'); +exit(system($^X, '@ELOQSQL_SOURCE_DIR@/mysql-test/mariadb-test-run.pl', @ARGV) >> 8); diff --git a/mysys/CMakeLists.txt b/mysys/CMakeLists.txt index 760c3c1475d..146e33a4dcd 100644 --- a/mysys/CMakeLists.txt +++ b/mysys/CMakeLists.txt @@ -14,7 +14,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/mysys) +INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR} ${ELOQSQL_SOURCE_DIR}/include ${ELOQSQL_SOURCE_DIR}/mysys) SET(MYSYS_SOURCES array.c charset-def.c charset.c my_default.c get_password.c diff --git a/mysys_ssl/CMakeLists.txt b/mysys_ssl/CMakeLists.txt index 1c3f60b5bb0..81cedff4b83 100644 --- a/mysys_ssl/CMakeLists.txt +++ b/mysys_ssl/CMakeLists.txt @@ -13,8 +13,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/mysys_ssl +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/mysys_ssl ${SSL_INCLUDE_DIRS}) IF(SSL_DEFINES) diff --git a/plugin/auth_dialog/CMakeLists.txt b/plugin/auth_dialog/CMakeLists.txt index b5e1b2beca0..7c2fcac3f00 100644 --- a/plugin/auth_dialog/CMakeLists.txt +++ b/plugin/auth_dialog/CMakeLists.txt @@ -16,5 +16,5 @@ # disabled in favor of libmariadb/plugins/auth/dialog.c # -#MYSQL_ADD_PLUGIN(dialog dialog.c ${CMAKE_SOURCE_DIR}/libmysql/get_password.c +#MYSQL_ADD_PLUGIN(dialog dialog.c ${ELOQSQL_SOURCE_DIR}/libmysql/get_password.c # MODULE_ONLY CLIENT COMPONENT ClientPlugins) diff --git a/plugin/disks/CMakeLists.txt b/plugin/disks/CMakeLists.txt index 4e40842cad0..3c4897a44cf 100644 --- a/plugin/disks/CMakeLists.txt +++ b/plugin/disks/CMakeLists.txt @@ -19,6 +19,6 @@ int main() ENDIF() IF (HAVE_GETMNTENT OR HAVE_GETMNTENT_IN_SYS_MNTAB OR HAVE_GETMNTINFO OR HAVE_GETMNTINFO64) - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql) + INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql) MYSQL_ADD_PLUGIN(DISKS information_schema_disks.cc MODULE_ONLY RECOMPILE_FOR_EMBEDDED) ENDIF() diff --git a/plugin/feedback/CMakeLists.txt b/plugin/feedback/CMakeLists.txt index 2103250e5a6..059f490e8ae 100644 --- a/plugin/feedback/CMakeLists.txt +++ b/plugin/feedback/CMakeLists.txt @@ -1,4 +1,4 @@ -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql ${PCRE_INCLUDES} ${SSL_INCLUDE_DIRS}) diff --git a/plugin/file_key_management/CMakeLists.txt b/plugin/file_key_management/CMakeLists.txt index 9b09da9bf20..d91b2916062 100644 --- a/plugin/file_key_management/CMakeLists.txt +++ b/plugin/file_key_management/CMakeLists.txt @@ -1,4 +1,4 @@ SET(FILE_KEY_MANAGEMENT_PLUGIN_SOURCES file_key_management_plugin.cc parser.cc) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql) MYSQL_ADD_PLUGIN(FILE_KEY_MANAGEMENT ${FILE_KEY_MANAGEMENT_PLUGIN_SOURCES} MODULE_ONLY) diff --git a/plugin/locale_info/CMakeLists.txt b/plugin/locale_info/CMakeLists.txt index c988d652d40..58f60de9a93 100644 --- a/plugin/locale_info/CMakeLists.txt +++ b/plugin/locale_info/CMakeLists.txt @@ -1,4 +1,4 @@ -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql ${CMAKE_SOURCE_DIR}/regex) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql ${ELOQSQL_SOURCE_DIR}/regex) MYSQL_ADD_PLUGIN(LOCALES locale_info.cc RECOMPILE_FOR_EMBEDDED) diff --git a/plugin/qc_info/CMakeLists.txt b/plugin/qc_info/CMakeLists.txt index b8c5f926cff..8f043b32aa8 100644 --- a/plugin/qc_info/CMakeLists.txt +++ b/plugin/qc_info/CMakeLists.txt @@ -1,4 +1,4 @@ -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql ${PCRE_INCLUDES}) MYSQL_ADD_PLUGIN(QUERY_CACHE_INFO qc_info.cc RECOMPILE_FOR_EMBEDDED) diff --git a/plugin/type_geom/CMakeLists.txt b/plugin/type_geom/CMakeLists.txt index 2b0c84f6fa0..b82019fecd8 100644 --- a/plugin/type_geom/CMakeLists.txt +++ b/plugin/type_geom/CMakeLists.txt @@ -1,3 +1,3 @@ -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql) MYSQL_ADD_PLUGIN(TYPE_GEOM plugin.cc MANDATORY RECOMPILE_FOR_EMBEDDED) diff --git a/plugin/userstat/CMakeLists.txt b/plugin/userstat/CMakeLists.txt index 5daa4f59577..82bc05d60f3 100644 --- a/plugin/userstat/CMakeLists.txt +++ b/plugin/userstat/CMakeLists.txt @@ -1,4 +1,4 @@ -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql) MYSQL_ADD_PLUGIN(USERSTAT userstat.cc MANDATORY) diff --git a/plugin/wsrep_info/CMakeLists.txt b/plugin/wsrep_info/CMakeLists.txt index 34aee9fba2c..0427450e8ad 100644 --- a/plugin/wsrep_info/CMakeLists.txt +++ b/plugin/wsrep_info/CMakeLists.txt @@ -1,5 +1,5 @@ IF (WITH_WSREP) - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql - ${CMAKE_SOURCE_DIR}/wsrep) + INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/wsrep) MYSQL_ADD_PLUGIN(WSREP_INFO plugin.cc MODULE_ONLY RECOMPILE_FOR_EMBEDDED) ENDIF() diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index 9eec793c9fb..1208d8ed8fd 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt @@ -29,7 +29,7 @@ MACRO(INSTALL_LINK old new destination component) ENDMACRO() IF(NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING_EMULATOR) - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) + INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include) ADD_EXECUTABLE(comp_sql comp_sql.c ../sql/sql_bootstrap.cc) TARGET_LINK_LIBRARIES(comp_sql) ENDIF() @@ -40,7 +40,7 @@ IF(NOT WIN32 OR (CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_CROSSCOMPILING_EMUL MARK_AS_ADVANCED(CAT_EXECUTABLE) ENDIF() -IF(NOT ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")) +IF(NOT ("${ELOQSQL_BINARY_DIR}" STREQUAL "${ELOQSQL_SOURCE_DIR}")) FOREACH(f fill_help_tables.sql mysql_system_tables_fix.sql mysql_system_tables.sql mysql_system_tables_data.sql mysql_performance_tables.sql) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/${f} ${CMAKE_CURRENT_BINARY_DIR}/${f} COPYONLY) ENDFOREACH() @@ -84,7 +84,7 @@ ADD_CUSTOM_TARGET(GenFixPrivs IF(UNIX AND NOT WITHOUT_SERVER) FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution - "cd ${CMAKE_BINARY_DIR} && '${CMAKE_CPACK_COMMAND}' -G TGZ --config CPackConfig.cmake\n" ) + "cd ${ELOQSQL_BINARY_DIR} && '${CMAKE_CPACK_COMMAND}' -G TGZ --config CPackConfig.cmake\n" ) EXECUTE_PROCESS( COMMAND chmod +x ${CMAKE_CURRENT_BINARY_DIR}/make_binary_distribution ) diff --git a/scripts/sys_schema/CMakeLists.txt b/scripts/sys_schema/CMakeLists.txt index ccb268cc4fd..bf73a697fb1 100644 --- a/scripts/sys_schema/CMakeLists.txt +++ b/scripts/sys_schema/CMakeLists.txt @@ -174,4 +174,4 @@ FOREACH(f ${files}) FILE(READ ${f} content) SET(CMAKE_CONFIGURABLE_FILE_CONTENT "${CMAKE_CONFIGURABLE_FILE_CONTENT}${content}\n") ENDFOREACH() -CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/cmake/configurable_file_content.in ${CMAKE_BINARY_DIR}/scripts/mysql_sys_schema.sql) +CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/cmake/configurable_file_content.in ${ELOQSQL_BINARY_DIR}/scripts/mysql_sys_schema.sql) diff --git a/sql/CMakeLists.txt b/sql/CMakeLists.txt index efbd84edcf4..70ff45c27e2 100644 --- a/sql/CMakeLists.txt +++ b/sql/CMakeLists.txt @@ -54,7 +54,7 @@ if (EXT_TX_PROC_ENABLED) add_definitions(-DEXT_TX_PROC_ENABLED) endif() -option(ELOQ_MODULE_ENABLED "Allows external threads to loop thread groups." OFF) +option(ELOQ_MODULE_ENABLED "Allows external threads to loop thread groups." ON) if (ELOQ_MODULE_ENABLED) add_definitions(-DELOQ_MODULE_ENABLED) endif() @@ -118,13 +118,13 @@ IF(ELOQ_MODULE_ENABLED) ENDIF() INCLUDE_DIRECTORIES( -${CMAKE_SOURCE_DIR}/include -${CMAKE_SOURCE_DIR}/sql +${ELOQSQL_SOURCE_DIR}/include +${ELOQSQL_SOURCE_DIR}/sql ${PCRE_INCLUDES} ${ZLIB_INCLUDE_DIR} ${SSL_INCLUDE_DIRS} -${CMAKE_BINARY_DIR}/sql -${CMAKE_SOURCE_DIR}/tpool +${ELOQSQL_BINARY_DIR}/sql +${ELOQSQL_SOURCE_DIR}/tpool ${Boost_INCLUDE_DIRS} ) @@ -212,7 +212,7 @@ SET (SQL_SOURCE sql_signal.cc mdl.cc sql_admin.cc transaction.cc sys_vars.cc sql_truncate.cc datadict.cc sql_reload.cc - mysql_metrics.cc + mysql_metrics.cc circular_queue.h # added in MariaDB: grant.cc @@ -260,7 +260,7 @@ IF ((CMAKE_SYSTEM_NAME MATCHES "Linux" OR ENDIF() SET(SQL_SOURCE ${SQL_SOURCE} threadpool_generic.cc) SET(SQL_SOURCE ${SQL_SOURCE} threadpool_common.cc) - MYSQL_ADD_PLUGIN(thread_pool_info thread_pool_info.cc DEFAULT STATIC_ONLY NOT_EMBEDDED) + MYSQL_ADD_PLUGIN(thread_pool_info thread_pool_info.cc DEFAULT STATIC_ONLY NOT_EMBEDDED LINK_LIBRARIES data_substrate) ENDIF() IF(WIN32) @@ -279,6 +279,7 @@ SET(SQL_DEP_LIBS ${SSL_LIBRARIES} ${LIBSYSTEMD} ${LIBSYSTEMD} + ${DATA_SUBSTRATE_LIB} ) IF(COROUTINE_ENABLED) @@ -302,7 +303,7 @@ IF(MARIA_WITH_GLOG) endif() include_directories(${GLOG_INCLUDE_PATH}) set(SQL_DEP_LIBS ${SQL_DEP_LIBS} ${GLOG_LIB} gflags) - set(SQL_SOURCE ${SQL_SOURCE} glog_error_logging.cc) + #set(SQL_SOURCE ${SQL_SOURCE} glog_error_logging.cc) ENDIF() ADD_LIBRARY(sql STATIC ${SQL_SOURCE}) @@ -310,11 +311,11 @@ MAYBE_DISABLE_IPO(sql) DTRACE_INSTRUMENT(sql) TARGET_LINK_LIBRARIES(sql ${SQL_DEP_LIBS}) -IF(PLUGIN_ELOQ) +# IF(PLUGIN_ELOQ) ADD_DEFINITIONS(-DWITH_ELOQ_STORAGE_ENGINE) - SET(ELOQ_SOURCE_DIR ${CMAKE_SOURCE_DIR}/storage/eloq) + SET(ELOQ_SOURCE_DIR ${ELOQSQL_SOURCE_DIR}/storage/eloq) set(SQL_INCLUDE_DIR ${SQL_INCLUDE_DIR} ${ELOQ_SOURCE_DIR}) -ENDIF() +# ENDIF() TARGET_INCLUDE_DIRECTORIES(sql PRIVATE ${SQL_INCLUDE_DIR}) @@ -384,7 +385,22 @@ ENDIF() ADD_LIBRARY(sql_builtins STATIC ${CMAKE_CURRENT_BINARY_DIR}/sql_builtin.cc) TARGET_LINK_LIBRARIES(sql_builtins ${MYSQLD_STATIC_PLUGIN_LIBS}) -MYSQL_ADD_EXECUTABLE(mariadbd ${MYSQLD_SOURCE} DESTINATION ${INSTALL_SBINDIR} COMPONENT Server) +# Export libraries for converged build +if(BUILD_ELOQSQL_AS_LIBRARY) + # Make sql and sql_builtins available to parent + set(ELOQSQL_SQL_LIBRARY sql CACHE STRING "EloqSQL sql library") + set(ELOQSQL_SQL_BUILTINS_LIBRARY sql_builtins CACHE STRING "EloqSQL sql_builtins library") + set(ELOQSQL_INCLUDE_DIRS + ${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/sql + ${ELOQSQL_BINARY_DIR}/include + CACHE STRING "EloqSQL include directories" + ) +endif() + +# Make executable optional +if(NOT BUILD_ELOQSQL_AS_LIBRARY) + MYSQL_ADD_EXECUTABLE(mariadbd ${MYSQLD_SOURCE} DESTINATION ${INSTALL_SBINDIR} COMPONENT Server) IF(APPLE) # Add CoreServices framework since some dloadable plugins may need it @@ -432,6 +448,7 @@ IF(WITH_MYSQLD_LDFLAGS) SET_TARGET_PROPERTIES(mariadbd PROPERTIES LINK_FLAGS "${MYSQLD_LINK_FLAGS} ${WITH_MYSQLD_LDFLAGS}") ENDIF() +endif() # End of BUILD_ELOQSQL_AS_LIBRARY conditional # Handle out-of-source build from source package with possibly broken @@ -504,14 +521,14 @@ IF(WIN32 OR HAVE_DLOPEN AND NOT DISABLE_SHARED) ENDIF() CONFIGURE_FILE( - ${CMAKE_SOURCE_DIR}/cmake/make_dist.cmake.in - ${CMAKE_BINARY_DIR}/make_dist.cmake @ONLY) + ${ELOQSQL_SOURCE_DIR}/cmake/make_dist.cmake.in + ${ELOQSQL_BINARY_DIR}/make_dist.cmake @ONLY) ADD_CUSTOM_TARGET(dist - COMMAND ${CMAKE_COMMAND} -P ${CMAKE_BINARY_DIR}/make_dist.cmake - DEPENDS ${CMAKE_BINARY_DIR}/sql/yy_mariadb.cc ${CMAKE_BINARY_DIR}/sql/yy_mariadb.hh - DEPENDS ${CMAKE_BINARY_DIR}/sql/yy_oracle.cc ${CMAKE_BINARY_DIR}/sql/yy_oracle.hh - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + COMMAND ${CMAKE_COMMAND} -P ${ELOQSQL_BINARY_DIR}/make_dist.cmake + DEPENDS ${ELOQSQL_BINARY_DIR}/sql/yy_mariadb.cc ${ELOQSQL_BINARY_DIR}/sql/yy_mariadb.hh + DEPENDS ${ELOQSQL_BINARY_DIR}/sql/yy_oracle.cc ${ELOQSQL_BINARY_DIR}/sql/yy_oracle.hh + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR} ) ADD_CUSTOM_TARGET(distclean @@ -532,11 +549,11 @@ IF(TARGET mariadbd AND (NOT CMAKE_CROSSCOMPILING OR DEFINED CMAKE_CROSSCOMPILING COMMAND ${CMAKE_COMMAND} -E make_directory data COMMAND ${CMAKE_COMMAND} -E chdir data ${CMAKE_COMMAND} ${CONFIG_PARAM} - -DTOP_SRCDIR="${CMAKE_BINARY_DIR}" + -DTOP_SRCDIR="${ELOQSQL_BINARY_DIR}" -DBINDIR="${CMAKE_CURRENT_BINARY_DIR}" -DMYSQLD_EXECUTABLE="$" -DCMAKE_CFG_INTDIR="${CMAKE_CFG_INTDIR}" - -P ${CMAKE_SOURCE_DIR}/cmake/create_initial_db.cmake + -P ${ELOQSQL_SOURCE_DIR}/cmake/create_initial_db.cmake COMMAND ${CMAKE_COMMAND} -E touch ${CMAKE_CURRENT_BINARY_DIR}/initdb.dep WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/ DEPENDS mariadbd @@ -559,15 +576,15 @@ IF(WIN32) # Create bootstrapper SQL script ADD_CUSTOM_COMMAND(OUTPUT ${my_bootstrap_sql} - COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR}/scripts + COMMAND ${CMAKE_COMMAND} -E chdir ${ELOQSQL_BINARY_DIR}/scripts cmd /c copy mysql_system_tables.sql+mysql_system_tables_data.sql+fill_help_tables.sql+mysql_performance_tables.sql+mysql_test_db.sql+mysql_sys_schema.sql ${native_outfile} DEPENDS - ${CMAKE_SOURCE_DIR}/scripts/mysql_system_tables.sql - ${CMAKE_SOURCE_DIR}/scripts/mysql_system_tables_data.sql - ${CMAKE_SOURCE_DIR}/scripts/fill_help_tables.sql - ${CMAKE_SOURCE_DIR}/scripts/mysql_performance_tables.sql - ${CMAKE_SOURCE_DIR}/scripts/mysql_test_db.sql - ${CMAKE_BINARY_DIR}/scripts/mysql_sys_schema.sql + ${ELOQSQL_SOURCE_DIR}/scripts/mysql_system_tables.sql + ${ELOQSQL_SOURCE_DIR}/scripts/mysql_system_tables_data.sql + ${ELOQSQL_SOURCE_DIR}/scripts/fill_help_tables.sql + ${ELOQSQL_SOURCE_DIR}/scripts/mysql_performance_tables.sql + ${ELOQSQL_SOURCE_DIR}/scripts/mysql_test_db.sql + ${ELOQSQL_BINARY_DIR}/scripts/mysql_sys_schema.sql ) ADD_CUSTOM_COMMAND( diff --git a/sql/circular_queue.h b/sql/circular_queue.h new file mode 100644 index 00000000000..e01bff59caa --- /dev/null +++ b/sql/circular_queue.h @@ -0,0 +1,258 @@ +/** + * Copyright (C) 2025 EloqData Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under either of the following two licenses: + * 1. GNU Affero General Public License, version 3, as published by the Free + * Software Foundation. + * 2. GNU General Public License as published by the Free Software + * Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License or GNU General Public License for more + * details. + * + * You should have received a copy of the GNU Affero General Public License + * and GNU General Public License V2 along with this program. If not, see + * . + * + */ +#pragma once + +#ifndef CIRCULAR_QUEUE_H +#define CIRCULAR_QUEUE_H + +#include +#include + +template +class CircularQueue +{ +public: + CircularQueue(size_t capacity = 8) : head_(0), cnt_(0), capacity_(capacity) + { + vec_ = std::make_unique(capacity); + } + + CircularQueue(CircularQueue &&rhs) + { + head_ = rhs.head_; + cnt_ = rhs.cnt_; + capacity_ = rhs.capacity_; + vec_ = std::move(rhs.vec_); + } + + CircularQueue &operator=(CircularQueue &&rhs) + { + if (this != &rhs) + { + head_ = rhs.head_; + cnt_ = rhs.cnt_; + capacity_ = rhs.capacity_; + vec_ = std::move(rhs.vec_); + } + return *this; + } + + CircularQueue(const CircularQueue &rhs) = delete; + CircularQueue &operator=(const CircularQueue &rhs) = delete; + + ~CircularQueue() = default; + + void Reset() + { + head_ = 0; + cnt_ = 0; + if (capacity_ > 8) + { + capacity_ = 8; + vec_ = std::make_unique(capacity_); + } + } + + void Enqueue(const T &item) + { + if (cnt_ == 0) + { + vec_[0] = item; + head_ = 0; + cnt_ = 1; + } + else if (cnt_ == capacity_) + { + size_t new_capacity = capacity_ << 1; + std::unique_ptr new_vec = std::make_unique(new_capacity); + + // Before: 0-------Tail-Head---------N-1 + // After: 0----------------------------Tail------------M-1 + // Copy Head --> N-1 + std::copy( + vec_.get() + head_, vec_.get() + capacity_, new_vec.get()); + + size_t half_cnt = capacity_ - head_; + // Copy 0 --> Tail + std::copy(vec_.get(), vec_.get() + head_, new_vec.get() + half_cnt); + + new_vec[capacity_] = item; + cnt_ = capacity_ + 1; + capacity_ = new_capacity; + head_ = 0; + vec_ = std::move(new_vec); + } + else + { + size_t tail = (head_ + cnt_) % capacity_; + vec_[tail] = item; + ++cnt_; + } + } + + void Enqueue(T &&item) + { + if (cnt_ == 0) + { + vec_[0] = std::move(item); + head_ = 0; + cnt_ = 1; + } + else if (cnt_ == capacity_) + { + size_t new_capacity = static_cast(capacity_ * 1.5); + std::unique_ptr new_vec = std::make_unique(new_capacity); + + // Before: 0-------Tail-Head---------N-1 + // After: 0----------------------------Tail------------M-1 + // Copy Head --> N-1 + size_t end = 0; + for (size_t idx = head_; idx < capacity_; ++idx, ++end) + { + new_vec[end] = std::move(vec_[idx]); + } + + // Copy 0 --> Tail + for (size_t idx = 0; idx < head_; ++idx, ++end) + { + new_vec[end] = std::move(vec_[idx]); + } + + new_vec[capacity_] = std::move(item); + cnt_ = capacity_ + 1; + capacity_ = new_capacity; + head_ = 0; + vec_ = std::move(new_vec); + } + else + { + size_t tail = (head_ + cnt_) % capacity_; + vec_[tail] = std::move(item); + ++cnt_; + } + } + + void EnqueueAsFirst(const T &item) + { + if (cnt_ == 0) + { + vec_[0] = item; + head_ = 0; + cnt_ = 1; + } + else if (cnt_ == capacity_) + { + size_t new_capacity = static_cast(capacity_ * 1.5); + std::unique_ptr new_vec = std::make_unique(new_capacity); + + // Before: 0-------Tail-Head---------N-1 + // After: 0----------------------------Tail------------M-1 + // Copy Head --> N-1 + std::copy( + vec_.get() + head_, vec_.get() + capacity_, new_vec.get()); + + size_t half_cnt = capacity_ - head_; + // Copy 0 --> Tail + std::copy(vec_.get(), vec_.get() + head_, new_vec.get() + half_cnt); + + new_vec[new_capacity - 1] = item; + head_ = new_capacity - 1; + cnt_ = capacity_ + 1; + capacity_ = new_capacity; + vec_ = std::move(new_vec); + } + else + { + if (head_ != 0) + { + vec_[head_ - 1] = item; + --head_; + } + else + { + vec_[capacity_ - 1] = item; + head_ = capacity_ - 1; + } + ++cnt_; + } + } + + void Dequeue() + { + if (cnt_ > 0) + { + ++head_; + if (head_ == capacity_) + { + head_ = 0; + } + --cnt_; + } + } + + T &Peek() + { + return vec_[head_]; + } + + size_t Size() const + { + return cnt_; + } + + size_t Capacity() const + { + return capacity_; + } + + size_t MemUsage() const + { + return (sizeof(CircularQueue) + capacity_ * sizeof(uint64_t)); + } + + T &Get(size_t index) const + { + return vec_[(head_ + index) % capacity_]; + } + + void Erase(size_t index) + { + while (index < cnt_ - 1) + { + vec_[(head_ + index) % capacity_] = + vec_[(head_ + index + 1) % capacity_]; + index++; + } + cnt_--; + if (cnt_ == 0) + { + head_ = 0; + } + } + +private: + std::unique_ptr vec_; + size_t head_; + size_t cnt_; + size_t capacity_; +}; +#endif // CIRCULAR_QUEUE_H \ No newline at end of file diff --git a/sql/glog_error_logging.cc b/sql/glog_error_logging.cc index e44a718c509..12da20ce85a 100644 --- a/sql/glog_error_logging.cc +++ b/sql/glog_error_logging.cc @@ -1,6 +1,6 @@ #if WITH_GLOG -#include +// #include -DEFINE_string(log_file_name_prefix, "mysqld.log", - "Sets the prefix for log files. Default is 'mysqld.log'"); +// DEFINE_string(log_file_name_prefix, "mysqld.log", +// "Sets the prefix for log files. Default is 'mysqld.log'"); #endif diff --git a/sql/handler.cc b/sql/handler.cc index c5a824d48b8..ec7e257ca2c 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -67,6 +67,7 @@ #ifdef WITH_ELOQ_STORAGE_ENGINE #include "eloq_db_dl.h" +static LEX_CSTRING ELOQ_ENGINE_NAME= {STRING_WITH_LEN("ELOQ")}; #endif #include "mysql_metrics.h" diff --git a/sql/main.cc b/sql/main.cc index 2d919943249..84d3dd75658 100644 --- a/sql/main.cc +++ b/sql/main.cc @@ -19,6 +19,10 @@ Calls mysqld_main() entry point exported by sql library. On Windows, might do some service handling. */ +#include + + + #ifdef WITH_GLOG #include "glog_error_logging.h" #endif /* WITH_GLOG */ @@ -32,6 +36,24 @@ extern int mysqld_main(int argc, char **argv); int main(int argc, char **argv) { + // Initialize gflags - will error on unknown flags + gflags::SetUsageMessage( + "mysqld [gflags options]\n\n" + "MySQL system variables must be in config file specified by --eloqsql_config.\n" + "Data substrate flags can be passed on command line.\n" + "Use --help to see all available flags."); + +#ifdef MYSQLD_LIBRARY_MODE + // When compiled as library mode, only accept flags that are defined in the data substrate + gflags::ParseCommandLineFlags(&argc, &argv, true); +#else + // When compiled as standalone mode, allow unrecognized flags to be passed through to MySQL + gflags::AllowCommandLineReparsing(); + // Allow all MySQL-specific flags to pass through without error + gflags::SetCommandLineOption("undefok", "*"); + gflags::ParseCommandLineNonHelpFlags(&argc, &argv, false); +#endif + #ifdef WITH_GLOG InitGoogleLogging(argv); #endif /* WITH_GLOG */ diff --git a/sql/mdl.h b/sql/mdl.h index c416307739f..a15616ff392 100644 --- a/sql/mdl.h +++ b/sql/mdl.h @@ -23,7 +23,7 @@ #include #include -#include "../storage/eloq/tx_service/include/circular_queue.h" +#include "circular_queue.h" class THD; diff --git a/sql/mysql_metrics.h b/sql/mysql_metrics.h index 801be1ccd22..c0f98a25965 100644 --- a/sql/mysql_metrics.h +++ b/sql/mysql_metrics.h @@ -1,7 +1,7 @@ #pragma once #include -#include "../storage/eloq/eloq_metrics/include/metrics.h" -#include "../storage/eloq/eloq_metrics/include/meter.h" +#include "metrics.h" +#include "meter.h" namespace metrics { diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 11b58b2352a..2a3a07b77a1 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -16,6 +16,7 @@ #include "sql_plugin.h" // Includes mariadb.h #include "sql_priv.h" +#include #include "unireg.h" #include #ifndef _WIN32 @@ -106,12 +107,15 @@ #include "semisync_master.h" #include "semisync_slave.h" + #include "transaction.h" #ifdef HAVE_SYS_PRCTL_H #include #endif +#include "glog/logging.h" + #include #include #include @@ -638,6 +642,12 @@ struct system_variables global_system_variables; */ const char *current_dbug_option=""; +// Declare gflags +DEFINE_string(eloqsql_config, "", + "Path to MySQL configuration file. All MySQL options must be in this config file."); +DECLARE_bool(bootstrap); + + struct system_variables max_system_variables; struct system_status_var global_status_var; @@ -4032,6 +4042,8 @@ static int init_common_variables() SQLCOM_END + 10); #endif + // Process config file options (loaded by load_defaults_or_exit) + // Note: argc/argv from load_defaults only contains config file values if (get_options(&remaining_argc, &remaining_argv)) exit(1); if (IS_SYSVAR_AUTOSIZE(&server_version_ptr)) @@ -5251,7 +5263,7 @@ static int init_server_components() We need to eat any 'loose' arguments first before we conclude that there are unprocessed options. */ - my_getopt_skip_unknown= 0; + my_getopt_skip_unknown= TRUE; #ifdef WITH_WSREP if (wsrep_recovery) my_getopt_skip_unknown= TRUE; @@ -5269,12 +5281,12 @@ static int init_server_components() if (!wsrep_recovery) { #endif - if (remaining_argc > 1) - { - fprintf(stderr, "%s: Too many arguments (first extra is '%s').\n", - my_progname, remaining_argv[1]); - unireg_abort(1); - } + // if (remaining_argc > 1) + // { + // fprintf(stderr, "%s: Too many arguments (first extra is '%s').\n", + // my_progname, remaining_argv[1]); + // unireg_abort(1); + // } #ifdef WITH_WSREP } #endif @@ -5513,6 +5525,10 @@ static void test_lc_time_sz() } #endif//DBUG_OFF +void shutdown_mysqld() +{ + break_connect_loop(); +} int mysqld_main(int argc, char **argv) { @@ -5545,11 +5561,56 @@ int mysqld_main(int argc, char **argv) orig_argc= argc; orig_argv= argv; my_defaults_mark_files= TRUE; - load_defaults_or_exit(MYSQL_CONFIG_NAME, load_default_groups, &argc, &argv); - defaults_argc= argc; - defaults_argv= argv; - remaining_argc= argc; - remaining_argv= argv; + + // Build argv for load_defaults + // Copy all original arguments first, then append --eloqsql_config and --bootstrap if needed + int additional_args = 0; + if (!FLAGS_eloqsql_config.empty()) + additional_args++; + if (FLAGS_bootstrap) + additional_args++; + + char **load_default_argv = (char**)malloc((argc + additional_args + 1) * sizeof(char*)); + if (!load_default_argv) + { + fprintf(stderr, "Failed to allocate memory for load_default_argv\n"); + return 1; + } + + // Copy all original arguments + int load_default_argc = argc; + for (int i = 0; i < argc; i++) + { + load_default_argv[i] = argv[i]; + } + + // Append --defaults-file if --eloqsql_config specified + std::string defaults_file_arg; + if (!FLAGS_eloqsql_config.empty()) + { + defaults_file_arg = std::string("--defaults-file=") + FLAGS_eloqsql_config; + load_default_argv[load_default_argc] = const_cast(defaults_file_arg.c_str()); + load_default_argc++; + } + + // Append --bootstrap if FLAGS_bootstrap is true + if (FLAGS_bootstrap) + { + load_default_argv[load_default_argc] = const_cast("--bootstrap"); + load_default_argc++; + } + + // Null-terminate the array + load_default_argv[load_default_argc] = nullptr; + + char **load_default_argv_ptr = load_default_argv; + load_defaults_or_exit(MYSQL_CONFIG_NAME, load_default_groups, + &load_default_argc, &load_default_argv_ptr); + + defaults_argc= load_default_argc; + defaults_argv= load_default_argv_ptr; + remaining_argc= load_default_argc; + remaining_argv= load_default_argv_ptr; /* Must be initialized early for comparison of options name */ system_charset_info= &my_charset_utf8mb3_general_ci; @@ -5574,6 +5635,7 @@ int mysqld_main(int argc, char **argv) #endif /* WITH_PERFSCHEMA_STORAGE_ENGINE */ my_timer_init(&sys_timer_info); + // Process early options from config file int ho_error __attribute__((unused))= handle_early_options(); /* fix tdc_size */ @@ -5940,6 +6002,9 @@ int mysqld_main(int argc, char **argv) close_connections(); ha_pre_shutdown(); clean_up(1); + + // Free the temporary argv array we allocated + free(load_default_argv); sd_notify(0, "STATUS=MariaDB server is down"); /* (void) pthread_attr_destroy(&connection_attrib); */ diff --git a/sql/sql_class.h b/sql/sql_class.h index 754ec86ae30..672e2c9689d 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -51,7 +51,6 @@ #include "backup.h" #include "xa.h" #include "ddl_log.h" /* DDL_LOG_STATE */ -#include "../storage/eloq/eloq_metrics/include/metrics.h" extern "C" void set_thd_stage_info(void *thd, @@ -3083,7 +3082,7 @@ class THD: public THD_count, /* this must be first */ } } start_time; - metrics::TimePoint tx_start_; + std::chrono::steady_clock::time_point tx_start_; bool tx_registered_{false}; /* Tables changed in transaction (that must be invalidated in query cache). diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index 262f49d9d5d..4e55b793cb3 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -103,7 +103,7 @@ #define FLAGSTR(V,F) ((V)&(F)?#F" ":"") -#include "eloq_db_dl.h" +#include "../storage/eloq/eloq_db_dl.h" #ifdef WITH_ARIA_STORAGE_ENGINE #include "../storage/maria/ha_maria.h" diff --git a/sql/sql_select.cc b/sql/sql_select.cc index 727f0b5db39..54a5058812f 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -25,7 +25,7 @@ @{ */ -#include "eloq_errors.h" +#include "../storage/eloq/eloq_errors.h" #ifdef USE_PRAGMA_IMPLEMENTATION #pragma implementation // gcc: Class implementation #endif diff --git a/sql/threadpool_generic.h b/sql/threadpool_generic.h index de62974aa9f..5502540dbb7 100644 --- a/sql/threadpool_generic.h +++ b/sql/threadpool_generic.h @@ -29,7 +29,7 @@ #endif #ifdef COROUTINE_ENABLED -#include "../storage/eloq/tx_service/include/concurrent_queue_wsize.h" +#include "concurrent_queue_wsize.h" #include #include #include diff --git a/storage/eloq/CMakeLists.txt b/storage/eloq/CMakeLists.txt index eea850f912b..a0a8f4fe343 100644 --- a/storage/eloq/CMakeLists.txt +++ b/storage/eloq/CMakeLists.txt @@ -21,165 +21,24 @@ message(NOTICE "WITH_DATA_STORE" : ${WITH_DATA_STORE}) set(METRICS_LIB "eloq-metrics" CACHE STRING "metrics library name.") -if(WITH_DATA_STORE STREQUAL "DYNAMODB") - set(KV_STORAGE_VAL 1 CACHE STRING "dynamodb" FORCE) - add_compile_definitions(DATA_STORE_TYPE_DYNAMODB) - find_package(AWSSDK REQUIRED COMPONENTS dynamodb) -elseif(WITH_DATA_STORE STREQUAL "BIGTABLE") - set(KV_STORAGE_VAL 2 CACHE STRING "big table" FORCE) - add_compile_definitions(DATA_STORE_TYPE_BIGTABLE) - find_package(google_cloud_cpp_bigtable REQUIRED) -elseif(WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_S3") - set(KV_STORAGE_VAL 3 CACHE STRING "eloq_ds" FORCE) - add_compile_definitions(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) -elseif(WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB") - set(KV_STORAGE_VAL 3 CACHE STRING "eloq_ds" FORCE) - add_compile_definitions(DATA_STORE_TYPE_ELOQDSS_ROCKSDB) -elseif(WITH_DATA_STORE STREQUAL "ELOQDSS_ELOQSTORE") - set(KV_STORAGE_VAL 3 CACHE STRING "eloq_ds" FORCE) - add_compile_definitions(DATA_STORE_TYPE_ELOQDSS_ELOQSTORE) - option(WITH_TXSERVICE "Whether compile eloqstore with txservice" ON) - set(ELOQSTORE_PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/store_handler/eloq_data_store_service CACHE PATH "EloqStore parent directory") - INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/store_handler/eloq_data_store_service/build_eloq_store.cmake) -else() - message(FATAL_ERROR "Unset WITH_DATA_STORE") -endif() - -if (WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB") - find_path(ROCKSDB_INCLUDE_PATH NAMES rocksdb/db.h) - if (NOT ROCKSDB_INCLUDE_PATH) - message(FATAL_ERROR "Fail to find RocksDB include path") - endif() - message(STATUS "ROCKSDB_INCLUDE_PATH: ${ROCKSDB_INCLUDE_PATH}") - include_directories(${ROCKSDB_INCLUDE_PATH}) - - find_library(ROCKSDB_LIB NAMES rocksdb) - if (NOT ROCKSDB_LIB) - message(FATAL_ERROR "Fail to find RocksDB lib path") - endif() - message(STATUS "ROCKSDB_LIB: ${ROCKSDB_LIB}") - set(ROCKSDB_LIBRARIES ${ROCKSDB_LIBRARIES} ${ROCKSDB_LIB}) -endif() - -if ((WITH_DATA_STORE STREQUAL "ROCKSDB_CLOUD_S3") OR (WITH_DATA_STORE STREQUAL "ROCKSDB_CLOUD_GCS") - OR (WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_S3") OR (WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_GCS")) - if ((WITH_DATA_STORE STREQUAL "ROCKSDB_CLOUD_S3") OR (WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_S3")) - find_path(AWS_CORE_INCLUDE_PATH aws/core/Aws.h) - if((NOT AWS_CORE_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find aws/core include path") - endif() - message(STATUS "aws/core include path: ${AWS_CORE_INCLUDE_PATH}") - - find_library(AWS_CORE_LIB aws-cpp-sdk-core) - if((NOT AWS_CORE_LIB )) - message(FATAL_ERROR "Fail to find aws-cpp-sdk-core lib") - endif() - message(STATUS "aws-cpp-sdk-core library: ${AWS_CORE_LIB}") - - find_path(AWS_KINESIS_INCLUDE_PATH aws/kinesis/KinesisClient.h) - if((NOT AWS_KINESIS_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find aws/kinesis include path") - endif() - message(STATUS "aws/kinesis include path: ${AWS_KINESIS_INCLUDE_PATH}") - - find_library(AWS_KINESIS_LIB aws-cpp-sdk-kinesis) - if((NOT AWS_KINESIS_LIB)) - message(FATAL_ERROR "Fail to find aws-cpp-sdk-kinesis lib") - endif() - message(STATUS "aws-cpp-sdk-kinesis library: ${AWS_KINESIS_LIB}") - - find_path(AWS_KINESIS_INCLUDE_PATH aws/kinesis/KinesisClient.h) - if((NOT AWS_KINESIS_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find aws/kinesis include path") - endif() - message(STATUS "aws/kinesis include path: ${AWS_KINESIS_INCLUDE_PATH}") - - find_library(AWS_KINESIS_LIB aws-cpp-sdk-kinesis) - if((NOT AWS_KINESIS_LIB)) - message(FATAL_ERROR "Fail to find aws-cpp-sdk-kinesis lib") - endif() - message(STATUS "aws-cpp-sdk-kinesis library: ${AWS_KINESIS_LIB}") - - find_path(AWS_S3_INCLUDE_PATH aws/s3/S3Client.h) - if((NOT AWS_S3_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find aws/s3 include path") - endif() - message(STATUS "aws/s3 include path: ${AWS_S3_INCLUDE_PATH}") - - find_library(AWS_S3_LIB aws-cpp-sdk-s3) - if((NOT AWS_S3_LIB )) - message(FATAL_ERROR "Fail to find aws-cpp-sdk-s3 lib") - endif() - message(STATUS "aws-cpp-sdk-s3 library: ${AWS_S3_LIB}") - - set(ROCKSDB_INCLUDE_PATH ${ROCKSDB_INCLUDE_PATH} ${AWS_CORE_INCLUDE_PATH}) - set(ROCKSDB_INCLUDE_PATH ${ROCKSDB_INCLUDE_PATH} ${AWS_KINESIS_INCLUDE_PATH}) - set(ROCKSDB_INCLUDE_PATH ${ROCKSDB_INCLUDE_PATH} ${AWS_S3_INCLUDE_PATH}) - - set(ROCKSDB_LIBRARIES ${ROCKSDB_LIBRARIES} ${AWS_CORE_LIB}) - set(ROCKSDB_LIBRARIES ${ROCKSDB_LIBRARIES} ${AWS_KINESIS_LIB}) - set(ROCKSDB_LIBRARIES ${ROCKSDB_LIBRARIES} ${AWS_S3_LIB}) - - find_library(ROCKSDB_CLOUD_LIB NAMES rocksdb-cloud-aws) - elseif ((WITH_DATA_STORE STREQUAL "ROCKSDB_CLOUD_GCS") OR (WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_GCS")) - find_path(GCP_CS_INCLUDE_PATH google/cloud/storage/client.h) - if((NOT GCP_CS_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find google/cloud/storage include path") - endif() - message(STATUS "google/cloud/storage include path: ${GCP_CS_INCLUDE_PATH}") - - find_library(GCP_COMMON_LIB google_cloud_cpp_common) - if((NOT GCP_COMMON_LIB)) - message(FATAL_ERROR "Fail to find google_cloud_cpp_common lib") - endif() - message(STATUS "google_cloud_cpp_common library: ${GCP_COMMON_LIB}") - - find_library(GCP_CS_LIB google_cloud_cpp_storage) - if((NOT GCP_CS_LIB)) - message(FATAL_ERROR "Fail to find google_cloud_cpp_storage lib") - endif() - message(STATUS "google_cloud_cpp_storage library: ${GCP_CS_LIB}") - - set(ROCKSDB_LIBRARIES ${ROCKSDB_LIBRARIES} ${GCP_COMMON_LIB}) - set(ROCKSDB_LIBRARIES ${ROCKSDB_LIBRARIES} ${GCP_CS_LIB}) - - find_library(ROCKSDB_CLOUD_LIB NAMES rocksdb-cloud-gcp) - endif () - - # Common RocksDB Cloud setup (outside the S3/GCS specific blocks) - find_path(ROCKSDB_CLOUD_INCLUDE_PATH NAMES rocksdb/db.h PATH_SUFFIXES "rocksdb_cloud_header") - if (NOT ROCKSDB_CLOUD_INCLUDE_PATH) - message(FATAL_ERROR "Fail to find RocksDB Cloud include path") - endif () - message(STATUS "ROCKSDB_CLOUD_INCLUDE_PATH: ${ROCKSDB_CLOUD_INCLUDE_PATH}") - set(ROCKSDB_INCLUDE_PATH ${ROCKSDB_INCLUDE_PATH} ${ROCKSDB_CLOUD_INCLUDE_PATH}) - include_directories(${ROCKSDB_INCLUDE_PATH}) - - if (NOT ROCKSDB_CLOUD_LIB) - message(FATAL_ERROR "Fail to find RocksDB Cloud lib path") - endif () - message(STATUS "ROCKSDB_CLOUD_LIB: ${ROCKSDB_CLOUD_LIB}") - set(ROCKSDB_LIBRARIES ${ROCKSDB_LIBRARIES} ${ROCKSDB_CLOUD_LIB}) -endif() - -if ((WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_S3") OR (WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_GCS") OR (WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB") OR (WITH_DATA_STORE STREQUAL "ELOQDSS_ELOQSTORE")) - # compile proto file - set(DS_PROTO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/store_handler/eloq_data_store_service) - message(NOTICE "data store service proto dir: ${DS_PROTO_DIR}") - set(PROTO_SRC ${DS_PROTO_DIR}) - set(PROTO_NAME ds_request) - execute_process( - COMMAND protoc ./${PROTO_NAME}.proto --cpp_out=./ - WORKING_DIRECTORY ${PROTO_SRC} - ) -endif() - - option(WITH_LOG_SERVICE "Compile with built-in log service." ON) if(WITH_LOG_SERVICE) message("WITH_LOG_SERVICE: " ${WITH_LOG_SERVICE}) add_compile_definitions(WITH_LOG_SERVICE) +# Add compile flags for LOG STATE TYPE +if(WITH_LOG_STATE STREQUAL "MEMORY") + add_compile_definitions(LOG_STATE_TYPE_MEM) +elseif(WITH_LOG_STATE STREQUAL "ROCKSDB") + add_compile_definitions(LOG_STATE_TYPE_RKDB) + add_compile_definitions(LOG_STATE_TYPE_RKDB_ALL) +elseif(WITH_LOG_STATE STREQUAL "ROCKSDB_CLOUD_S3") + add_compile_definitions(LOG_STATE_TYPE_RKDB_S3) +elseif(WITH_LOG_STATE STREQUAL "ROCKSDB_CLOUD_GCS") + add_compile_definitions(LOG_STATE_TYPE_RKDB_GCS) +else() + message(FATAL_ERROR "Unknown WITH_LOG_STATE: ${WITH_LOG_STATE}") +endif() endif() option(OPEN_LOG_SERVICE "Compile with open log service." ON) @@ -187,41 +46,27 @@ message("OPEN_LOG_SERVICE: " ${OPEN_LOG_SERVICE}) if (OPEN_LOG_SERVICE) add_compile_definitions(OPEN_LOG_SERVICE=1) endif() - set(STATISTICS ON CACHE BOOL "Turn on STATISTICS") -INCLUDE(build_tx_service.cmake) +if(ELOQ_MODULE_ENABLED) + add_compile_definitions(ELOQ_MODULE_ENABLED) +endif() -if(WITH_LOG_SERVICE) - if (OPEN_LOG_SERVICE) - INCLUDE(build_log_service.cmake) - else() - INCLUDE(build_eloq_log_service.cmake) - endif() +if (EXT_TX_PROC_ENABLED) + add_compile_definitions(EXT_TX_PROC_ENABLED) endif() -INCLUDE(build_eloq_metrics.cmake) +if(SMALL_RANGE) + add_compile_definitions(SMALL_RANGE) +endif() + +if(STATISTICS) + add_compile_definitions(STATISTICS) +endif() find_package(MIMALLOC REQUIRED) include_directories(${MIMALLOC_INCLUDE_DIR}) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/tx_service/include) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/tx_service/include/cc) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/tx_service/include/remote) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/tx_service/include/fault) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/tx_service/include/store) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/tx_service/tx-log-protos) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/eloq_metrics/include) - -if(WITH_LOG_SERVICE) - if (OPEN_LOG_SERVICE) - include_directories(${CMAKE_CURRENT_SOURCE_DIR}/log_service/include) - else () - include_directories(${CMAKE_CURRENT_SOURCE_DIR}/eloq_log_service/include) - endif () -endif() - option(SMALL_RANGE "Whether enable small range" OFF) message(NOTICE "SMALL_RANGE : ${SMALL_RANGE}") @@ -233,11 +78,11 @@ SET(MYELOQ_SOURCES eloq_i_s.cc eloq_errors.h eloq_errors.cpp - eloq_key.h - eloq_schema.h - eloq_schema.cpp - eloq_catalog_factory.h - eloq_catalog_factory.cpp + eloqsql_key.h + eloqsql_schema.h + eloqsql_schema.cpp + eloqsql_catalog_factory.h + eloqsql_catalog_factory.cpp eloq_db.cpp eloq_buff.h eloq_key_def.h @@ -249,115 +94,44 @@ SET(MYELOQ_SOURCES slice.cc # eloq_tests.hpp - store_handler/kv_store.h ) +# Add compile definitions based on options if(WITH_DATA_STORE STREQUAL "DYNAMODB") - SET(MYELOQ_SOURCES ${MYELOQ_SOURCES} - store_handler/dynamo_handler.h - store_handler/dynamo_handler.cpp - store_handler/dynamo_scanner.h - store_handler/dynamo_scanner.cpp) - SET(MYELOQ_LIBRARY txservice ${AWSSDK_LINK_LIBRARIES}) + set(KV_STORAGE_VAL 1 CACHE STRING "dynamodb" FORCE) + add_compile_definitions(DATA_STORE_TYPE_DYNAMODB) + find_package(AWSSDK REQUIRED COMPONENTS dynamodb) elseif(WITH_DATA_STORE STREQUAL "BIGTABLE") - SET(MYELOQ_SOURCES - ${MYELOQ_SOURCES} - store_handler/bigtable_handler.h - store_handler/bigtable_handler.cpp - store_handler/bigtable_scanner.h - store_handler/bigtable_scanner.cpp) - SET(MYELOQ_LIBRARY txservice google-cloud-cpp::bigtable) -elseif(WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_S3" OR WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB") - SET(MYELOQ_SOURCES - ${MYELOQ_SOURCES} - store_handler/data_store_service_client.h - store_handler/data_store_service_client.cpp - store_handler/data_store_service_client_closure.h - store_handler/data_store_service_client_closure.cpp - store_handler/data_store_service_scanner.h - store_handler/data_store_service_scanner.cpp - store_handler/store_util.h - store_handler/store_util.cpp - - store_handler/eloq_data_store_service/ini.h - store_handler/eloq_data_store_service/ini.c - store_handler/eloq_data_store_service/INIReader.h - store_handler/eloq_data_store_service/INIReader.cpp - store_handler/eloq_data_store_service/thread_worker_pool.h - store_handler/eloq_data_store_service/thread_worker_pool.cpp - store_handler/eloq_data_store_service/data_store_service.h - store_handler/eloq_data_store_service/data_store_service.cpp - store_handler/eloq_data_store_service/data_store_fault_inject.h - store_handler/eloq_data_store_service/data_store_fault_inject.cpp - store_handler/eloq_data_store_service/data_store_service_config.h - store_handler/eloq_data_store_service/data_store_service_config.cpp - store_handler/eloq_data_store_service/ds_request.pb.h - store_handler/eloq_data_store_service/ds_request.pb.cc - store_handler/eloq_data_store_service/rocksdb_config.h - store_handler/eloq_data_store_service/rocksdb_config.cpp - store_handler/eloq_data_store_service/rocksdb_data_store_common.h - store_handler/eloq_data_store_service/rocksdb_data_store_common.cpp) - - if (WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_S3") - SET(MYELOQ_SOURCES - ${MYELOQ_SOURCES} - store_handler/eloq_data_store_service/rocksdb_cloud_data_store.h - store_handler/eloq_data_store_service/rocksdb_cloud_data_store.cpp - store_handler/eloq_data_store_service/purger_event_listener.cpp - store_handler/eloq_data_store_service/purger_sliding_window.cpp - store_handler/eloq_data_store_service/s3_file_downloader.cpp - ) - elseif (WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB") - SET(MYELOQ_SOURCES - ${MYELOQ_SOURCES} - store_handler/eloq_data_store_service/rocksdb_data_store.h - store_handler/eloq_data_store_service/rocksdb_data_store.cpp - ) - endif() - SET(MYELOQ_LIBRARY ${MYELOQ_LIBRARY} txservice ${ROCKSDB_LIBRARIES}) - - include_directories(${CMAKE_CURRENT_SOURCE_DIR}/store_handler/eloq_data_store_service) + set(KV_STORAGE_VAL 2 CACHE STRING "big table" FORCE) + add_compile_definitions(DATA_STORE_TYPE_BIGTABLE) + find_package(google_cloud_cpp_bigtable REQUIRED) +elseif(WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB_CLOUD_S3") + set(KV_STORAGE_VAL 3 CACHE STRING "eloq_ds" FORCE) + add_compile_definitions(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) +elseif(WITH_DATA_STORE STREQUAL "ELOQDSS_ROCKSDB") + set(KV_STORAGE_VAL 3 CACHE STRING "eloq_ds" FORCE) + add_compile_definitions(DATA_STORE_TYPE_ELOQDSS_ROCKSDB) elseif(WITH_DATA_STORE STREQUAL "ELOQDSS_ELOQSTORE") - SET(MYELOQ_SOURCES - ${MYELOQ_SOURCES} - store_handler/data_store_service_client.cpp - store_handler/data_store_service_client_closure.cpp - store_handler/data_store_service_scanner.cpp - store_handler/store_util.cpp - store_handler/eloq_data_store_service/thread_worker_pool.cpp - store_handler/eloq_data_store_service/data_store_service.cpp - store_handler/eloq_data_store_service/data_store_fault_inject.cpp - store_handler/eloq_data_store_service/data_store_service_config.cpp - store_handler/eloq_data_store_service/eloq_store_data_store.cpp - store_handler/eloq_data_store_service/ds_request.pb.cc - store_handler/eloq_data_store_service/eloq_store_config.cpp - ) - SET(MYELOQ_LIBRARY ${MYELOQ_LIBRARY} txservice eloqstore) - - include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/store_handler - ${CMAKE_CURRENT_SOURCE_DIR}/store_handler/eloq_data_store_service) + set(KV_STORAGE_VAL 3 CACHE STRING "eloq_ds" FORCE) + add_compile_definitions(DATA_STORE_TYPE_ELOQDSS_ELOQSTORE) + option(WITH_TXSERVICE "Whether compile eloqstore with txservice" ON) + set(ELOQSTORE_PARENT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/store_handler/eloq_data_store_service CACHE PATH "EloqStore parent directory") + INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/store_handler/eloq_data_store_service/build_eloq_store.cmake) else() - message(FATAL_ERROR "Unset WITH_DATA_STORE") -endif() - -if(WITH_LOG_SERVICE) - SET(MYELOQ_LIBRARY ${MYELOQ_LIBRARY} logservice) + message(FATAL_ERROR "Unset WITH_DATA_STORE") endif() - -# add_compile_definitions(WITH_DATA_STORE=${KV_STORAGE_VAL}) +add_compile_definitions(WITH_DATA_STORE=${KV_STORAGE_VAL}) if(USE_ONE_DATA_STORE_SHARD_ENABLED) # add preprocessor defition USE_ONE_DATA_STORE_SHARD add_compile_definitions(USE_ONE_DATA_STORE_SHARD) endif() -SET(MYELOQ_SOURCES ${MYELOQ_SOURCES} metrics_registry_impl.h metrics_registry_impl.cpp) -SET(MYELOQ_LIBRARY ${MYELOQ_LIBRARY} ${METRICS_LIB}) MYSQL_ADD_PLUGIN(eloq ${MYELOQ_SOURCES} STORAGE_ENGINE - MODULE_ONLY + MANDATORY + STATIC_ONLY MODULE_OUTPUT_NAME ha_eloq - LINK_LIBRARIES ${MYELOQ_LIBRARY} + LINK_LIBRARIES data_substrate ${MYELOQ_LIBRARY} COMPONENT eloq-engine) diff --git a/storage/eloq/build_eloq_log_service.cmake b/storage/eloq/build_eloq_log_service.cmake deleted file mode 100644 index 9aa66165f5e..00000000000 --- a/storage/eloq/build_eloq_log_service.cmake +++ /dev/null @@ -1,281 +0,0 @@ -SET (LOG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/eloq_log_service) -SET(TX_LOG_PROTOS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tx_service/tx-log-protos) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error") - -option(BRPC_WITH_GLOG "With glog" ON) - -set(WITH_LOG_STATE "ROCKSDB" CACHE STRING "The log state implementation") -set_property(CACHE WITH_LOG_STATE PROPERTY STRINGS "MEMORY" "ROCKSDB" "ROCKSDB_CLOUD_S3" "ROCKSDB_CLOUD_GCS") -message(NOTICE "WITH_LOG_STATE: ${WITH_LOG_STATE}") - -# Add compile flags for LOG STATE TYPE -if(WITH_LOG_STATE STREQUAL "MEMORY") - add_compile_definitions(LOG_STATE_TYPE_MEM) -elseif(WITH_LOG_STATE STREQUAL "ROCKSDB") - add_compile_definitions(LOG_STATE_TYPE_RKDB) -elseif(WITH_LOG_STATE STREQUAL "ROCKSDB_CLOUD_S3") - add_compile_definitions(LOG_STATE_TYPE_RKDB_S3) -elseif(WITH_LOG_STATE STREQUAL "ROCKSDB_CLOUD_GCS") - add_compile_definitions(LOG_STATE_TYPE_RKDB_GCS) -else() - message(FATAL_ERROR "Unknown WITH_LOG_STATE: ${WITH_LOG_STATE}") -endif() - - -find_path(BRPC_INCLUDE_PATH NAMES brpc/stream.h) -find_library(BRPC_LIB NAMES brpc) -if ((NOT BRPC_INCLUDE_PATH) OR (NOT BRPC_LIB)) - message(FATAL_ERROR "Fail to find brpc") -endif() -include_directories(${BRPC_INCLUDE_PATH}) - -find_path(BRAFT_INCLUDE_PATH NAMES braft/raft.h) -find_library(BRAFT_LIB NAMES braft) -if ((NOT BRAFT_INCLUDE_PATH) OR (NOT BRAFT_LIB)) - message (FATAL_ERROR "Fail to find braft") -endif() -include_directories(${BRAFT_INCLUDE_PATH}) - -find_path(GFLAGS_INCLUDE_PATH gflags/gflags.h) -find_library(GFLAGS_LIBRARY NAMES gflags libgflags) -if((NOT GFLAGS_INCLUDE_PATH) OR (NOT GFLAGS_LIBRARY)) - message(FATAL_ERROR "Fail to find gflags") -endif() -include_directories(${GFLAGS_INCLUDE_PATH}) - -if(BRPC_WITH_GLOG) - message(NOTICE "log service brpc with glog") - find_path(GLOG_INCLUDE_PATH NAMES glog/logging.h) - find_library(GLOG_LIB NAMES glog VERSION ">=0.6.0" REQUIRED) - if((NOT GLOG_INCLUDE_PATH) OR (NOT GLOG_LIB)) - message(FATAL_ERROR "Fail to find glog") - endif() - include_directories(${GLOG_INCLUDE_PATH}) - set(LOG_LIB ${LOG_LIB} ${GLOG_LIB}) -endif() - -execute_process( - COMMAND bash -c "grep \"namespace [_A-Za-z0-9]\\+ {\" ${GFLAGS_INCLUDE_PATH}/gflags/gflags_declare.h | head -1 | awk '{print $2}' | tr -d '\n'" - OUTPUT_VARIABLE GFLAGS_NS -) -if(${GFLAGS_NS} STREQUAL "GFLAGS_NAMESPACE") - execute_process( - COMMAND bash -c "grep \"#define GFLAGS_NAMESPACE [_A-Za-z0-9]\\+\" ${GFLAGS_INCLUDE_PATH}/gflags/gflags_declare.h | head -1 | awk '{print $3}' | tr -d '\n'" - OUTPUT_VARIABLE GFLAGS_NS - ) -else() - add_compile_definitions(OVERRIDE_GFLAGS_NAMESPACE) -endif() - -#find_path(GPERFTOOLS_INCLUDE_DIR NAMES gperftools/heap-profiler.h) -#find_library(GPERFTOOLS_LIBRARIES NAMES tcmalloc_and_profiler) -#if (GPERFTOOLS_INCLUDE_DIR AND GPERFTOOLS_LIBRARIES) -# set(CMAKE_CXX_FLAGS "-DBRPC_ENABLE_CPU_PROFILER") -# include_directories(${GPERFTOOLS_INCLUDE_DIR}) -#else () -# set (GPERFTOOLS_LIBRARIES "") -#endif () - -#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CPP_FLAGS} -DGFLAGS_NS=${GFLAGS_NS} -DNDEBUG -O2 -D__const__= -pipe -W -Wall -Wno-unused-parameter -fPIC -fno-omit-frame-pointer") -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - # require at least gcc 4.8 - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8) - message(FATAL_ERROR "GCC is too old, please install a newer version supporting C++11") - endif() -elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - # require at least clang 3.3 - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.3) - message(FATAL_ERROR "Clang is too old, please install a newer version supporting C++11") - endif() -else() - message(WARNING "You are using an unsupported compiler! Compilation has only been tested with Clang and GCC.") -endif() - - -#if(CMAKE_VERSION VERSION_LESS "3.1.3") -# if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") -# endif() -# if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") -# endif() -#else() -# set(CMAKE_CXX_STANDARD 17) -# set(CMAKE_CXX_STANDARD_REQUIRED ON) -#endif() - -find_path(LEVELDB_INCLUDE_PATH NAMES leveldb/db.h) -find_library(LEVELDB_LIB NAMES leveldb) -if ((NOT LEVELDB_INCLUDE_PATH) OR (NOT LEVELDB_LIB)) - message(FATAL_ERROR "Fail to find leveldb") -endif() -include_directories(${LEVELDB_INCLUDE_PATH}) - -set(LOG_SHIPPING_THREADS_NUM 1) - -# Add RocksDB include and libs for LOG_STATE -if (WITH_LOG_STATE MATCHES "ROCKSDB|ROCKSDB_CLOUD_S3|ROCKSDB_CLOUD_GCS") - if (WITH_LOG_STATE MATCHES "ROCKSDB_CLOUD_S3|ROCKSDB_CLOUD_GCS") - if (WITH_LOG_STATE STREQUAL "ROCKSDB_CLOUD_S3") - find_path(AWS_CORE_INCLUDE_PATH aws/core/Aws.h) - if((NOT AWS_CORE_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find aws/core include path") - endif() - message(STATUS "aws/core include path: ${AWS_CORE_INCLUDE_PATH}") - - find_library(AWS_CORE_LIB aws-cpp-sdk-core) - if((NOT AWS_CORE_LIB )) - message(FATAL_ERROR "Fail to find aws-cpp-sdk-core lib") - endif() - message(STATUS "aws-cpp-sdk-core library: ${AWS_CORE_LIB}") - - find_path(AWS_KINESIS_INCLUDE_PATH aws/kinesis/KinesisClient.h) - if((NOT AWS_KINESIS_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find aws/kinesis include path") - endif() - message(STATUS "aws/kinesis include path: ${AWS_KINESIS_INCLUDE_PATH}") - - find_library(AWS_KINESIS_LIB aws-cpp-sdk-kinesis) - if((NOT AWS_KINESIS_LIB)) - message(FATAL_ERROR "Fail to find aws-cpp-sdk-kinesis lib") - endif() - message(STATUS "aws-cpp-sdk-kinesis library: ${AWS_KINESIS_LIB}") - - - find_path(AWS_KINESIS_INCLUDE_PATH aws/kinesis/KinesisClient.h) - if((NOT AWS_KINESIS_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find aws/kinesis include path") - endif() - message(STATUS "aws/kinesis include path: ${AWS_KINESIS_INCLUDE_PATH}") - - find_library(AWS_KINESIS_LIB aws-cpp-sdk-kinesis) - if((NOT AWS_KINESIS_LIB)) - message(FATAL_ERROR "Fail to find aws-cpp-sdk-kinesis lib") - endif() - message(STATUS "aws-cpp-sdk-kinesis library: ${AWS_KINESIS_LIB}") - - find_path(AWS_S3_INCLUDE_PATH aws/s3/S3Client.h) - if((NOT AWS_S3_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find aws/s3 include path") - endif() - message(STATUS "aws/s3 include path: ${AWS_S3_INCLUDE_PATH}") - - find_library(AWS_S3_LIB aws-cpp-sdk-s3) - if((NOT AWS_S3_LIB )) - message(FATAL_ERROR "Fail to find aws-cpp-sdk-s3 lib") - endif() - message(STATUS "aws-cpp-sdk-s3 library: ${AWS_S3_LIB}") - - set(ROCKSDB_INCLUDE_PATH ${ROCKSDB_INCLUDE_PATH} ${AWS_CORE_INCLUDE_PATH}) - set(ROCKSDB_INCLUDE_PATH ${ROCKSDB_INCLUDE_PATH} ${AWS_KINESIS_INCLUDE_PATH}) - set(ROCKSDB_INCLUDE_PATH ${ROCKSDB_INCLUDE_PATH} ${AWS_S3_INCLUDE_PATH}) - - set(ROCKSDB_LIB ${ROCKSDB_LIB} ${AWS_CORE_LIB}) - set(ROCKSDB_LIB ${ROCKSDB_LIB} ${AWS_KINESIS_LIB}) - set(ROCKSDB_LIB ${ROCKSDB_LIB} ${AWS_S3_LIB}) - - find_library(ROCKSDB_CLOUD_LIB NAMES rocksdb-cloud-aws) - - add_compile_definitions(USE_AWS) - elseif (WITH_LOG_STATE STREQUAL "ROCKSDB_CLOUD_GCS") - find_path(GCP_CS_INCLUDE_PATH google/cloud/storage/client.h) - if((NOT GCP_CS_INCLUDE_PATH)) - message(FATAL_ERROR "Fail to find google/cloud/storage include path") - endif() - message(STATUS "google/cloud/storage include path: ${GCP_CS_INCLUDE_PATH}") - - find_library(GCP_COMMON_LIB google_cloud_cpp_common) - if((NOT GCP_COMMON_LIB)) - message(FATAL_ERROR "Fail to find google_cloud_cpp_common lib") - endif() - message(STATUS "google_cloud_cpp_common library: ${GCP_COMMON_LIB}") - - find_library(GCP_CS_LIB google_cloud_cpp_storage) - if((NOT GCP_CS_LIB)) - message(FATAL_ERROR "Fail to find google_cloud_cpp_storage lib") - endif() - message(STATUS "google_cloud_cpp_storage library: ${GCP_CS_LIB}") - - set(ROCKSDB_LIB ${ROCKSDB_LIB} ${GCP_COMMON_LIB}) - set(ROCKSDB_LIB ${ROCKSDB_LIB} ${GCP_CS_LIB}) - - find_library(ROCKSDB_CLOUD_LIB NAMES rocksdb-cloud-gcp) - - add_compile_definitions(USE_GCP) - endif () - - find_path(ROCKSDB_CLOUD_INCLUDE_PATH NAMES rocksdb/db.h PATH_SUFFIXES "rocksdb_cloud_header") - if (NOT ROCKSDB_CLOUD_INCLUDE_PATH) - message(FATAL_ERROR "Fail to find RocksDB Cloud include path") - endif () - message(STATUS "ROCKSDB_CLOUD_INCLUDE_PATH: ${ROCKSDB_CLOUD_INCLUDE_PATH}") - set(ROCKSDB_INCLUDE_PATH ${ROCKSDB_INCLUDE_PATH} ${ROCKSDB_CLOUD_INCLUDE_PATH}) - - if (NOT ROCKSDB_CLOUD_LIB) - message(FATAL_ERROR "Fail to find RocksDB Cloud lib path") - endif () - message(STATUS "ROCKSDB_CLOUD_LIB: ${ROCKSDB_CLOUD_LIB}") - set(ROCKSDB_LIB ${ROCKSDB_LIB} ${ROCKSDB_CLOUD_LIB}) - else () - find_path(ROCKSDB_INCLUDE_PATH NAMES rocksdb/db.h) - if (NOT ROCKSDB_INCLUDE_PATH) - message(FATAL_ERROR "Fail to find RocksDB include path") - endif () - message(STATUS "ROCKSDB_INCLUDE_PATH: ${ROCKSDB_INCLUDE_PATH}") - - find_library(ROCKSDB_LIB NAMES rocksdb) - if (NOT ROCKSDB_LIB) - message(FATAL_ERROR "Fail to find RocksDB lib path") - endif () - message(STATUS "ROCKSDB_LIB: ${ROCKSDB_LIB}") - endif () - - include_directories(${ROCKSDB_INCLUDE_PATH}) - - set(LOG_LIB - ${LOG_LIB} - ${ROCKSDB_LIB} - ) - - # one shipping thread is enough for rocksdb version log state - set(LOG_SHIPPING_THREADS_NUM 1) -endif () - -add_compile_definitions(LOG_SHIPPING_THREADS_NUM=${LOG_SHIPPING_THREADS_NUM}) - -set(LOG_INCLUDE_DIR - ${LOG_SOURCE_DIR}/include - ${TX_LOG_PROTOS_SOURCE_DIR} - ) - -set(LOG_LIB - ${LOG_LIB} - ${CMAKE_THREAD_LIBS_INIT} - ${GFLAGS_LIBRARY} - ${PROTOBUF_LIBRARY} - ${GPERFTOOLS_LIBRARIES} - ${LEVELDB_LIB} - ${BRAFT_LIB} - ${BRPC_LIB} - dl - z - ) - -find_package(Protobuf REQUIRED) - - -ADD_CONVENIENCE_LIBRARY(logservice STATIC - ${LOG_SOURCE_DIR}/src/log_instance.cpp - ${LOG_SOURCE_DIR}/src/log_server.cpp - ${LOG_SOURCE_DIR}/src/log_state_rocksdb_impl.cpp - ${LOG_SOURCE_DIR}/src/log_state_rocksdb_cloud_impl.cpp - ${LOG_SOURCE_DIR}/src/log_state_memory_impl.cpp - ${LOG_SOURCE_DIR}/src/fault_inject.cpp - ${LOG_SOURCE_DIR}/src/INIReader.cpp - ${LOG_SOURCE_DIR}/src/ini.c - ${TX_LOG_PROTOS_SOURCE_DIR}/log.pb.cc - ) - -target_include_directories(logservice PUBLIC ${LOG_INCLUDE_DIR}) -target_link_libraries(logservice PUBLIC ${LOG_LIB} ${PROTOBUF_LIBRARIES}) diff --git a/storage/eloq/build_eloq_metrics.cmake b/storage/eloq/build_eloq_metrics.cmake deleted file mode 100644 index 9fe05735256..00000000000 --- a/storage/eloq/build_eloq_metrics.cmake +++ /dev/null @@ -1,42 +0,0 @@ -set(ELOQ_METRICS_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/eloq_metrics") -set(ELOQ_METRICS_SRC_DIR "${ELOQ_METRICS_ROOT_DIR}/src") -set(ELOQ_METRICS_INCLUDE_DIR "${ELOQ_METRICS_ROOT_DIR}/include") - -option(ELOQ_METRICS_ENABLE_BENCHMARK "Whether enable google benchmark" OFF) -option(ELOQ_METRICS_WITH_GLOG "Whether use glog" ON) -option(ENABLE_ELOQ_METRICS_APP "Whether enable mono metrics app" OFF) - -message(STATUS "ELOQ_METRICS_ENABLE_BENCHMARK ${ELOQ_METRICS_ENABLE_BENCHMARK}") -message(STATUS "ELOQ_METRICS_WITH_GLOG ${ELOQ_METRICS_WITH_GLOG}") -message(STATUS "ENABLE_ELOQ_METRICS_APP ${ENABLE_ELOQ_METRICS_APP}") -message(STATUS "ELOQ_METRICS_ROOT_DIR ${ELOQ_METRICS_ROOT_DIR}") - -if(ELOQ_METRICS_WITH_GLOG) - add_compile_definitions(WITH_GLOG=1) -endif() - -if(POLICY CMP0074) - cmake_policy(SET CMP0074 NEW) -endif() - -if(POLICY CMP0054) - cmake_policy(SET CMP0054 NEW) -endif() - -find_package(prometheus-cpp CONFIG REQUIRED) - -set(ELOQ_METRICS_TARGET_SOURCE_LIST - ${ELOQ_METRICS_INCLUDE_DIR}/metrics.h - ${ELOQ_METRICS_INCLUDE_DIR}/meter.h - ${ELOQ_METRICS_INCLUDE_DIR}/metrics_collector.h - ${ELOQ_METRICS_INCLUDE_DIR}/prometheus_collector.h - ${ELOQ_METRICS_INCLUDE_DIR}/metrics_manager.h - ${ELOQ_METRICS_SRC_DIR}/metrics.cc - ${ELOQ_METRICS_SRC_DIR}/prometheus_collector.cc - ${ELOQ_METRICS_SRC_DIR}/metrics_manager.cc -) -add_library(${METRICS_LIB} STATIC ${ELOQ_METRICS_TARGET_SOURCE_LIST}) - -target_include_directories(${METRICS_LIB} PUBLIC ${ELOQ_METRICS_INCLUDE_DIR}) - -target_link_libraries(${METRICS_LIB} PUBLIC prometheus-cpp::pull) diff --git a/storage/eloq/build_log_service.cmake b/storage/eloq/build_log_service.cmake deleted file mode 100644 index 86a86c4f740..00000000000 --- a/storage/eloq/build_log_service.cmake +++ /dev/null @@ -1,158 +0,0 @@ -SET (LOG_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/log_service) -SET(TX_LOG_PROTOS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tx_service/tx-log-protos) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error") - -option(BRPC_WITH_GLOG "With glog" ON) - -find_path(BRPC_INCLUDE_PATH NAMES brpc/stream.h) -find_library(BRPC_LIB NAMES brpc) -if ((NOT BRPC_INCLUDE_PATH) OR (NOT BRPC_LIB)) - message(FATAL_ERROR "Fail to find brpc") -endif() -include_directories(${BRPC_INCLUDE_PATH}) - -find_path(BRAFT_INCLUDE_PATH NAMES braft/raft.h) -find_library(BRAFT_LIB NAMES braft) -if ((NOT BRAFT_INCLUDE_PATH) OR (NOT BRAFT_LIB)) - message (FATAL_ERROR "Fail to find braft") -endif() -include_directories(${BRAFT_INCLUDE_PATH}) - -find_path(GFLAGS_INCLUDE_PATH gflags/gflags.h) -find_library(GFLAGS_LIBRARY NAMES gflags libgflags) -if((NOT GFLAGS_INCLUDE_PATH) OR (NOT GFLAGS_LIBRARY)) - message(FATAL_ERROR "Fail to find gflags") -endif() -include_directories(${GFLAGS_INCLUDE_PATH}) - -if(BRPC_WITH_GLOG) - message(NOTICE "log service brpc with glog") - find_path(GLOG_INCLUDE_PATH NAMES glog/logging.h) - find_library(GLOG_LIB NAMES glog VERSION ">=0.6.0" REQUIRED) - if((NOT GLOG_INCLUDE_PATH) OR (NOT GLOG_LIB)) - message(FATAL_ERROR "Fail to find glog") - endif() - include_directories(${GLOG_INCLUDE_PATH}) - set(LOG_LIB ${LOG_LIB} ${GLOG_LIB}) -endif() - -execute_process( - COMMAND bash -c "grep \"namespace [_A-Za-z0-9]\\+ {\" ${GFLAGS_INCLUDE_PATH}/gflags/gflags_declare.h | head -1 | awk '{print $2}' | tr -d '\n'" - OUTPUT_VARIABLE GFLAGS_NS -) -if(${GFLAGS_NS} STREQUAL "GFLAGS_NAMESPACE") - execute_process( - COMMAND bash -c "grep \"#define GFLAGS_NAMESPACE [_A-Za-z0-9]\\+\" ${GFLAGS_INCLUDE_PATH}/gflags/gflags_declare.h | head -1 | awk '{print $3}' | tr -d '\n'" - OUTPUT_VARIABLE GFLAGS_NS - ) -else() - add_compile_definitions(OVERRIDE_GFLAGS_NAMESPACE) -endif() - -#find_path(GPERFTOOLS_INCLUDE_DIR NAMES gperftools/heap-profiler.h) -#find_library(GPERFTOOLS_LIBRARIES NAMES tcmalloc_and_profiler) -#if (GPERFTOOLS_INCLUDE_DIR AND GPERFTOOLS_LIBRARIES) -# set(CMAKE_CXX_FLAGS "-DBRPC_ENABLE_CPU_PROFILER") -# include_directories(${GPERFTOOLS_INCLUDE_DIR}) -#else () -# set (GPERFTOOLS_LIBRARIES "") -#endif () - -#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CPP_FLAGS} -DGFLAGS_NS=${GFLAGS_NS} -DNDEBUG -O2 -D__const__= -pipe -W -Wall -Wno-unused-parameter -fPIC -fno-omit-frame-pointer") -if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - # require at least gcc 4.8 - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8) - message(FATAL_ERROR "GCC is too old, please install a newer version supporting C++11") - endif() -elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - # require at least clang 3.3 - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.3) - message(FATAL_ERROR "Clang is too old, please install a newer version supporting C++11") - endif() -else() - message(WARNING "You are using an unsupported compiler! Compilation has only been tested with Clang and GCC.") -endif() - - -#if(CMAKE_VERSION VERSION_LESS "3.1.3") -# if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") -# endif() -# if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") -# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17") -# endif() -#else() -# set(CMAKE_CXX_STANDARD 17) -# set(CMAKE_CXX_STANDARD_REQUIRED ON) -#endif() - -find_path(LEVELDB_INCLUDE_PATH NAMES leveldb/db.h) -find_library(LEVELDB_LIB NAMES leveldb) -if ((NOT LEVELDB_INCLUDE_PATH) OR (NOT LEVELDB_LIB)) - message(FATAL_ERROR "Fail to find leveldb") -endif() -include_directories(${LEVELDB_INCLUDE_PATH}) - -find_path(ROCKSDB_INCLUDE_PATH NAMES rocksdb/db.h) - -if (NOT ROCKSDB_INCLUDE_PATH) -message(FATAL_ERROR "Fail to find RocksDB include path") -endif () -message(STATUS "ROCKSDB_INCLUDE_PATH: ${ROCKSDB_INCLUDE_PATH}") - -find_library(ROCKSDB_LIB NAMES rocksdb) -if (NOT ROCKSDB_LIB) - message(FATAL_ERROR "Fail to find RocksDB lib path") -endif () -message(STATUS "ROCKSDB_LIB: ${ROCKSDB_LIB}") - -include_directories(${ROCKSDB_INCLUDE_PATH}) - -set(LOG_LIB - ${LOG_LIB} - ${ROCKSDB_LIB} - ) - -# one shipping thread is enough for rocksdb version log state -set(LOG_SHIPPING_THREADS_NUM 1) - -add_compile_definitions(LOG_SHIPPING_THREADS_NUM=${LOG_SHIPPING_THREADS_NUM}) - -# Add for compatiable reason -add_compile_definitions(LOG_STATE_TYPE_RKDB) - -set(LOG_INCLUDE_DIR - ${LOG_SOURCE_DIR}/include - ${TX_LOG_PROTOS_SOURCE_DIR} - ) - -set(LOG_LIB - ${LOG_LIB} - ${CMAKE_THREAD_LIBS_INIT} - ${GFLAGS_LIBRARY} - ${PROTOBUF_LIBRARY} - ${GPERFTOOLS_LIBRARIES} - ${LEVELDB_LIB} - ${BRAFT_LIB} - ${BRPC_LIB} - dl - z - ) - -find_package(Protobuf REQUIRED) - - -ADD_CONVENIENCE_LIBRARY(logservice STATIC - ${LOG_SOURCE_DIR}/src/log_server.cpp - ${LOG_SOURCE_DIR}/src/log_state_rocksdb_impl.cpp - ${LOG_SOURCE_DIR}/src/fault_inject.cpp - ${LOG_SOURCE_DIR}/src/INIReader.cpp - ${LOG_SOURCE_DIR}/src/ini.c - ${TX_LOG_PROTOS_SOURCE_DIR}/log.pb.cc - ${LOG_SOURCE_DIR}/src/open_log_service.cpp - ${LOG_SOURCE_DIR}/src/open_log_task.cpp - ) - -target_include_directories(logservice PUBLIC ${LOG_INCLUDE_DIR}) -target_link_libraries(logservice PUBLIC ${LOG_LIB} ${PROTOBUF_LIBRARIES}) diff --git a/storage/eloq/build_tx_service.cmake b/storage/eloq/build_tx_service.cmake deleted file mode 100644 index a4fd72b3fe2..00000000000 --- a/storage/eloq/build_tx_service.cmake +++ /dev/null @@ -1,273 +0,0 @@ -SET(TX_SERVICE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tx_service) -SET(METRICS_SERVICE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/eloq_metrics) - -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-parentheses -Wno-error") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DFAULT_INJECTOR") - -option(BRPC_WITH_GLOG "With glog" ON) - -option(EXT_TX_PROC_ENABLED "Allows external threads to move forward the tx service." ON) - -if(EXT_TX_PROC_ENABLED) - add_definitions(-DEXT_TX_PROC_ENABLED) -endif() - -option(ELOQ_MODULE_ENABLED "Register the tx service as an ELOQ module." OFF) -message(NOTICE "Tx service ELOQ_MODULE_ENABLED : ${ELOQ_MODULE_ENABLED}") - -if(ELOQ_MODULE_ENABLED) - add_definitions(-DELOQ_MODULE_ENABLED) -endif() - -option(FORK_HM_PROCESS "Whether fork host manager process" OFF) -message(NOTICE "FORK_HM_PROCESS : ${FORK_HM_PROCESS}") - -option(STATISTICS "Whether enable table statistics" OFF) -message(NOTICE "STATISTICS : ${STATISTICS}") - -find_package(Protobuf REQUIRED) -find_package(GFLAGS REQUIRED) -find_package(MIMALLOC REQUIRED) - -find_path(GFLAGS_INCLUDE_PATH gflags/gflags.h) -find_library(GFLAGS_LIBRARY NAMES gflags libgflags) - -if((NOT GFLAGS_INCLUDE_PATH) OR(NOT GFLAGS_LIBRARY)) - message(FATAL_ERROR "Fail to find gflags") -endif() - -execute_process( - COMMAND bash -c "grep \"namespace [_A-Za-z0-9]\\+ {\" ${GFLAGS_INCLUDE_PATH}/gflags/gflags_declare.h | head -1 | awk '{print $2}' | tr -d '\n'" - OUTPUT_VARIABLE GFLAGS_NS -) - -if(${GFLAGS_NS} STREQUAL "GFLAGS_NAMESPACE") - execute_process( - COMMAND bash -c "grep \"#define GFLAGS_NAMESPACE [_A-Za-z0-9]\\+\" ${GFLAGS_INCLUDE_PATH}/gflags/gflags_declare.h | head -1 | awk '{print $3}' | tr -d '\n'" - OUTPUT_VARIABLE GFLAGS_NS - ) -else() - add_compile_definitions(OVERRIDE_GFLAGS_NAMESPACE) -endif() - -if(SMALL_RANGE) - add_compile_definitions(SMALL_RANGE) -endif() - -if(FORK_HM_PROCESS) - add_compile_definitions(FORK_HM_PROCESS) -endif() - -if(STATISTICS) - add_definitions(-DSTATISTICS) -endif() - -if(CMAKE_COMPILER_IS_GNUCC) - find_path(BRPC_INCLUDE_PATH NAMES brpc/stream.h) - find_library(BRPC_LIB NAMES brpc) - - if((NOT BRPC_INCLUDE_PATH) OR(NOT BRPC_LIB)) - message(FATAL_ERROR "Fail to find brpc") - endif() - - if(BRPC_WITH_GLOG) - message(NOTICE "TX BRPC WITH GLOG") - find_path(GLOG_INCLUDE_PATH NAMES glog/logging.h) - find_library(GLOG_LIB NAMES glog VERSION ">=0.6.0" REQUIRED) - - if((NOT GLOG_INCLUDE_PATH) OR(NOT GLOG_LIB)) - message(FATAL_ERROR "Fail to find glog") - endif() - - include_directories(${GLOG_INCLUDE_PATH}) - set(LINK_LIB ${LINK_LIB} ${GLOG_LIB}) - endif() - - find_path(LEVELDB_INCLUDE_PATH NAMES leveldb/db.h) - find_library(LEVELDB_LIB NAMES leveldb) - - if((NOT LEVELDB_INCLUDE_PATH) OR(NOT LEVELDB_LIB)) - message(FATAL_ERROR "Fail to find leveldb") - endif() -endif() - -# Compile all protobuf files under txservice proto directory. -SET(PROTO_SRC ${TX_SERVICE_SOURCE_DIR}/include/proto) -FILE(GLOB PROTO_FILES RELATIVE ${PROTO_SRC} ${PROTO_SRC}/*.proto) - -FOREACH(PROTO_FILE ${PROTO_FILES}) - STRING(REGEX REPLACE "[^/]proto" "" PROTO_NAME ${PROTO_FILE}) - LIST(APPEND PROTO_CC_FILES ${PROTO_SRC}/${PROTO_NAME}.pb.cc) - ADD_CUSTOM_COMMAND( - OUTPUT "${PROTO_SRC}/${PROTO_NAME}.pb.cc" "${PROTO_SRC}/${PROTO_NAME}.pb.h" - DEPENDS ${PROTO_SRC}/${PROTO_FILE} - COMMAND protoc ${PROTO_FILE} --proto_path=./ --cpp_out=./ - WORKING_DIRECTORY ${PROTO_SRC} - ) -ENDFOREACH(PROTO_FILE) - -set(LOG_PROTO_SRC ${CMAKE_CURRENT_SOURCE_DIR}/tx_service/tx-log-protos) -set(LOG_PROTO_NAME log) -execute_process( - COMMAND protoc ./${LOG_PROTO_NAME}.proto --cpp_out=./ --proto_path=./ - WORKING_DIRECTORY ${LOG_PROTO_SRC} -) - -add_subdirectory(tx_service/abseil-cpp) - -message(${TX_SERVICE_SOURCE_DIR}) -set(INCLUDE_DIR - ${TX_SERVICE_SOURCE_DIR}/include - ${TX_SERVICE_SOURCE_DIR}/include/cc - ${TX_SERVICE_SOURCE_DIR}/include/remote - ${TX_SERVICE_SOURCE_DIR}/include/fault - ${TX_SERVICE_SOURCE_DIR}/tx-log-protos - ${METRICS_SERVICE_SOURCE_DIR}/include - ${Protobuf_INCLUDE_DIR} - ${MIMALLOC_INCLUDE_DIR}) - -if(CMAKE_COMPILER_IS_GNUCC) - set(INCLUDE_DIR ${INCLUDE_DIR} - ${BRPC_INCLUDE_PATH} - ${GLOG_INCLUDE_PATH} - ${GFLAGS_INCLUDE_PATH}) -endif() - -set(LINK_LIB ${LINK_LIB} ${PROTOBUF_LIBRARY}) - -set(LINK_LIB ${LINK_LIB} - mimalloc - absl::btree - absl::flat_hash_map - ${GFLAGS_LIBRARY} - ${LEVELDB_LIB} -) - -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(LINK_LIB ${LINK_LIB} - ${BRPC_LIB} - ) -endif() - -SET(ELOQ_SOURCES - ${TX_SERVICE_SOURCE_DIR}/src/tx_key.cpp - ${TX_SERVICE_SOURCE_DIR}/src/tx_execution.cpp - ${TX_SERVICE_SOURCE_DIR}/src/tx_operation.cpp - ${TX_SERVICE_SOURCE_DIR}/src/checkpointer.cpp - ${TX_SERVICE_SOURCE_DIR}/src/tx_trace.cpp - ${TX_SERVICE_SOURCE_DIR}/src/tx_start_ts_collector.cpp - ${TX_SERVICE_SOURCE_DIR}/src/tx_worker_pool.cpp - ${TX_SERVICE_SOURCE_DIR}/src/sharder.cpp - ${TX_SERVICE_SOURCE_DIR}/src/standby.cpp - ${TX_SERVICE_SOURCE_DIR}/src/catalog_key_record.cpp - ${TX_SERVICE_SOURCE_DIR}/src/range_record.cpp - ${TX_SERVICE_SOURCE_DIR}/src/range_bucket_key_record.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/cc_entry.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/cc_map.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/cc_shard.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/cc_handler_result.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/local_cc_handler.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/local_cc_shards.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/non_blocking_lock.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/cc_req_misc.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/range_slice.cpp - ${TX_SERVICE_SOURCE_DIR}/src/cc/reader_writer_cntl.cpp - ${TX_SERVICE_SOURCE_DIR}/src/eloq_string_key_record.cpp - ${TX_SERVICE_SOURCE_DIR}/src/eloq_basic_catalog_factory.cpp - ${TX_SERVICE_SOURCE_DIR}/src/remote/remote_cc_handler.cpp - ${TX_SERVICE_SOURCE_DIR}/src/remote/remote_cc_request.cpp - ${TX_SERVICE_SOURCE_DIR}/src/remote/cc_node_service.cpp - ${TX_SERVICE_SOURCE_DIR}/src/remote/cc_stream_receiver.cpp - ${TX_SERVICE_SOURCE_DIR}/src/remote/cc_stream_sender.cpp - ${TX_SERVICE_SOURCE_DIR}/src/fault/log_replay_service.cpp - ${TX_SERVICE_SOURCE_DIR}/src/fault/cc_node.cpp - ${TX_SERVICE_SOURCE_DIR}/src/fault/fault_inject.cpp - ${TX_SERVICE_SOURCE_DIR}/src/dead_lock_check.cpp - ${TX_SERVICE_SOURCE_DIR}/src/tx_index_operation.cpp - ${TX_SERVICE_SOURCE_DIR}/src/sk_generator.cpp - ${TX_SERVICE_SOURCE_DIR}/src/data_sync_task.cpp - ${TX_SERVICE_SOURCE_DIR}/src/store/snapshot_manager.cpp - ${TX_SERVICE_SOURCE_DIR}/src/sequences/sequences.cpp - ${TX_SERVICE_SOURCE_DIR}/tx-log-protos/log_agent.cpp - ${TX_SERVICE_SOURCE_DIR}/tx-log-protos/log.pb.cc - ${METRICS_SERVICE_SOURCE_DIR}/src/metrics.cc -) - -set(INCLUDE_DIR ${INCLUDE_DIR} ${PROTO_SRC}) -set(ELOQ_SOURCES ${ELOQ_SOURCES} ${PROTO_CC_FILES}) - -ADD_CONVENIENCE_LIBRARY(txservice STATIC - ${ELOQ_SOURCES}) - -target_include_directories(txservice PUBLIC ${INCLUDE_DIR}) - -target_link_libraries(txservice PUBLIC ${LINK_LIB} ${PROTOBUF_LIBRARIES}) - -if(FORK_HM_PROCESS) - include(FetchContent) - # Import yaml-cpp library used by host manager - FetchContent_Declare( - yaml-cpp - GIT_REPOSITORY https://github.com/jbeder/yaml-cpp.git - GIT_TAG yaml-cpp-0.7.0 # Can be a tag (yaml-cpp-x.x.x), a commit hash, or a branch name (master) - ) - FetchContent_MakeAvailable(yaml-cpp) - - SET(HOST_MANAGER_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tx_service/raft_host_manager) - set(HOST_MANAGER_INCLUDE_DIR - ${HOST_MANAGER_SOURCE_DIR}/include - ${TX_SERVICE_SOURCE_DIR}/tx-log-protos - ${OPENSSL_INCLUDE_DIR} - ${LOG_PROTO_SRC} - ${PROTO_SRC}) - - if(CMAKE_COMPILER_IS_GNUCC) - set(HOST_MANAGER_INCLUDE_DIR ${HOST_MANAGER_INCLUDE_DIR} - ${BRPC_INCLUDE_PATH} - ${BRAFT_INCLUDE_PATH} - ${GLOG_INCLUDE_PATH} - ${GFLAGS_INCLUDE_PATH}) - endif() - - set(HOST_MANAGER_LINK_LIB ${HOST_MANAGER_LINK_LIB} ${PROTOBUF_LIBRARIES}) - - if(CMAKE_COMPILER_IS_GNUCC) - find_path(BRAFT_INCLUDE_PATH NAMES braft/raft.h) - find_library(BRAFT_LIB NAMES braft) - - if((NOT BRAFT_INCLUDE_PATH) OR(NOT BRAFT_LIB)) - message(FATAL_ERROR "Fail to find braft") - endif() - - set(HOST_MANAGER_LINK_LIB ${HOST_MANAGER_LINK_LIB} - ${GFLAGS_LIBRARY} - ${LEVELDB_LIB} - ${BRAFT_LIB} - ${BRPC_LIB} - ${OPENSSL_LIB}) - find_path(GLOG_INCLUDE_PATH NAMES glog/logging.h) - find_library(GLOG_LIB NAMES glog VERSION ">=0.6.0" REQUIRED) - - if((NOT GLOG_INCLUDE_PATH) OR(NOT GLOG_LIB)) - message(FATAL_ERROR "Fail to find glog") - endif() - - include_directories(${GLOG_INCLUDE_PATH}) - set(HOST_MANAGER_LINK_LIB ${HOST_MANAGER_LINK_LIB} ${GLOG_LIB}) - endif() - - SET(RaftHM_SOURCES - ${HOST_MANAGER_SOURCE_DIR}/src/main.cpp - ${HOST_MANAGER_SOURCE_DIR}/src/raft_host_manager_service.cpp - ${HOST_MANAGER_SOURCE_DIR}/src/raft_host_manager.cpp - ${HOST_MANAGER_SOURCE_DIR}/src/ini.c - ${HOST_MANAGER_SOURCE_DIR}/src/INIReader.cpp - ${LOG_PROTO_SRC}/log_agent.cpp - ${LOG_PROTO_SRC}/${LOG_PROTO_NAME}.pb.cc - ${PROTO_CC_FILES} - ) - - include_directories(${HOST_MANAGER_INCLUDE_DIR}) - MYSQL_ADD_EXECUTABLE(host_manager ${RaftHM_SOURCES} DESTINATION ${INSTALL_SBINDIR} COMPONENT Server) - target_link_libraries(host_manager ${HOST_MANAGER_LINK_LIB} yaml-cpp::yaml-cpp) -endif() diff --git a/storage/eloq/eloq_db.cpp b/storage/eloq/eloq_db.cpp index 43c693c6994..05f72b74d2e 100644 --- a/storage/eloq/eloq_db.cpp +++ b/storage/eloq/eloq_db.cpp @@ -395,8 +395,9 @@ int eloq_create_database(THD *thd, LEX_CSTRING db, DBUG_RETURN(ret); } + auto [yield_func, resume_func]= thd_get_coro_functors(thd); bool ok= - storage_hd->UpsertDatabase(key, {opt_binary.str, opt_binary.length}); + storage_hd->UpsertDatabase(key, {opt_binary.str, opt_binary.length}, yield_func, resume_func); if (!ok) { my_printf_error(HA_ERR_INTERNAL_ERROR, "Eloq upsert database '%s' failed", @@ -437,8 +438,9 @@ int eloq_update_database(THD *thd, LEX_CSTRING db, DBUG_RETURN(ret); } + auto [yield_func, resume_func]= thd_get_coro_functors(thd); bool ok= - storage_hd->UpsertDatabase(key, {opt_binary.str, opt_binary.length}); + storage_hd->UpsertDatabase(key, {opt_binary.str, opt_binary.length}, yield_func, resume_func); if (!ok) { my_printf_error(HA_ERR_INTERNAL_ERROR, "Eloq upsert database '%s' failed", @@ -461,7 +463,8 @@ int eloq_drop_database(THD *thd, LEX_CSTRING db) DBUG_RETURN(ret); } - bool ok= storage_hd->DropDatabase(key); + auto [yield_func, resume_func]= thd_get_coro_functors(thd); + bool ok= storage_hd->DropDatabase(key, yield_func, resume_func); if (!ok) { my_printf_error(HA_ERR_INTERNAL_ERROR, "Eloq drop database '%s' failed", @@ -1295,9 +1298,10 @@ int eloq_fetch_frm(THD *thd, LEX_CSTRING db, LEX_CSTRING frm_name, bool exists= false; std::string data; uint64_t commit_ts; + auto [yield_func, resume_func]= thd_get_coro_functors(thd); bool ok= storage_hd->FetchTable( TableName(key, TableType::Catalog, TableEngine::EloqSql), data, exists, - commit_ts); + commit_ts, yield_func, resume_func); if (!ok) { my_printf_error(HA_ERR_INTERNAL_ERROR, "Eloq fetch frm './%s/%s' failed", diff --git a/storage/eloq/eloq_db_dl.h b/storage/eloq/eloq_db_dl.h index 74cd7d73824..fbaebd0acf1 100644 --- a/storage/eloq/eloq_db_dl.h +++ b/storage/eloq/eloq_db_dl.h @@ -27,8 +27,6 @@ template class Dynamic_array; #define plugin_handle(pi) ((plugin_dlib(pi))->handle) -static LEX_CSTRING ELOQ_ENGINE_NAME= {STRING_WITH_LEN("ELOQ")}; - //-- Below macros are borrowed from linux kernel SYSCALL_DEFINEx #define __SC_DECL1(t1, a1) t1 a1 @@ -53,25 +51,10 @@ static LEX_CSTRING ELOQ_ENGINE_NAME= {STRING_WITH_LEN("ELOQ")}; * These functions must be wrapped with extern "C", and function signature * must match with that defined by ELOQ_DEFINEx. */ -#define MONOCALL_DEFINEx(x, name, ...) \ - static inline int name(__SC_DECL##x(__VA_ARGS__)) \ - { \ - using T= decltype(&name); \ - \ - int ret= 0; \ - \ - static_assert(std::is_same::value); \ - static THD *t= __ARG1(__VA_ARGS__); \ - \ - static plugin_ref pi= ha_resolve_by_name(t, &ELOQ_ENGINE_NAME, false); \ - \ - static void *handle= plugin_handle(pi); \ - static T fp= reinterpret_cast(dlsym(handle, __FUNCTION__)); \ - ret= fp(__SC_CAST##x(__VA_ARGS__)); \ - \ - return ret; \ - } - +// Statically linked: declare the symbol and let the linker resolve it to the +// implementation provided in the static library (see eloq_db.cpp extern "C" block). +#define MONOCALL_DEFINEx(x, name, ...) \ + extern "C" int name(__SC_DECL##x(__VA_ARGS__)); #define MONOCALL_DEFINE1(name, ...) MONOCALL_DEFINEx(1, name, __VA_ARGS__) #define MONOCALL_DEFINE2(name, ...) MONOCALL_DEFINEx(2, name, __VA_ARGS__) #define MONOCALL_DEFINE3(name, ...) MONOCALL_DEFINEx(3, name, __VA_ARGS__) diff --git a/storage/eloq/eloq_i_s.cc b/storage/eloq/eloq_i_s.cc index 44799e19b49..cade0547ab5 100644 --- a/storage/eloq/eloq_i_s.cc +++ b/storage/eloq/eloq_i_s.cc @@ -31,7 +31,7 @@ using namespace MyEloq; using namespace txservice; extern std::unique_ptr tx_service; -extern std::unique_ptr storage_hd; +extern store::DataStoreHandler *storage_hd; extern std::pair *, const std::function *> thd_get_coro_functors(const THD *thd); diff --git a/storage/eloq/eloq_key_def.cc b/storage/eloq/eloq_key_def.cc index 23c59f41c8e..9b509c1935b 100644 --- a/storage/eloq/eloq_key_def.cc +++ b/storage/eloq/eloq_key_def.cc @@ -33,7 +33,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA */ -#include "eloq_schema.h" +#include "eloqsql_schema.h" #ifdef USE_PRAGMA_IMPLEMENTATION #pragma implementation // gcc: Class implementation #endif @@ -64,7 +64,7 @@ #include "sql_table.h" #include "log.h" #include "mysqld_error.h" -#include "eloq_key.h" +#include "eloqsql_key.h" #define HA_EXIT_FAILURE 1 #define HA_EXIT_SUCCESS 0 diff --git a/storage/eloq/eloq_key_def.h b/storage/eloq/eloq_key_def.h index a6d8e53e931..8a76c373b89 100644 --- a/storage/eloq/eloq_key_def.h +++ b/storage/eloq/eloq_key_def.h @@ -56,7 +56,7 @@ #include "field.h" #include "eloq_buff.h" -#include "eloq_schema.h" +#include "eloqsql_schema.h" #include "slice.h" /* The following is copied from storage/innobase/univ.i: */ diff --git a/storage/eloq/eloq_metrics b/storage/eloq/eloq_metrics deleted file mode 160000 index 9ff8eddfaf3..00000000000 --- a/storage/eloq/eloq_metrics +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9ff8eddfaf3c7980b8585de681a3802efe0cc1ba diff --git a/storage/eloq/eloq_system_handler.h b/storage/eloq/eloq_system_handler.h index 939b81c1bd4..bec9300d613 100644 --- a/storage/eloq/eloq_system_handler.h +++ b/storage/eloq/eloq_system_handler.h @@ -40,11 +40,18 @@ class MariaSystemHandler : public txservice::SystemHandler void ReloadCache(std::function done) override; - void Shutdown(); + void Shutdown() override; private: MariaSystemHandler(); - ~MariaSystemHandler()= default; + ~MariaSystemHandler() + { + Shutdown(); + if (thd_.joinable()) + { + thd_.join(); + } + } void SubmitWork(std::packaged_task work); diff --git a/storage/eloq/eloq_catalog_factory.cpp b/storage/eloq/eloqsql_catalog_factory.cpp similarity index 99% rename from storage/eloq/eloq_catalog_factory.cpp rename to storage/eloq/eloqsql_catalog_factory.cpp index 36aa7fc0df2..c8bae494873 100644 --- a/storage/eloq/eloq_catalog_factory.cpp +++ b/storage/eloq/eloqsql_catalog_factory.cpp @@ -18,7 +18,7 @@ #include "type.h" #define MYSQL_SERVER 1 -#include "eloq_catalog_factory.h" +#include "eloqsql_catalog_factory.h" #include #include @@ -29,7 +29,7 @@ #include "sql_class.h" #include "store_handler/kv_store.h" -#include "eloq_key.h" +#include "eloqsql_key.h" #include "cc/template_cc_map.h" #include "constants.h" @@ -435,7 +435,9 @@ MysqlTableSchema::MysqlTableSchema(const txservice::TableName &table_name, } size_t offset= 0; - kv_info_= storage_hd->DeserializeKVCatalogInfo(kv_info, offset); + kv_info_= DataSubstrate::GetGlobal() + ->GetStoreHandler() + ->DeserializeKVCatalogInfo(kv_info, offset); record_schema_= EloqRecordSchema(&mysql_table_share_); } diff --git a/storage/eloq/eloq_catalog_factory.h b/storage/eloq/eloqsql_catalog_factory.h similarity index 96% rename from storage/eloq/eloq_catalog_factory.h rename to storage/eloq/eloqsql_catalog_factory.h index e55f91b870a..e1ba9cee23a 100644 --- a/storage/eloq/eloq_catalog_factory.h +++ b/storage/eloq/eloqsql_catalog_factory.h @@ -24,13 +24,14 @@ #include "tx_service/include/catalog_factory.h" #include "tx_service/include/store/data_store_handler.h" -#include "eloq_key.h" -#include "eloq_schema.h" +#include "eloqsql_key.h" +#include "eloqsql_schema.h" #include "ha_eloq_macro.h" +#include "data_substrate.h" #include "tx_service/include/table_statistics.h" #include "tx_service/include/type.h" // TableName -extern std::unique_ptr storage_hd; +extern txservice::store::DataStoreHandler *storage_hd; namespace txservice { @@ -116,7 +117,9 @@ struct MysqlTableSchema : public txservice::TableSchema void SetKVCatalogInfo(const std::string &kv_info) override { size_t offset= 0; - kv_info_= storage_hd->DeserializeKVCatalogInfo(kv_info, offset); + kv_info_= DataSubstrate::GetGlobal() + ->GetStoreHandler() + ->DeserializeKVCatalogInfo(kv_info, offset); } txservice::KVCatalogInfo *GetKVCatalogInfo() const override diff --git a/storage/eloq/eloq_key.h b/storage/eloq/eloqsql_key.h similarity index 100% rename from storage/eloq/eloq_key.h rename to storage/eloq/eloqsql_key.h diff --git a/storage/eloq/eloq_schema.cpp b/storage/eloq/eloqsql_schema.cpp similarity index 99% rename from storage/eloq/eloq_schema.cpp rename to storage/eloq/eloqsql_schema.cpp index 37ac5d629b3..635f851541b 100644 --- a/storage/eloq/eloq_schema.cpp +++ b/storage/eloq/eloqsql_schema.cpp @@ -22,9 +22,9 @@ #include #include "eloq_key_def.h" -#include "eloq_schema.h" +#include "eloqsql_schema.h" #include "date.h" -#include "eloq_key.h" +#include "eloqsql_key.h" #include "tx_record.h" #include "butil/logging.h" diff --git a/storage/eloq/eloq_schema.h b/storage/eloq/eloqsql_schema.h similarity index 100% rename from storage/eloq/eloq_schema.h rename to storage/eloq/eloqsql_schema.h diff --git a/storage/eloq/ha_eloq.cc b/storage/eloq/ha_eloq.cc index 7598ae7771a..9844082d1ea 100644 --- a/storage/eloq/ha_eloq.cc +++ b/storage/eloq/ha_eloq.cc @@ -112,8 +112,6 @@ */ #include "mysql/plugin.h" -#include "mysql_metrics.h" -#include "mysql_version.h" #include #include #include @@ -128,10 +126,8 @@ #include #include #include -#include #include #include -#include #include "my_global.h" #include "thr_lock.h" /* THR_LOCK, THR_LOCK_DATA */ @@ -145,70 +141,18 @@ #include "key.h" #include "mysql/service_thd_wait.h" -#include "log_wrapper.h" #include "eloq_i_s.h" -#include "eloq_catalog_factory.h" +#include "eloqsql_catalog_factory.h" #include "eloq_catalog_name.h" #include "eloq_system_handler.h" #include "eloq_errors.h" #include "tx_util.h" +#include "data_substrate.h" // #include "eloq_tests.hpp" #include "ha_eloq.h" #include "tx_service/include/sequences/sequences.h" #include "slice.h" -#include "store_handler/kv_store.h" - -#if (defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_GCS) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ELOQSTORE)) -#define ELOQDS 1 -#endif - -#if (defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_GCS)) -#define ELOQDS_RKDB_CLOUD 1 -#endif - -#if defined(DATA_STORE_TYPE_DYNAMODB) -#include "store_handler/dynamo_handler.h" -#elif defined(DATA_STORE_TYPE_BIGTABLE) -#include "store_handler/bigtable_handler.h" - -#elif ELOQDS -#include "store_handler/eloq_data_store_service/data_store_service.h" -#include "store_handler/eloq_data_store_service/data_store_service_config.h" -#include "store_handler/data_store_service_client.h" -#if ELOQDS_RKDB_CLOUD -#include "store_handler/eloq_data_store_service/rocksdb_cloud_data_store_factory.h" -#include "store_handler/eloq_data_store_service/rocksdb_config.h" -#elif defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB) -#include "store_handler/eloq_data_store_service/rocksdb_data_store_factory.h" -#include "store_handler/eloq_data_store_service/rocksdb_config.h" -#elif defined(DATA_STORE_TYPE_ELOQDSS_ELOQSTORE) -#include "store_handler/eloq_data_store_service/eloq_store_data_store_factory.h" -#endif -#else -#endif - -#include "metrics_registry_impl.h" - -#include "tx_service/include/constants.h" -#include "tx_service/include/statistics.h" -#include "tx_service/include/type.h" -#include "tx_service/include/tx_execution.h" -#include "tx_service/include/tx_service.h" -#include "tx_service/include/tx_service_metrics.h" -#include "tx_service/include/tx_request.h" -#include "tx_service/include/util.h" - -#if (WITH_LOG_SERVICE) -#include "log_server.h" -#include "log_service_metrics.h" -#include "log_utils.h" -#endif - // Log state type #if !defined(LOG_STATE_TYPE_RKDB_CLOUD) @@ -230,15 +174,31 @@ #endif -#if defined(LOG_STATE_TYPE_RKDB_CLOUD) -#include "rocksdb_cloud_config.h" +#if defined(WITH_LOG_SERVICE) +#include "log_server.h" #endif +#include "store_handler/kv_store.h" -// Don't put this include after sql_class.h include, it will cause compile -// error -#if (defined(DATA_STORE_TYPE_DYNAMODB) || defined(LOG_STATE_TYPE_RKDB_S3) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3)) -#include +#include "tx_service/include/constants.h" +#include "tx_service/include/statistics.h" +#include "tx_service/include/type.h" +#include "tx_service/include/tx_execution.h" +#include "tx_service/include/tx_service.h" +#include "tx_service/include/tx_request.h" +#include "tx_service/include/util.h" + +#ifdef MYSQLD_LIBRARY_MODE +#include +#include +// Define synchronization variables +namespace mysqld_converged_sync +{ +std::mutex init_mutex; +std::condition_variable mysqld_basic_init_done_cv; +std::condition_variable data_substrate_init_done_cv; +bool mysqld_basic_init_done= false; +bool data_substrate_init_done= false; +} // namespace mysqld_converged_sync #endif #define DEFAULT_SCAN_TUPLE_SIZE 128 @@ -252,6 +212,11 @@ using namespace MyEloq; using namespace txservice; +DECLARE_string(eloq_data_path); + +MariaCatalogFactory maria_catalog_factory; +txservice::CatalogFactory *eloqsql_catalog_factory= &maria_catalog_factory; +txservice::SystemHandler *eloqsql_system_handler= nullptr; extern my_bool opt_bootstrap; // Defined in Mariadb context. extern std::function terminate_hook; @@ -273,297 +238,21 @@ static handler *eloq_create_handler(handlerton *hton, TABLE_SHARE *table, handlerton *eloq_hton; -static ulong eloq_kv_storage= 0; -static char *eloq_local_ip= nullptr; -static char *eloq_ip_list= nullptr; -static char *eloq_standby_ip_list= nullptr; -static char *eloq_voter_ip_list= nullptr; -static char *eloq_hm_ip= nullptr; -static char *eloq_hm_bin_path= nullptr; -static char *eloq_cluster_config_file= nullptr; -static char *eloq_keyspace_name= nullptr; -static char *eloq_dynamodb_endpoint= nullptr; -static char *eloq_aws_access_key_id= nullptr; -static char *eloq_aws_secret_key= nullptr; -static char *eloq_dynamodb_region= nullptr; -static char *eloq_bigtable_project_id= nullptr; -static char *eloq_bigtable_instance_id= nullptr; +static char *eloq_config= nullptr; static char *eloq_insert_semantic= nullptr; static char *eloq_auto_increment= nullptr; static char *eloq_invalidate_cache_once= nullptr; -static unsigned int eloq_core_num= 1; static ulong srv_enum_var= 0; static ulong srv_ulong_var= 0; static double srv_double_var= 0; -static unsigned int eloq_checkpointer_interval_sec= 10; -static unsigned int eloq_checkpointer_delay_sec= 5; -static unsigned int eloq_collect_active_tx_ts_interval_sec= 2; -// range split worker number -static unsigned int eloq_range_split_worker_num= 0; -static unsigned int eloq_bthread_worker_num= 0; -static unsigned int eloq_logserver_rocksdb_scan_thread_num= 0; -// eloq_realtime_sampling cannot be changed at runtime until now, because -// broadcast configuration has not been supported. -static my_bool eloq_realtime_sampling= true; -static my_bool eloq_ddl_skip_kv= false; -static my_bool eloq_skip_redo_log= false; -static my_bool eloq_scan_skip_kv= false; static my_bool eloq_random_scan_sort= false; -static my_bool eloq_use_key_cache= false; static my_bool eloq_report_debug_info= false; -// memory limit default 8GB. -static unsigned int eloq_node_memory_limit_mb= 8000; -// log limit default 16GB since rocksdb is used as default engine of log -// service, it's not sensitive to log size. But we still keep the logic of -// triggering checkpoint when log size reach the limit. -static unsigned int eloq_node_log_limit_mb= 16000; -static my_bool eloq_enable_mvcc= true; -static unsigned int eloq_metrics_port= 18081; -static unsigned int eloq_deadlock_interval_sec= 10; -// If not 0, will create a hook function that will close all braft connections -// when mysqld received crash single. static int eloq_signal_monitor= 0; -// tx log service list -static char *eloq_txlog_rocksdb_storage_path= nullptr; -static char *eloq_txlog_service_list= nullptr; -static unsigned int eloq_txlog_group_replica_num= 3; -static ulong eloq_partition_type= 0; - -// metrics collection -static std::unique_ptr metrics_registry= nullptr; -static my_bool eloq_enable_metrics= false; - -// mysql metrics -static my_bool eloq_enable_mysql_tx_metrics= true; -static my_bool eloq_enable_mysql_dml_metrics= true; - -// tx_service metrics -static my_bool eloq_enable_tx_metrics= true; -static my_bool eloq_enable_cache_hit_rate= true; -static my_bool eloq_enable_kv_metrics= true; -static my_bool eloq_enable_busy_round_metrics= true; -static my_bool eloq_enable_memory_usage= true; -static my_bool eloq_enable_remote_request_metrics= true; -static unsigned long long eloq_collect_memory_usage_round= 10000; -static unsigned long long eloq_collect_tx_duration_round= 1; -static unsigned long long eloq_busy_round_threshold= 10; - -// log_service metrics -static my_bool eloq_enable_log_service_metrics= false; - -// log server/rocksdb/cloud -static char *eloq_txlog_rocksdb_cloud_bucket_name= nullptr; -static char *eloq_txlog_rocksdb_cloud_bucket_prefix= nullptr; -static char *eloq_txlog_rocksdb_cloud_object_path= nullptr; -static char *eloq_txlog_rocksdb_cloud_region= nullptr; -static char *eloq_txlog_rocksdb_cloud_endpoint_url= nullptr; -static char *eloq_txlog_rocksdb_cloud_sst_file_cache_size= nullptr; -static int eloq_txlog_rocksdb_cloud_sst_file_cache_num_shard_bits= 5; -static char *eloq_txlog_rocksdb_target_file_size_base= nullptr; -static char *eloq_txlog_rocksdb_sst_files_size_limit= nullptr; -static unsigned int eloq_txlog_rocksdb_cloud_ready_timeout= 10; -static unsigned int eloq_txlog_rocksdb_cloud_file_deletion_delay= 3600; -static unsigned int eloq_node_group_replica_num= 3; -static unsigned int eloq_logserver_snapshot_interval= 600; -static unsigned int eloq_txlog_rocksdb_cloud_in_mem_log_size_high_watermark= - 50 * 10000; -static unsigned int eloq_txlog_rocksdb_max_write_buffer_number= 8; -static unsigned int eloq_txlog_rocksdb_max_background_jobs= 8; - -static my_bool eloq_enable_txlog_request_checkpoint= true; -static unsigned int eloq_check_replay_log_size_interval_sec= 10; -static char *eloq_notify_checkpointer_threshold_size= nullptr; - -// data_store_service -static char *eloq_dss_config_file_path= nullptr; -static char *eloq_dss_peer_node= nullptr; -static char *eloq_dss_branch_name= nullptr; -static char *eloq_dss_rocksdb_cloud_bucket_name= nullptr; -static char *eloq_dss_rocksdb_cloud_bucket_prefix= nullptr; -static char *eloq_dss_rocksdb_cloud_object_path= nullptr; -static char *eloq_dss_rocksdb_cloud_region= nullptr; -static char *eloq_dss_rocksdb_cloud_endpoint_url= nullptr; -static char *eloq_dss_rocksdb_cloud_sst_file_cache_size= nullptr; -static int eloq_dss_rocksdb_cloud_sst_file_cache_num_shard_bits= 5; -static char *eloq_dss_rocksdb_target_file_size_base= nullptr; -static unsigned int eloq_dss_rocksdb_cloud_purger_periodicity_secs= - 600; // 10 minutes -static unsigned int eloq_dss_rocksdb_cloud_file_deletion_delay= 3600; -static unsigned int eloq_dss_rocksdb_max_write_buffer_number= 8; -static unsigned int eloq_dss_rocksdb_max_background_jobs= 8; -#if defined(DATA_STORE_TYPE_ELOQDSS_ELOQSTORE) -static unsigned int eloq_eloqstore_worker_num= 1; -static char *eloq_eloqstore_data_path_list= nullptr; -static unsigned int eloq_eloqstore_open_files_limit= 1024; -static char *eloq_eloqstore_cloud_store_path= nullptr; -static unsigned int eloq_eloqstore_gc_threads= 1; -static unsigned int eloq_eloqstore_cloud_worker_count= 1; -static unsigned int eloq_eloqstore_data_page_restart_interval= 16; -static unsigned int eloq_eloqstore_index_page_restart_interval= 16; -static unsigned int eloq_eloqstore_init_page_count= 1 << 15; -static my_bool eloq_eloqstore_skip_verify_checksum= false; -static unsigned int eloq_eloqstore_index_buffer_pool_size= 1 << 15; -static unsigned int eloq_eloqstore_manifest_limit= 8 << 20; -static unsigned int eloq_eloqstore_io_queue_size= 4096; -static unsigned int eloq_eloqstore_max_inflight_write= 64 << 10; -static unsigned int eloq_eloqstore_max_write_batch_pages= 256; -static unsigned int eloq_eloqstore_buf_ring_size= 1 << 12; -static unsigned int eloq_eloqstore_coroutine_stack_size= 32 * 1024; -static unsigned int eloq_eloqstore_num_retained_archives= 0; -static unsigned int eloq_eloqstore_archive_interval_secs= 86400; -static unsigned int eloq_eloqstore_max_archive_tasks= 256; -static unsigned int eloq_eloqstore_file_amplify_factor= 4; -static unsigned long long eloq_eloqstore_local_space_limit= 1ULL << 40; -static unsigned int eloq_eloqstore_reserve_space_ratio= 100; -static unsigned int eloq_eloqstore_data_page_size= 1 << 12; -static unsigned int eloq_eloqstore_pages_per_file_shift= 11; -static unsigned int eloq_eloqstore_overflow_pointers= 16; -static my_bool eloq_eloqstore_data_append_mode= false; -#endif const char *enum_var_names[]= {"e1", "e2", NullS}; -const char *kv_storage_names[]= {"dynamo", "bigtable", "eloqds", NullS}; -const char *partition_names[]= {"Hash", "Range", NullS}; - -#define KV_DYNAMO 0 -#define KV_BIGTABLE 1 -#define KV_ELOQDS 2 - -static my_bool eloq_enable_heap_defragment= false; -static my_bool eloq_kickout_data_for_test= false; #define DIRTY_KEY_ID_BEGIN 16 -static MYSQL_SYSVAR_STR(local_ip, eloq_local_ip, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "IP address of the local node", nullptr, nullptr, - "127.0.0.1:8000"); - -static MYSQL_SYSVAR_STR(ip_list, eloq_ip_list, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "IP addresses of the nodes in the cluster", nullptr, - nullptr, "127.0.0.1:8000"); -static MYSQL_SYSVAR_STR(standby_ip_list, eloq_standby_ip_list, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "IP addresses of the standby nodes in the cluster", - nullptr, nullptr, ""); -static MYSQL_SYSVAR_STR(voter_ip_list, eloq_voter_ip_list, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "IP addresses of the voter nodes in the cluster", - nullptr, nullptr, ""); -static MYSQL_SYSVAR_STR(hm_ip, eloq_hm_ip, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "IP addresses of the host manager", nullptr, nullptr, - ""); - -static MYSQL_SYSVAR_STR(hm_bin_path, eloq_hm_bin_path, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "Path to host manager binary path.", nullptr, nullptr, - ""); - -static MYSQL_SYSVAR_STR(cluster_config_file, eloq_cluster_config_file, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "Path to cluster config file.", nullptr, nullptr, ""); - -static MYSQL_SYSVAR_STR(keyspace_name, eloq_keyspace_name, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "Keyspace of KV Storage", nullptr, nullptr, "mono"); -static MYSQL_SYSVAR_UINT(core_num, eloq_core_num, PLUGIN_VAR_RQCMDARG, - "Number of CPU cores", NULL, NULL, 1, 1, 1024, 1); - -static MYSQL_SYSVAR_UINT(range_split_worker_num, eloq_range_split_worker_num, - PLUGIN_VAR_RQCMDARG, "Number of range split worker", - NULL, NULL, 0, 0, 1024, 0); - -static MYSQL_SYSVAR_UINT(bthread_worker_num, eloq_bthread_worker_num, - PLUGIN_VAR_RQCMDARG, - "Number of bthread worker threads", NULL, NULL, 0, 0, - 1024, 0); - -static MYSQL_SYSVAR_UINT(logserver_rocksdb_scan_thread_num, - eloq_logserver_rocksdb_scan_thread_num, - PLUGIN_VAR_RQCMDARG, "Number of rocksdb scan threads", - NULL, NULL, 1, 1, 1024, 1); - -// global metrics -static MYSQL_SYSVAR_BOOL(enable_metrics, eloq_enable_metrics, - PLUGIN_VAR_RQCMDARG, - "When enabled, creates metric registry", NULL, NULL, - FALSE); -// mysql metrics -static MYSQL_SYSVAR_BOOL( - enable_mysql_tx_metrics, eloq_enable_mysql_tx_metrics, PLUGIN_VAR_RQCMDARG, - "Enables or disables the collection of transaction metrics in MySQL.", - NULL, NULL, TRUE); - -static MYSQL_SYSVAR_BOOL( - enable_mysql_dml_metrics, eloq_enable_mysql_dml_metrics, - PLUGIN_VAR_RQCMDARG, - "Enables or disables the collection of DML metrics in MySQL. When set to " - "ON, the plugin will track DML operation metrics such as SELECT, INSERT, " - "UPDATE, DELETE, etc.", - NULL, NULL, TRUE); - -// tx_service metrics -static MYSQL_SYSVAR_BOOL( - enable_tx_metrics, eloq_enable_tx_metrics, PLUGIN_VAR_RQCMDARG, - "Enable or disable transaction metrics for `tx_service` side.", NULL, NULL, - TRUE); - -static MYSQL_SYSVAR_BOOL(enable_cache_hit_rate, eloq_enable_cache_hit_rate, - PLUGIN_VAR_RQCMDARG, - "Enable or disable cache hit rate metrics", NULL, - NULL, TRUE); - -static MYSQL_SYSVAR_BOOL(enable_busy_round_metrics, - eloq_enable_busy_round_metrics, PLUGIN_VAR_RQCMDARG, - "When enabled, collects process transaction requests " - "latency, and process cc " - "requests latency, cc queue length", - NULL, NULL, TRUE); - -static MYSQL_SYSVAR_BOOL(enable_memory_usage, eloq_enable_memory_usage, - PLUGIN_VAR_RQCMDARG, - "Enable or disable memory usage metrics", NULL, NULL, - TRUE); - -static MYSQL_SYSVAR_BOOL( - enable_remote_request_metrics, eloq_enable_remote_request_metrics, - PLUGIN_VAR_RQCMDARG, - "Enable or disable remote request metrics for `tx_service` side.", NULL, - NULL, TRUE); - -static MYSQL_SYSVAR_BOOL( - enable_kv_metrics, eloq_enable_kv_metrics, PLUGIN_VAR_RQCMDARG, - "Enable or disable KV store metrics for `tx_service` side.", NULL, NULL, - TRUE); - -static MYSQL_SYSVAR_ULONGLONG( - busy_round_threshold, eloq_busy_round_threshold, PLUGIN_VAR_RQCMDARG, - "If CC queue length >= `threshold` (default: 10), then the " - "RunOneRound is busy", - NULL, NULL, 10, 1, ULLONG_MAX, 1); - -static MYSQL_SYSVAR_ULONGLONG( - collect_memory_usage_round, eloq_collect_memory_usage_round, - PLUGIN_VAR_RQCMDARG, - "Interval of collecting memory usage. Only " - "works when enable memory usage (default: 10000)", - NULL, NULL, 10000, 0, ULLONG_MAX, 1); - -static MYSQL_SYSVAR_ULONGLONG( - collect_tx_duration_round, eloq_collect_tx_duration_round, - PLUGIN_VAR_RQCMDARG, - "Interval of collecting transaction duration. Only " - "works when enable tx metrics (default: 1)", - NULL, NULL, 1, 0, ULLONG_MAX, 1); - -// log_service metrics -static MYSQL_SYSVAR_BOOL(enable_log_service_metrics, - eloq_enable_log_service_metrics, PLUGIN_VAR_RQCMDARG, - "When enabled, collects log_service metrics.", NULL, - NULL, FALSE); - const char *cc_protocol_names[]= {"OCC", "OccRead", "Locking", NullS}; TYPELIB cc_protocol_typelib= {array_elements(cc_protocol_names) - 1, @@ -592,43 +281,10 @@ static MYSQL_SYSVAR_ENUM(enum_var, // name 0, // def &enum_var_typelib); // typelib -TYPELIB kv_storage_typelib= {array_elements(kv_storage_names) - 1, - "kv_storage_typelib", kv_storage_names, NULL}; - -static MYSQL_SYSVAR_ENUM(kv_storage, // name - eloq_kv_storage, // varname - PLUGIN_VAR_RQCMDARG, // opt - "Supported Key-Value storage", // comment - NULL, // check - NULL, // update - 0, // def - &kv_storage_typelib); // typelib - -static MYSQL_SYSVAR_STR(aws_access_key_id, eloq_aws_access_key_id, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "aws sdk access key id", nullptr, nullptr, ""); - -static MYSQL_SYSVAR_STR(aws_secret_key, eloq_aws_secret_key, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "AWS SDK secret key", nullptr, nullptr, ""); - -static MYSQL_SYSVAR_STR(dynamodb_endpoint, eloq_dynamodb_endpoint, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "Endpoint override of DynamoDB", nullptr, nullptr, ""); - -static MYSQL_SYSVAR_STR(dynamodb_region, eloq_dynamodb_region, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "Region of the used trable in DynamoDB", nullptr, - nullptr, "ap-northeast-1"); - -static MYSQL_SYSVAR_STR(bigtable_project_id, eloq_bigtable_project_id, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "Project id of BigTable", nullptr, nullptr, ""); - -static MYSQL_SYSVAR_STR(bigtable_instance_id, eloq_bigtable_instance_id, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "Instance id of BigTable", nullptr, nullptr, ""); +static MYSQL_SYSVAR_STR(config, eloq_config, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, + "Path to data substrate configuration file.", nullptr, nullptr, + ""); static MYSQL_SYSVAR_STR(insert_semantic, eloq_insert_semantic, PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, "Insert semantic: insert or upsert", nullptr, nullptr, @@ -653,89 +309,10 @@ static MYSQL_THDVAR_ULONG(varopt_default, PLUGIN_VAR_RQCMDARG, "default value of the VAROPT table option", NULL, NULL, 5, 0, 100, 0); -static MYSQL_SYSVAR_UINT(checkpointer_interval_sec, - eloq_checkpointer_interval_sec, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "Interval of checkpointer(s)", NULL, NULL, 10, 1, - 86400, 1); - -static MYSQL_SYSVAR_UINT( - checkpointer_delay_sec, eloq_checkpointer_delay_sec, PLUGIN_VAR_RQCMDARG, - "The time(second) which ckpt_ts is less than min lock ts", NULL, NULL, 5, - 0, 86400, 1); - -static MYSQL_SYSVAR_UINT(collect_active_tx_ts_interval_sec, - eloq_collect_active_tx_ts_interval_sec, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "Interval of collect active tx start timestamp(s)", - NULL, NULL, 2, 1, 86400, 1); -static MYSQL_SYSVAR_BOOL( - realtime_sampling, eloq_realtime_sampling, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "Whether enable realtime sampling. If disable it, user may need execute " - "analyze command at some time. Different from Innodb, Eloq never " - "analyze table automatically.", - NULL, NULL, TRUE); - -static MYSQL_SYSVAR_BOOL( - ddl_skip_kv, eloq_ddl_skip_kv, PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, - "Skip create or drop table on kv store, only used to speed up test case", - NULL, NULL, FALSE); -static MYSQL_SYSVAR_BOOL(skip_redo_log, eloq_skip_redo_log, - PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, - "Skip write redo log in tx_service", NULL, NULL, - FALSE); -static MYSQL_SYSVAR_BOOL( - use_key_cache, eloq_use_key_cache, - PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, - "Use key cache in primary key to avoid kv read if key does not exists.", - NULL, NULL, FALSE); static MYSQL_SYSVAR_BOOL(report_debug_info, eloq_report_debug_info, PLUGIN_VAR_NOCMDARG, "When enabled, report debug information to client", NULL, NULL, FALSE); -static MYSQL_SYSVAR_UINT(node_memory_limit_mb, eloq_node_memory_limit_mb, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "memory limit per node (MB)", NULL, NULL, 8000, 1, - 1000000, 1); -static MYSQL_SYSVAR_UINT(node_log_limit_mb, eloq_node_log_limit_mb, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "log limit per node (MB)", NULL, NULL, 16000, 1, - 1000000, 1); - -static MYSQL_SYSVAR_UINT( - metrics_port, // name - eloq_metrics_port, // varname - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, // opt - "The port on which the metrics_collector is " // comment - "reported. Default is 18081", // comment - NULL, // check - NULL, // update - 18081, // def - 8080, 65535, 1); - -static MYSQL_SYSVAR_BOOL( - enable_mvcc, eloq_enable_mvcc, PLUGIN_VAR_NOCMDARG, - "When enabled, use muliti-versions. Repeatable Read " - "isolation level will be converted to Snapshot isolation level", - NULL, NULL, TRUE); - -TYPELIB partition_typelib= {array_elements(partition_names) - 1, - "partition_typelib", partition_names, NULL}; - -static MYSQL_SYSVAR_ENUM(partition_type, // name - eloq_partition_type, // varname - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, // opt - "Partition type (Hash|Range)", // comment - NULL, // check - NULL, // update - 0, // default(Hash) - &partition_typelib); // typelib - -static MYSQL_SYSVAR_BOOL(enable_heap_defragment, eloq_enable_heap_defragment, - PLUGIN_VAR_NOCMDARG, - "When enabled, report debug information to client", - NULL, NULL, FALSE); int auto_increment_var_check(MYSQL_THD thd, struct st_mysql_sys_var *var, void *save, struct st_mysql_value *value) @@ -767,10 +344,6 @@ static MYSQL_SYSVAR_STR(auto_increment, eloq_auto_increment, "auto increment parameters", auto_increment_var_check, NULL, ""); -static MYSQL_SYSVAR_BOOL(kickout_data_for_test, eloq_kickout_data_for_test, - PLUGIN_VAR_NOCMDARG, "Clean data for test", NULL, - NULL, FALSE); - static int invalidate_table_cache(MYSQL_THD thd, const std::vector &invalidate_tables); @@ -842,479 +415,24 @@ static MYSQL_SYSVAR_STR( "Evict caches for given tables. Mainly used after physical importing.", invalidate_cache_once_var_check, NULL, ""); -static MYSQL_SYSVAR_BOOL( - scan_skip_kv, eloq_scan_skip_kv, PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, - "Skip access kv store for scan request, only used to speed up test case", - NULL, NULL, FALSE); - static MYSQL_SYSVAR_BOOL(random_scan_sort, eloq_random_scan_sort, PLUGIN_VAR_OPCMDARG, "Sort output result when executing random scan, only " "used to run test case", NULL, NULL, FALSE); -static MYSQL_SYSVAR_UINT(deadlock_interval_sec, eloq_deadlock_interval_sec, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "Interval of dead lock check(s)", NULL, NULL, 300, 1, - 3600, 1); -static MYSQL_SYSVAR_STR(txlog_rocksdb_storage_path, - eloq_txlog_rocksdb_storage_path, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "The path for tx log service rocksdb storage", nullptr, - nullptr, ""); -static MYSQL_SYSVAR_STR(txlog_service_list, eloq_txlog_service_list, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "Ip address of the tx log service node", nullptr, - nullptr, ""); - -static MYSQL_SYSVAR_UINT(txlog_group_replica_num, eloq_txlog_group_replica_num, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "Replicate number of tx log group", NULL, NULL, 3, 1, - 10, 1); - static MYSQL_SYSVAR_INT(signal_monitor, eloq_signal_monitor, PLUGIN_VAR_RQCMDARG, "Monitor mysql crash signal", nullptr, nullptr, 0, 0, INT_MAX, 0); -static MYSQL_SYSVAR_STR(txlog_rocksdb_cloud_bucket_name, - eloq_txlog_rocksdb_cloud_bucket_name, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB cloud bucket name", NULL, NULL, ""); -static MYSQL_SYSVAR_STR(txlog_rocksdb_cloud_bucket_prefix, - eloq_txlog_rocksdb_cloud_bucket_prefix, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB cloud bucket prefix", NULL, NULL, ""); -static MYSQL_SYSVAR_STR(txlog_rocksdb_cloud_object_path, - eloq_txlog_rocksdb_cloud_object_path, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB cloud object path", NULL, NULL, - "rocksdb_cloud"); -static MYSQL_SYSVAR_STR(txlog_rocksdb_cloud_region, - eloq_txlog_rocksdb_cloud_region, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB cloud region", NULL, NULL, ""); -static MYSQL_SYSVAR_STR(txlog_rocksdb_cloud_endpoint_url, - eloq_txlog_rocksdb_cloud_endpoint_url, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB Cloud endpoint URL", NULL, NULL, ""); -static MYSQL_SYSVAR_STR(txlog_rocksdb_cloud_sst_file_cache_size, - eloq_txlog_rocksdb_cloud_sst_file_cache_size, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB Cloud SST file cache size", NULL, NULL, - "10GB"); -static MYSQL_SYSVAR_INT(txlog_rocksdb_cloud_sst_file_cache_num_shard_bits, - eloq_txlog_rocksdb_cloud_sst_file_cache_num_shard_bits, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB Cloud SST file cache num shard bits", - NULL, NULL, 5, 0, 30, 1); -static MYSQL_SYSVAR_STR(txlog_rocksdb_target_file_size_base, - eloq_txlog_rocksdb_target_file_size_base, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB target file size", NULL, NULL, "64MB"); -static MYSQL_SYSVAR_STR(txlog_rocksdb_sst_files_size_limit, - eloq_txlog_rocksdb_sst_files_size_limit, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB sst files size limit", NULL, NULL, - "500MB"); -static MYSQL_SYSVAR_UINT(txlog_rocksdb_cloud_ready_timeout, - eloq_txlog_rocksdb_cloud_ready_timeout, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB Cloud becomes ready timeout(seconds)", - NULL, NULL, 10, 1, 120, 1); -static MYSQL_SYSVAR_UINT(txlog_rocksdb_cloud_file_deletion_delay, - eloq_txlog_rocksdb_cloud_file_deletion_delay, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "TxLog RocksDB Cloud becomes ready timeout", NULL, - NULL, 60, 1, 3600, 1); -static MYSQL_SYSVAR_UINT(node_group_replica_num, eloq_node_group_replica_num, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "Replicate number of node group(Max: 9)", NULL, NULL, - 3, 1, 9, 1); -static MYSQL_SYSVAR_UINT(logserver_snapshot_interval, - eloq_logserver_snapshot_interval, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "Logserver log state snapshot interval", NULL, NULL, - 600, 10, 7200, 1); -static MYSQL_SYSVAR_UINT( - txlog_rocksdb_cloud_in_mem_log_high_watermark, - eloq_txlog_rocksdb_cloud_in_mem_log_size_high_watermark, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "TxLog RocksDB Cloud in memory log queue high watermark", NULL, NULL, - 50 * 10000, 10000, 1000 * 10000, 1); -static MYSQL_SYSVAR_UINT(txlog_rocksdb_max_write_buffer_number, - eloq_txlog_rocksdb_max_write_buffer_number, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "TxLog RocksDB max write buffer number", NULL, NULL, - 8, 4, 100, 1); -static MYSQL_SYSVAR_UINT(txlog_rocksdb_max_background_jobs, - eloq_txlog_rocksdb_max_background_jobs, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "TxLog RocksDB max background jobs", NULL, NULL, 8, 4, - 100, 1); - -static MYSQL_SYSVAR_BOOL(enable_txlog_request_checkpoint, - eloq_enable_txlog_request_checkpoint, - PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY, - "Enable txlog server sending checkpoint requests " - "when the criteria are met.", - NULL, NULL, TRUE); - -static MYSQL_SYSVAR_UINT(check_replay_log_size_interval_sec, - eloq_check_replay_log_size_interval_sec, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "The interval for checking replay log size.", NULL, - NULL, 10, 10, UINT_MAX, 1); - -static MYSQL_SYSVAR_STR( - notify_checkpointer_threshold_size, - eloq_notify_checkpointer_threshold_size, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "When the replay log size reaches this threshold, the " - "txlog server sends a checkpoint request to tx_service.", - NULL, NULL, "1GB"); - -static MYSQL_SYSVAR_STR(dss_config_file_path, eloq_dss_config_file_path, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService config file path", NULL, NULL, - ""); -static MYSQL_SYSVAR_STR(dss_peer_node, eloq_dss_peer_node, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService peer node endpoint", NULL, NULL, - ""); -static MYSQL_SYSVAR_STR(dss_branch_name, eloq_dss_branch_name, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService branch name, specifying the " - "branch to start the data store service", - NULL, NULL, ""); - -static MYSQL_SYSVAR_STR(dss_rocksdb_cloud_bucket_name, - eloq_dss_rocksdb_cloud_bucket_name, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB cloud bucket name", NULL, - NULL, ""); -static MYSQL_SYSVAR_STR(dss_rocksdb_cloud_bucket_prefix, - eloq_dss_rocksdb_cloud_bucket_prefix, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB cloud bucket prefix", - NULL, NULL, ""); -static MYSQL_SYSVAR_STR(dss_rocksdb_cloud_object_path, - eloq_dss_rocksdb_cloud_object_path, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB cloud object path", NULL, - NULL, "rocksdb_cloud"); -static MYSQL_SYSVAR_STR(dss_rocksdb_cloud_region, - eloq_dss_rocksdb_cloud_region, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB cloud region", NULL, - NULL, ""); -static MYSQL_SYSVAR_STR(dss_rocksdb_cloud_endpoint_url, - eloq_dss_rocksdb_cloud_endpoint_url, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB Cloud endpoint URL", - NULL, NULL, ""); -static MYSQL_SYSVAR_STR( - dss_rocksdb_cloud_sst_file_cache_size, - eloq_dss_rocksdb_cloud_sst_file_cache_size, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB Cloud SST file cache size", NULL, NULL, - "10GB"); -static MYSQL_SYSVAR_INT( - dss_rocksdb_cloud_sst_file_cache_num_shard_bits, - eloq_dss_rocksdb_cloud_sst_file_cache_num_shard_bits, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB Cloud SST file cache num shard bits", NULL, - NULL, 5, 0, 30, 1); -static MYSQL_SYSVAR_STR(dss_rocksdb_target_file_size_base, - eloq_dss_rocksdb_target_file_size_base, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB target file size", NULL, - NULL, "64MB"); -static MYSQL_SYSVAR_UINT( - dss_rocksdb_cloud_purger_periodicity_secs, - eloq_dss_rocksdb_cloud_purger_periodicity_secs, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB Cloud purger periodcity seconds", NULL, NULL, - 600, 1, UINT_MAX, 1); - -static MYSQL_SYSVAR_UINT( - dss_rocksdb_cloud_file_deletion_delay, - eloq_dss_rocksdb_cloud_file_deletion_delay, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqDataStoreService RocksDB Cloud becomes ready timeout", NULL, NULL, 60, - 1, 3600, 1); -static MYSQL_SYSVAR_UINT( - dss_rocksdb_max_write_buffer_number, - eloq_dss_rocksdb_max_write_buffer_number, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqDataStoreService RocksDB max write buffer number", NULL, NULL, 8, 4, - 100, 1); -static MYSQL_SYSVAR_UINT(dss_rocksdb_max_background_jobs, - eloq_dss_rocksdb_max_background_jobs, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqDataStoreService RocksDB max background jobs", - NULL, NULL, 8, 4, 100, 1); -#if defined(DATA_STORE_TYPE_ELOQDSS_ELOQSTORE) -static MYSQL_SYSVAR_UINT(eloqstore_worker_num, eloq_eloqstore_worker_num, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore server worker num.", NULL, NULL, 1, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_STR( - eloqstore_data_path_list, eloq_eloqstore_data_path_list, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY | PLUGIN_VAR_MEMALLOC, - "The data paths of the EloqStore (use memory store if empty).", NULL, NULL, - ""); -static MYSQL_SYSVAR_UINT(eloqstore_open_files_limit, - eloq_eloqstore_open_files_limit, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore server max open files.", NULL, NULL, 1024, - 1, UINT_MAX, 1); -static MYSQL_SYSVAR_STR( - eloqstore_cloud_store_path, eloq_eloqstore_cloud_store_path, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC, - "EloqStore cloud store path (disable cloud store if empty)", NULL, NULL, - ""); -static MYSQL_SYSVAR_UINT(eloqstore_gc_threads, eloq_eloqstore_gc_threads, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore server gc threads count (Must be 0 when " - "cloud store is enabled).", - NULL, NULL, 1, 0, UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_cloud_worker_count, - eloq_eloqstore_cloud_worker_count, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore server cloud worker count", NULL, NULL, 1, - 1, UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_data_page_restart_interval, - eloq_eloqstore_data_page_restart_interval, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore data page restart interval", NULL, NULL, - 16, 1, UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_index_page_restart_interval, - eloq_eloqstore_index_page_restart_interval, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore index page restart interval", NULL, NULL, - 16, 1, UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_init_page_count, - eloq_eloqstore_init_page_count, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore init page count", NULL, NULL, 1 << 15, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_BOOL(eloqstore_skip_verify_checksum, - eloq_eloqstore_skip_verify_checksum, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore skip verify checksum", NULL, NULL, FALSE); -static MYSQL_SYSVAR_UINT(eloqstore_index_buffer_pool_size, - eloq_eloqstore_index_buffer_pool_size, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore index buffer pool size", NULL, NULL, - 1 << 15, 1, UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_manifest_limit, - eloq_eloqstore_manifest_limit, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore manifest limit", NULL, NULL, 8 << 20, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_io_queue_size, eloq_eloqstore_io_queue_size, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore io queue size", NULL, NULL, 4096, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_max_inflight_write, - eloq_eloqstore_max_inflight_write, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore max inflight write", NULL, NULL, 64 << 10, - 1, UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_max_write_batch_pages, - eloq_eloqstore_max_write_batch_pages, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore max write batch pages", NULL, NULL, 256, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_buf_ring_size, eloq_eloqstore_buf_ring_size, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore buf ring size", NULL, NULL, 1 << 12, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_coroutine_stack_size, - eloq_eloqstore_coroutine_stack_size, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore coroutine stack size", NULL, NULL, - 32 * 1024, 1, UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_num_retained_archives, - eloq_eloqstore_num_retained_archives, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore num retained archives", NULL, NULL, 0, 0, - UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_archive_interval_secs, - eloq_eloqstore_archive_interval_secs, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore archive interval secs", NULL, NULL, 86400, - 1, UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_max_archive_tasks, - eloq_eloqstore_max_archive_tasks, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore max archive tasks", NULL, NULL, 256, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_file_amplify_factor, - eloq_eloqstore_file_amplify_factor, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore file amplify factor", NULL, NULL, 4, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_ULONGLONG(eloqstore_local_space_limit, - eloq_eloqstore_local_space_limit, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore local space limit", NULL, NULL, - 1ULL << 40, 1, ULONGLONG_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_reserve_space_ratio, - eloq_eloqstore_reserve_space_ratio, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore reserve space ratio", NULL, NULL, 100, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_data_page_size, - eloq_eloqstore_data_page_size, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore data page size", NULL, NULL, 1 << 12, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_pages_per_file_shift, - eloq_eloqstore_pages_per_file_shift, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore pages per file shift", NULL, NULL, 11, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_UINT(eloqstore_overflow_pointers, - eloq_eloqstore_overflow_pointers, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore overflow pointers", NULL, NULL, 16, 1, - UINT_MAX, 1); -static MYSQL_SYSVAR_BOOL(eloqstore_data_append_mode, - eloq_eloqstore_data_append_mode, - PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY, - "EloqStore data append mode", NULL, NULL, FALSE); -#endif - static struct st_mysql_sys_var *eloq_system_variables[]= { - MYSQL_SYSVAR(local_ip), - MYSQL_SYSVAR(ip_list), - MYSQL_SYSVAR(standby_ip_list), - MYSQL_SYSVAR(voter_ip_list), - MYSQL_SYSVAR(hm_ip), - MYSQL_SYSVAR(keyspace_name), - MYSQL_SYSVAR(dynamodb_endpoint), - MYSQL_SYSVAR(core_num), - MYSQL_SYSVAR(cc_protocol), - MYSQL_SYSVAR(enum_var), - MYSQL_SYSVAR(kv_storage), - MYSQL_SYSVAR(dynamodb_region), - MYSQL_SYSVAR(aws_access_key_id), - MYSQL_SYSVAR(aws_secret_key), - MYSQL_SYSVAR(bigtable_project_id), - MYSQL_SYSVAR(bigtable_instance_id), - MYSQL_SYSVAR(ulong_var), - MYSQL_SYSVAR(int_var), - MYSQL_SYSVAR(double_var), - MYSQL_SYSVAR(double_thdvar), - MYSQL_SYSVAR(varopt_default), - MYSQL_SYSVAR(checkpointer_interval_sec), - MYSQL_SYSVAR(checkpointer_delay_sec), - MYSQL_SYSVAR(collect_active_tx_ts_interval_sec), - MYSQL_SYSVAR(realtime_sampling), - MYSQL_SYSVAR(insert_semantic), - MYSQL_SYSVAR(ddl_skip_kv), - MYSQL_SYSVAR(skip_redo_log), - MYSQL_SYSVAR(use_key_cache), - MYSQL_SYSVAR(auto_increment), - MYSQL_SYSVAR(kickout_data_for_test), - MYSQL_SYSVAR(invalidate_cache_once), - MYSQL_SYSVAR(scan_skip_kv), - MYSQL_SYSVAR(random_scan_sort), - MYSQL_SYSVAR(report_debug_info), - MYSQL_SYSVAR(node_memory_limit_mb), - MYSQL_SYSVAR(node_log_limit_mb), - MYSQL_SYSVAR(enable_mvcc), - MYSQL_SYSVAR(metrics_port), - MYSQL_SYSVAR(deadlock_interval_sec), - MYSQL_SYSVAR(txlog_rocksdb_storage_path), - MYSQL_SYSVAR(txlog_service_list), - MYSQL_SYSVAR(txlog_group_replica_num), - MYSQL_SYSVAR(signal_monitor), - MYSQL_SYSVAR(partition_type), - MYSQL_SYSVAR(enable_metrics), - MYSQL_SYSVAR(enable_mysql_tx_metrics), - MYSQL_SYSVAR(enable_mysql_dml_metrics), - MYSQL_SYSVAR(enable_tx_metrics), - MYSQL_SYSVAR(enable_cache_hit_rate), - MYSQL_SYSVAR(enable_memory_usage), - MYSQL_SYSVAR(enable_busy_round_metrics), - MYSQL_SYSVAR(enable_remote_request_metrics), - MYSQL_SYSVAR(enable_kv_metrics), - MYSQL_SYSVAR(busy_round_threshold), - MYSQL_SYSVAR(collect_memory_usage_round), - MYSQL_SYSVAR(collect_tx_duration_round), - MYSQL_SYSVAR(enable_log_service_metrics), - MYSQL_SYSVAR(txlog_rocksdb_cloud_bucket_name), - MYSQL_SYSVAR(txlog_rocksdb_cloud_bucket_prefix), - MYSQL_SYSVAR(txlog_rocksdb_cloud_object_path), - MYSQL_SYSVAR(txlog_rocksdb_cloud_region), - MYSQL_SYSVAR(txlog_rocksdb_cloud_sst_file_cache_size), - MYSQL_SYSVAR(txlog_rocksdb_cloud_sst_file_cache_num_shard_bits), - MYSQL_SYSVAR(txlog_rocksdb_cloud_endpoint_url), - MYSQL_SYSVAR(txlog_rocksdb_target_file_size_base), - MYSQL_SYSVAR(txlog_rocksdb_sst_files_size_limit), - MYSQL_SYSVAR(txlog_rocksdb_cloud_ready_timeout), - MYSQL_SYSVAR(txlog_rocksdb_cloud_file_deletion_delay), - MYSQL_SYSVAR(node_group_replica_num), - MYSQL_SYSVAR(logserver_snapshot_interval), - MYSQL_SYSVAR(logserver_rocksdb_scan_thread_num), - MYSQL_SYSVAR(txlog_rocksdb_cloud_in_mem_log_high_watermark), - MYSQL_SYSVAR(txlog_rocksdb_max_write_buffer_number), - MYSQL_SYSVAR(txlog_rocksdb_max_background_jobs), - MYSQL_SYSVAR(enable_txlog_request_checkpoint), - MYSQL_SYSVAR(check_replay_log_size_interval_sec), - MYSQL_SYSVAR(notify_checkpointer_threshold_size), - MYSQL_SYSVAR(range_split_worker_num), - MYSQL_SYSVAR(bthread_worker_num), - MYSQL_SYSVAR(hm_bin_path), - MYSQL_SYSVAR(cluster_config_file), - MYSQL_SYSVAR(enable_heap_defragment), - MYSQL_SYSVAR(dss_config_file_path), - MYSQL_SYSVAR(dss_peer_node), - MYSQL_SYSVAR(dss_branch_name), - MYSQL_SYSVAR(dss_rocksdb_cloud_bucket_name), - MYSQL_SYSVAR(dss_rocksdb_cloud_bucket_prefix), - MYSQL_SYSVAR(dss_rocksdb_cloud_object_path), - MYSQL_SYSVAR(dss_rocksdb_cloud_region), - MYSQL_SYSVAR(dss_rocksdb_cloud_sst_file_cache_size), - MYSQL_SYSVAR(dss_rocksdb_cloud_sst_file_cache_num_shard_bits), - MYSQL_SYSVAR(dss_rocksdb_cloud_endpoint_url), - MYSQL_SYSVAR(dss_rocksdb_target_file_size_base), - MYSQL_SYSVAR(dss_rocksdb_cloud_purger_periodicity_secs), - MYSQL_SYSVAR(dss_rocksdb_cloud_file_deletion_delay), - MYSQL_SYSVAR(dss_rocksdb_max_write_buffer_number), - MYSQL_SYSVAR(dss_rocksdb_max_background_jobs), -#if defined(DATA_STORE_TYPE_ELOQDSS_ELOQSTORE) - MYSQL_SYSVAR(eloqstore_worker_num), - MYSQL_SYSVAR(eloqstore_data_path_list), - MYSQL_SYSVAR(eloqstore_open_files_limit), - MYSQL_SYSVAR(eloqstore_cloud_store_path), - MYSQL_SYSVAR(eloqstore_gc_threads), - MYSQL_SYSVAR(eloqstore_cloud_worker_count), - MYSQL_SYSVAR(eloqstore_data_page_restart_interval), - MYSQL_SYSVAR(eloqstore_index_page_restart_interval), - MYSQL_SYSVAR(eloqstore_init_page_count), - MYSQL_SYSVAR(eloqstore_skip_verify_checksum), - MYSQL_SYSVAR(eloqstore_index_buffer_pool_size), - MYSQL_SYSVAR(eloqstore_manifest_limit), - MYSQL_SYSVAR(eloqstore_io_queue_size), - MYSQL_SYSVAR(eloqstore_max_inflight_write), - MYSQL_SYSVAR(eloqstore_max_write_batch_pages), - MYSQL_SYSVAR(eloqstore_buf_ring_size), - MYSQL_SYSVAR(eloqstore_coroutine_stack_size), - MYSQL_SYSVAR(eloqstore_num_retained_archives), - MYSQL_SYSVAR(eloqstore_archive_interval_secs), - MYSQL_SYSVAR(eloqstore_max_archive_tasks), - MYSQL_SYSVAR(eloqstore_file_amplify_factor), - MYSQL_SYSVAR(eloqstore_local_space_limit), - MYSQL_SYSVAR(eloqstore_reserve_space_ratio), - MYSQL_SYSVAR(eloqstore_data_page_size), - MYSQL_SYSVAR(eloqstore_pages_per_file_shift), - MYSQL_SYSVAR(eloqstore_overflow_pointers), - MYSQL_SYSVAR(eloqstore_data_append_mode), -#endif - NULL}; + MYSQL_SYSVAR(cc_protocol), MYSQL_SYSVAR(enum_var), + MYSQL_SYSVAR(ulong_var), MYSQL_SYSVAR(int_var), + MYSQL_SYSVAR(double_var), MYSQL_SYSVAR(double_thdvar), + MYSQL_SYSVAR(varopt_default), MYSQL_SYSVAR(insert_semantic), + MYSQL_SYSVAR(auto_increment), MYSQL_SYSVAR(invalidate_cache_once), + MYSQL_SYSVAR(random_scan_sort), MYSQL_SYSVAR(report_debug_info), + MYSQL_SYSVAR(signal_monitor), MYSQL_SYSVAR(config), NULL}; /** Structure for CREATE TABLE options (table options). @@ -1440,15 +558,9 @@ static void init_eloq_psi_keys() {} static const char *ha_eloq_exts[]= {NullS}; uint32_t node_id= 0; // node id of itself -std::unique_ptr storage_hd= nullptr; - -#if ELOQDS -std::unique_ptr data_store_service_; -#endif - -static std::unique_ptr tx_service= nullptr; -static std::unique_ptr<::txlog::LogServer> txlog_server= nullptr; -static MariaCatalogFactory maria_catalog_factory{}; +static TxService *tx_service= nullptr; +static ::txlog::LogServer *txlog_server= nullptr; +store::DataStoreHandler *storage_hd= nullptr; // insert semantic will check unique of primary key, while upsert semantic will // update the duplicated entry. bool is_insert_semantic_= true; @@ -1564,7 +676,7 @@ static bool fetch_tx_isolation_level(THD *const thd, CcProtocol cc_protocol, // eloq can distinguish there two different isolation levels. To make // it consistent with Mysql, we convert user set RepeatableRead isolation // level to Snapshot Isolation if mvcc is enabled in Eloq engine. - if (eloq_enable_mvcc) + if (DataSubstrate::GetGlobal()->GetCoreConfig().enable_mvcc) { iso_level= IsolationLevel::Snapshot; } @@ -1623,7 +735,7 @@ static bool get_or_create_myeloq_tx(THD *const thd, MyEloqTx **my_tx, int16_t thd_group_id= thd_get_group_id(thd); auto [yield_func, resume_func]= thd_get_coro_functors(thd); txservice::TransactionExecution *txm= - txservice::NewTxInit(tx_service.get(), iso_level, cc_proto, UINT32_MAX, + txservice::NewTxInit(tx_service, iso_level, cc_proto, UINT32_MAX, thd_group_id, start_now, yield_func, resume_func); (*my_tx)->Reset(txm, thd); @@ -1648,8 +760,8 @@ static bool get_or_create_myeloq_tx(THD *const thd, MyEloqTx **my_tx, // A help function to drop table, outside of MariaDB context. static void drop_table(const std::string &table_name_str) { - TransactionExecution *txm= NewTxInit( - tx_service.get(), IsolationLevel::Serializable, CcProtocol::Locking); + TransactionExecution *txm= + NewTxInit(tx_service, IsolationLevel::Serializable, CcProtocol::Locking); if (txm) { // All tables in mariadb_tables are of TableType::Primary @@ -2241,7 +1353,7 @@ static void eloq_pre_shutdown(void) // MariaSystemHandler::ReloadCache() may create a temporary THD, whose // constructor depends on global_system_variables.table_plugin. However, it // will be set to NULL during plugin_shutdown(). - MariaSystemHandler::Instance().Shutdown(); + // MariaSystemHandler::Instance().Shutdown(); DBUG_VOID_RETURN; } @@ -2290,163 +1402,48 @@ static void PrintEloqConfig() std::cout << std::endl; } -#if defined(DATA_STORE_TYPE_DYNAMODB) || defined(LOG_STATE_TYPE_RKDB_S3) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) - -Aws::SDKOptions aws_options; - -static int aws_init() -{ - DBUG_ENTER("aws_init"); -#if !defined(DBUG_OFF) - aws_options.loggingOptions.logLevel= Aws::Utils::Logging::LogLevel::Debug; -#else - aws_options.loggingOptions.logLevel= Aws::Utils::Logging::LogLevel::Info; -#endif - Aws::InitAPI(aws_options); - DBUG_RETURN(0); -} - -static int aws_deinit() -{ - DBUG_ENTER("aws_deinit"); - Aws::ShutdownAPI(aws_options); - DBUG_RETURN(0); -} -#endif - -/*Free any resources that were allocated and return failure. -@return always return 1 */ -static int eloq_init_abort() -{ - DBUG_ENTER("eloq_init_abort"); - - if (txlog_server != nullptr) - { - txlog_server= nullptr; // stop and release txlog service - } - -#if defined(DATA_STORE_TYPE_DYNAMODB) || defined(LOG_STATE_TYPE_RKDB_S3) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) - aws_deinit(); -#endif - - DBUG_RETURN(1); -} - -#if defined(DATA_STORE_TYPE_ELOQDSS_ELOQSTORE) -/** - * Configure EloqStore settings for the data store service - * @param eloq_store_config Reference to EloqStoreConfig to be configured - * @param dss_data_path Base data path for the data store service - */ -static void configure_eloq_store(EloqDS::EloqStoreConfig &eloq_store_config, - const std::string &dss_data_path) -{ - eloq_store_config.eloqstore_configs_.num_threads= - std::max(eloq_eloqstore_worker_num, 1U); - - std::string storage_path_list(eloq_eloqstore_data_path_list); - if (!storage_path_list.empty()) - { - EloqDS::EloqStoreConfig::ParseStoragePath( - storage_path_list, eloq_store_config.eloqstore_configs_.store_path); - } - else - { - eloq_store_config.eloqstore_configs_.store_path.emplace_back() - .append(dss_data_path) - .append("/eloqstore"); - } - - eloq_store_config.eloqstore_configs_.fd_limit= - eloq_eloqstore_open_files_limit; - eloq_store_config.eloqstore_configs_.cloud_store_path= - eloq_eloqstore_cloud_store_path; - eloq_store_config.eloqstore_configs_.num_gc_threads= - !eloq_store_config.eloqstore_configs_.cloud_store_path.empty() - ? 0 - : eloq_eloqstore_gc_threads; - eloq_store_config.eloqstore_configs_.rclone_threads= - eloq_eloqstore_cloud_worker_count; - - LOG_IF(INFO, !eloq_store_config.eloqstore_configs_.cloud_store_path.empty()) - << "EloqStore cloud store enabled."; - - eloq_store_config.eloqstore_configs_.data_page_restart_interval= - eloq_eloqstore_data_page_restart_interval; - eloq_store_config.eloqstore_configs_.index_page_restart_interval= - eloq_eloqstore_index_page_restart_interval; - eloq_store_config.eloqstore_configs_.init_page_count= - eloq_eloqstore_init_page_count; - eloq_store_config.eloqstore_configs_.skip_verify_checksum= - eloq_eloqstore_skip_verify_checksum; - eloq_store_config.eloqstore_configs_.index_buffer_pool_size= - eloq_eloqstore_index_buffer_pool_size / - eloq_store_config.eloqstore_configs_.num_threads; - eloq_store_config.eloqstore_configs_.manifest_limit= - eloq_eloqstore_manifest_limit; - eloq_store_config.eloqstore_configs_.io_queue_size= - eloq_eloqstore_io_queue_size / - eloq_store_config.eloqstore_configs_.num_threads; - eloq_store_config.eloqstore_configs_.max_inflight_write= - eloq_eloqstore_max_inflight_write / - eloq_store_config.eloqstore_configs_.num_threads; - eloq_store_config.eloqstore_configs_.max_write_batch_pages= - eloq_eloqstore_max_write_batch_pages; - eloq_store_config.eloqstore_configs_.buf_ring_size= - eloq_eloqstore_buf_ring_size; - eloq_store_config.eloqstore_configs_.coroutine_stack_size= - eloq_eloqstore_coroutine_stack_size; - eloq_store_config.eloqstore_configs_.num_retained_archives= - eloq_eloqstore_num_retained_archives; - eloq_store_config.eloqstore_configs_.archive_interval_secs= - eloq_eloqstore_archive_interval_secs; - eloq_store_config.eloqstore_configs_.max_archive_tasks= - eloq_eloqstore_max_archive_tasks; - eloq_store_config.eloqstore_configs_.file_amplify_factor= - eloq_eloqstore_file_amplify_factor; - eloq_store_config.eloqstore_configs_.local_space_limit= - eloq_eloqstore_local_space_limit / - eloq_store_config.eloqstore_configs_.num_threads; - eloq_store_config.eloqstore_configs_.reserve_space_ratio= - eloq_eloqstore_reserve_space_ratio; - eloq_store_config.eloqstore_configs_.data_page_size= - eloq_eloqstore_data_page_size; - eloq_store_config.eloqstore_configs_.pages_per_file_shift= - eloq_eloqstore_pages_per_file_shift; - eloq_store_config.eloqstore_configs_.overflow_pointers= - eloq_eloqstore_overflow_pointers; - eloq_store_config.eloqstore_configs_.data_append_mode= - eloq_eloqstore_data_append_mode; -} -#endif - static int eloq_init_func(void *p) { DBUG_ENTER_FUNC(); PrintEloqConfig(); - CatalogFactory *catalog_factory[3]{&maria_catalog_factory, nullptr, nullptr}; - sql_print_information("Eloq initializing."); -#if defined(DATA_STORE_TYPE_DYNAMODB) || defined(LOG_STATE_TYPE_RKDB_S3) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) - if (aws_init()) - { - sql_print_error("Eloq failed to initialize AWS SDK."); - DBUG_RETURN(1); - } -#endif - // add mono collation and mono mem cmp mutex to psi definition init_eloq_psi_keys(); mysql_mutex_init(mono_collation_data_mutex_key, &mono_collation_data_mutex, MY_MUTEX_INIT_FAST); mysql_mutex_init(mono_mem_cmp_space_mutex_key, &mono_mem_cmp_space_mutex, MY_MUTEX_INIT_FAST); + eloqsql_system_handler= &MyEloq::MariaSystemHandler::Instance(); +#ifdef MYSQLD_LIBRARY_MODE + // In library mode (converged binary), use synchronization: + // 1. Signal that MySQL basic initialization is done + // 2. Wait for data substrate to be initialized by converged main + { + std::unique_lock lock(mysqld_converged_sync::init_mutex); + mysqld_converged_sync::mysqld_basic_init_done= true; + mysqld_converged_sync::mysqld_basic_init_done_cv.notify_one(); + + LOG(INFO) << "MySQL basic initialization complete, waiting for data " + "substrate..."; + + // Wait for data substrate initialization to complete + mysqld_converged_sync::data_substrate_init_done_cv.wait( + lock, [] { return mysqld_converged_sync::data_substrate_init_done; }); + + LOG(INFO) << "Data substrate initialized, MySQL continuing..."; + } +#else + // Set the data substrate data path to mysql home directory in standalone mode. + FLAGS_eloq_data_path= mysql_real_data_home_ptr; + // In standalone mode, initialize data substrate here + // Wait for mysqld to initialize before initializing data substrate + // as data substrate may need to access some mysqld variables during replay. + LOG(INFO) << "Standalone mode: Initializing data substrate..."; + DataSubstrate::InitializeGlobal(eloq_config); +#endif eloq_hton= (handlerton *) p; eloq_hton->create= eloq_create_handler; @@ -2472,27 +1469,14 @@ static int eloq_init_func(void *p) is_insert_semantic_= false; } - node_id= 0; - uint16_t local_port= 8000; - std::string local_ip; - - // parse the eloq config. - std::string local_ip_str(eloq_local_ip); - size_t idx= local_ip_str.find_first_of(':'); - - if (idx == std::string::npos) - { - local_ip= local_ip_str; - local_port= 8000; - local_ip_str.append(":8000"); - } - else - { - local_ip= local_ip_str.substr(0, idx); - local_port= std::stoi(local_ip_str.substr(idx + 1)); - } + tx_service= DataSubstrate::GetGlobal()->GetTxService(); + txlog_server= DataSubstrate::GetGlobal()->GetLogServer(); + storage_hd= DataSubstrate::GetGlobal()->GetStoreHandler(); - sql_print_information("MariaDB Node address: %s", local_ip_str.c_str()); + node_id= DataSubstrate::GetGlobal()->GetNetworkConfig().node_id; +#ifdef EXT_TX_PROC_ENABLED + get_tx_service_functors= tx_service->GetTxProcFunctors(); +#endif sql_print_information("MariaDB data home: %s", mysql_real_data_home_ptr); // initialize monogrpah specific error message. @@ -2502,581 +1486,7 @@ static int eloq_init_func(void *p) { // NO_LINT_DEBUG sql_print_error("EloqDB: Couldn't initialize error messages"); - DBUG_RETURN(eloq_init_abort()); - } - - std::string local_path("local://"); - local_path.append(mysql_real_data_home_ptr); - if (local_path.at(local_path.size() - 1) == '/') - { - local_path.erase(local_path.size() - 1); - } - - // Read host manager address - std::string hm_ip(""); - uint16_t hm_port; - std::string hm_bin_path(eloq_hm_bin_path); - - std::string cluster_config_file(eloq_cluster_config_file); - if (cluster_config_file.empty()) - { - cluster_config_file.append(mysql_real_data_home_ptr); - cluster_config_file.append("/tx_service/cluster_config"); - } - - // bootstrap is done in standalone mode and does not need host manager. - if (!opt_bootstrap) - { - std::string hm_ip_str(eloq_hm_ip); - idx= hm_ip_str.find_first_of(':'); - if (idx != std::string::npos) - { - hm_ip= hm_ip_str.substr(0, idx); - hm_port= std::stoi(hm_ip_str.substr(idx + 1)); - } -#ifdef FORK_HM_PROCESS - else - { - hm_ip= local_ip; - hm_port= local_port + 4; - } - if (hm_bin_path.empty()) - { - char path_buf[PATH_MAX]; - ssize_t len= ::readlink("/proc/self/exe", path_buf, sizeof(path_buf)); - len-= strlen("/mariadbd"); - path_buf[len]= '\0'; - hm_bin_path= std::string(path_buf, len); - hm_bin_path.append("/host_manager"); - } -#endif - } - else - { - // No need to enable log in bootstrap. - eloq_skip_redo_log= true; - } - -#ifdef ELOQ_MODULE_ENABLED - GFLAGS_NAMESPACE::SetCommandLineOption( - "bthread_concurrency", std::to_string(eloq_core_num).c_str()); - GFLAGS_NAMESPACE::SetCommandLineOption("use_pthread_event_dispatcher", - "true"); - int busy_time= 10000; - GFLAGS_NAMESPACE::SetCommandLineOption("worker_polling_time_us", - std::to_string(busy_time).c_str()); -#endif - - std::unordered_map> ng_configs; - uint64_t cluster_config_version= 2; - - std::string store_keyspace_name(eloq_keyspace_name); - - if (opt_bootstrap) - { - // When execute mysql_install_db.sh, eloq should run in solo mode. - std::vector solo_config; - solo_config.emplace_back(0, local_ip, local_port); - ng_configs.try_emplace(0, std::move(solo_config)); - } - else if (!txservice::ReadClusterConfigFile(cluster_config_file, ng_configs, - cluster_config_version)) - { - - // Read cluster topology from general config file in this case - auto parse_res= txservice::ParseNgConfig( - eloq_ip_list, eloq_standby_ip_list, eloq_voter_ip_list, ng_configs, - eloq_node_group_replica_num, 0); - if (!parse_res) - { - LOG(ERROR) << "Failed to extract cluster configs from ip_port_list."; - DBUG_RETURN(eloq_init_abort()); - } - } - - bool found= false; - uint32_t native_ng_id= 0; - // check whether this node is in cluster. - for (auto &pair : ng_configs) - { - auto &ng_nodes= pair.second; - for (size_t i= 0; i < ng_nodes.size(); i++) - { - if (ng_nodes[i].host_name_ == local_ip && - ng_nodes[i].port_ == local_port) - { - node_id= ng_nodes[i].node_id_; - found= true; - if (ng_nodes[i].is_candidate_) - { - // found native_ng_id. - native_ng_id= pair.first; - break; - } - } - } - } - - if (!found) - { - sql_print_error("!!!!!!!! Current node does not belong to any node " - "group, EloqDB " - "startup is terminated !!!!!!!!"); - DBUG_RETURN(eloq_init_abort()); - } - - switch (eloq_kv_storage) - { -#if defined(DATA_STORE_TYPE_DYNAMODB) - case KV_DYNAMO: { - // initialize DynamoDB handler. - std::string endpoint(eloq_dynamodb_endpoint); - std::string region(eloq_dynamodb_region); - std::string access_key(eloq_aws_access_key_id); - std::string secret_key(eloq_aws_secret_key); - - storage_hd= std::make_unique( - store_keyspace_name, endpoint, region, access_key, secret_key, - opt_bootstrap, eloq_ddl_skip_kv, eloq_core_num * 2); - if (!storage_hd->Connect()) - { - sql_print_error("!!!!!!!! Failed to connect to DynamoDB server, EloqDB " - "startup is terminated !!!!!!!!"); - DBUG_RETURN(eloq_init_abort()); - } - break; - } -#elif defined(DATA_STORE_TYPE_BIGTABLE) - case KV_BIGTABLE: { - std::string project_id(eloq_bigtable_project_id); - std::string instance_id(eloq_bigtable_instance_id); - storage_hd= std::make_unique( - store_keyspace_name, project_id, instance_id, opt_bootstrap, - eloq_ddl_skip_kv); - if (!storage_hd->Connect()) - { - sql_print_error("!!!!!!!! Failed to connect BigTable server, EloqDB " - "startup is terminated !!!!!!!!"); - DBUG_RETURN(eloq_init_abort()); - } - break; - } - -#elif ELOQDS - case KV_ELOQDS: { - std::string ds_peer_node= eloq_dss_peer_node; - std::string ds_branch_name= eloq_dss_branch_name; - std::string dss_data_path= mysql_real_data_home_ptr; - dss_data_path.append("/eloq_dss"); - try - { - if (!std::filesystem::exists(dss_data_path)) - { - std::filesystem::create_directories(dss_data_path); - } - } - catch (const std::filesystem::filesystem_error &e) - { - sql_print_error("Failed to create dir: %s", dss_data_path.c_str()); - DBUG_RETURN(eloq_init_abort()); - } - -#if defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_GCS) - // std::string ds_rocksdb_config_file_path= - // "/home/lzx/test-eloqsql/eloq_ds.ini"; - INIReader fake_config_reader(nullptr, 0); - EloqDS::RocksDBConfig rocksdb_config(fake_config_reader, dss_data_path); - EloqDS::RocksDBCloudConfig rocksdb_cloud_config(fake_config_reader); -#if defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) - rocksdb_cloud_config.aws_access_key_id_= eloq_aws_access_key_id; - rocksdb_cloud_config.aws_secret_key_= eloq_aws_secret_key; -#endif - rocksdb_cloud_config.bucket_name_= eloq_dss_rocksdb_cloud_bucket_name; - rocksdb_cloud_config.bucket_prefix_= eloq_dss_rocksdb_cloud_bucket_prefix; - rocksdb_cloud_config.object_path_= eloq_dss_rocksdb_cloud_object_path; - rocksdb_cloud_config.region_= eloq_dss_rocksdb_cloud_region; - rocksdb_cloud_config.s3_endpoint_url_= eloq_dss_rocksdb_cloud_endpoint_url; - rocksdb_cloud_config.sst_file_cache_size_= - txlog::parse_size(eloq_dss_rocksdb_cloud_sst_file_cache_size); - rocksdb_cloud_config.sst_file_cache_num_shard_bits_= - eloq_dss_rocksdb_cloud_sst_file_cache_num_shard_bits; - rocksdb_cloud_config.db_file_deletion_delay_= - eloq_dss_rocksdb_cloud_file_deletion_delay; - rocksdb_cloud_config.purger_periodicity_millis_= - eloq_dss_rocksdb_cloud_purger_periodicity_secs * 1000; - rocksdb_cloud_config.branch_name_= ds_branch_name; - - bool enable_cache_replacement_= fake_config_reader.GetBoolean( - "local", "enable_cache_replacement", false); - auto ds_factory= std::make_unique( - rocksdb_config, rocksdb_cloud_config, enable_cache_replacement_); -#elif defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB) - INIReader fake_config_reader(nullptr, 0); - EloqDS::RocksDBConfig rocksdb_config(fake_config_reader, dss_data_path); - bool enable_cache_replacement_= fake_config_reader.GetBoolean( - "local", "enable_cache_replacement", false); - auto ds_factory= std::make_unique( - rocksdb_config, enable_cache_replacement_); -#elif defined(DATA_STORE_TYPE_ELOQDSS_ELOQSTORE) - EloqDS::EloqStoreConfig eloq_store_config; - configure_eloq_store(eloq_store_config, dss_data_path); - auto ds_factory= std::make_unique( - std::move(eloq_store_config)); -#endif - - std::string dss_config_file_path= ""; - EloqDS::DataStoreServiceClusterManager ds_config; - bool is_single_node= false; - - if (!ds_peer_node.empty()) - { - ds_config.SetThisNode( - local_ip, - EloqDS::DataStoreServiceClient::TxPort2DssPort(local_port)); - // Fetch ds topology from peer node - if (!EloqDS::DataStoreService::FetchConfigFromPeer(eloq_dss_peer_node, - ds_config)) - { - sql_print_error("Failed to fetch DSS config from peer node: %s", - eloq_dss_peer_node); - DBUG_RETURN(eloq_init_abort()); - } - is_single_node= - (ng_configs.size() == 1 && ng_configs.begin()->second.size() == 1); - } - else - { - // Bind dss leaders with TxService ng leaders. - std::unordered_map ng_leaders; - - if (opt_bootstrap) - { - // Must parse all node groups to generate data store shards configs. - std::unordered_map> tmp_ng_configs; - uint64_t tmp_cluster_version= 2; - if (!txservice::ReadClusterConfigFile( - cluster_config_file, tmp_ng_configs, tmp_cluster_version)) - { - - // Read cluster topology from general config file in this case - auto parse_res= txservice::ParseNgConfig( - eloq_ip_list, eloq_standby_ip_list, eloq_voter_ip_list, - tmp_ng_configs, eloq_node_group_replica_num, 0); - if (!parse_res) - { - LOG(ERROR) - << "Failed to extract cluster configs from ip_port_list."; - DBUG_RETURN(eloq_init_abort()); - } - } - - bool found= false; - uint32_t tmp_node_id; - // check whether this node is in cluster. - for (auto &pair : tmp_ng_configs) - { - auto &ng_nodes= pair.second; - for (size_t i= 0; i < ng_nodes.size(); i++) - { - if (ng_nodes[i].host_name_ == local_ip && - ng_nodes[i].port_ == local_port) - { - tmp_node_id= ng_nodes[i].node_id_; - found= true; - break; - } - } - if (found) - { - break; - } - } - if (!found) - { - sql_print_error("!!!!!!!! Current node does not belong to any node " - "group, EloqDB " - "startup is terminated !!!!!!!!"); - DBUG_RETURN(eloq_init_abort()); - } - - // For bootstrap, start all data store shards in current node. - for (auto &ng : tmp_ng_configs) - { - ng_leaders.emplace(ng.first, tmp_node_id); - } - - EloqDS::DataStoreServiceClient::TxConfigsToDssClusterConfig( - tmp_node_id, tmp_ng_configs, ng_leaders, ds_config); - } - else - { - is_single_node= - (ng_configs.size() == 1 && ng_configs.begin()->second.size() == 1); - if (is_single_node) - { - for (const auto &[ng_id, ng_config] : ng_configs) - { - ng_leaders.emplace(ng_id, node_id); - } - } - - EloqDS::DataStoreServiceClient::TxConfigsToDssClusterConfig( - node_id, ng_configs, ng_leaders, ds_config); - } - } - - data_store_service_= std::make_unique( - ds_config, dss_config_file_path, dss_data_path + "/DSMigrateLog", - std::move(ds_factory)); - - // setup local data store service, the data store service will start - // data store if needed. - bool ret= true; -#if defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB) - // For non shared storage like rocksdb, - // we always set create_if_missing to true - // since non conflicts will happen under - // multi-node deployment. - ret= data_store_service_->StartService(true); -#else - ret= data_store_service_->StartService((opt_bootstrap || is_single_node)); -#endif - - if (!ret) - { - sql_print_error("Failed to start data store service"); - DBUG_RETURN(eloq_init_abort()); - } - - // setup data store service client - storage_hd= std::make_unique( -#if defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB) - true, -#else - (opt_bootstrap || is_single_node), -#endif - catalog_factory, ds_config, ds_peer_node.empty(), - data_store_service_.get()); - - if (!storage_hd->Connect()) - { - sql_print_error("!!!!!!!! Failed to connect ELOQ_DS server, EloqDB " - "startup is terminated !!!!!!!!"); - DBUG_RETURN(eloq_init_abort()); - } - - break; - } - -#endif - - default: - DBUG_RETURN(eloq_init_abort()); - } - - // Set max rpc message size as 512mb. - GFLAGS_NAMESPACE::SetCommandLineOption("max_body_size", "536870912"); - // Set bthread worker number - if (eloq_bthread_worker_num != 0) - { - GFLAGS_NAMESPACE::SetCommandLineOption( - "bthread_concurrency", - std::to_string(eloq_bthread_worker_num).c_str()); - } - GFLAGS_NAMESPACE::SetCommandLineOption( - "rocksdb_scan_threads", - std::to_string(eloq_logserver_rocksdb_scan_thread_num).c_str()); - std::vector txlog_ips; - std::vector txlog_ports; - - // If eloq_txlog_service_list is empty, it means bounded txlog service - if (std::strlen(eloq_txlog_service_list) == 0) - { - sql_print_information("Stand-alone txlog service is not provided, start " - "bounded txlog service."); - // initialize log service. - std::string txlog_path(local_path); - txlog_path.append("/tx_log"); - std::string txlog_rocksdb_path; - // default rocksdb path is /tx_log/rocksdb - if (strlen(eloq_txlog_rocksdb_storage_path) == 0) - { - // remove "local://" prefix - txlog_rocksdb_path= txlog_path.substr(8) + "/rocksdb"; - } - else - { - txlog_rocksdb_path= eloq_txlog_rocksdb_storage_path; - } - sql_print_information("EloqDB txlog path: %s", txlog_path.c_str()); - sql_print_information("EloqDB txlog rocksdb path: %s", - txlog_rocksdb_path.c_str()); - - uint16_t log_server_port= local_port + 2; - for (uint32_t ng= 0; ng < ng_configs.size(); ng++) - { - // Use cc node port + 2 for log server - txlog_ports.emplace_back(ng_configs[ng][0].port_ + 2); - txlog_ips.emplace_back(ng_configs[ng][0].host_name_); - } - - bool enable_txlog_request_checkpoint= - eloq_enable_txlog_request_checkpoint ? true : false; - [[maybe_unused]] uint64_t notify_checkpointer_threshold_size= - txlog::parse_size(eloq_notify_checkpointer_threshold_size); - sql_print_information( - "eloq_enable_txlog_request_checkpoint: %s", - (eloq_enable_txlog_request_checkpoint ? "ON" : "OFF")); - if (enable_txlog_request_checkpoint) - { - sql_print_information("eloq_check_replay_log_size_interval_sec: %d", - eloq_check_replay_log_size_interval_sec); - sql_print_information("eloq_notify_checkpointer_threshold_size: %s", - eloq_notify_checkpointer_threshold_size); - } - -#if defined(LOG_STATE_TYPE_RKDB_ALL) - size_t rocksdb_target_file_size_base_val= - txlog::parse_size(eloq_txlog_rocksdb_target_file_size_base); -#if defined(LOG_STATE_TYPE_RKDB_CLOUD) - txlog::RocksDBCloudConfig rocksdb_cloud_config; -#if defined(LOG_STATE_TYPE_RKDB_S3) - rocksdb_cloud_config.aws_access_key_id_= eloq_aws_access_key_id; - rocksdb_cloud_config.aws_secret_key_= eloq_aws_secret_key; -#endif /* LOG_STATE_TYPE_RKDB_S3 */ - rocksdb_cloud_config.bucket_name_= eloq_txlog_rocksdb_cloud_bucket_name; - rocksdb_cloud_config.bucket_prefix_= - eloq_txlog_rocksdb_cloud_bucket_prefix; - rocksdb_cloud_config.object_path_= eloq_txlog_rocksdb_cloud_object_path; - rocksdb_cloud_config.region_= eloq_txlog_rocksdb_cloud_region; - rocksdb_cloud_config.endpoint_url_= eloq_txlog_rocksdb_cloud_endpoint_url; - rocksdb_cloud_config.sst_file_cache_size_= - txlog::parse_size(eloq_txlog_rocksdb_cloud_sst_file_cache_size); - rocksdb_cloud_config.sst_file_cache_num_shard_bits_= - eloq_txlog_rocksdb_cloud_sst_file_cache_num_shard_bits; - rocksdb_cloud_config.db_ready_timeout_us_= - eloq_txlog_rocksdb_cloud_ready_timeout * 1000 * 1000; - rocksdb_cloud_config.db_file_deletion_delay_= - eloq_txlog_rocksdb_cloud_file_deletion_delay; - - if (opt_bootstrap) - { - txlog_server= std::make_unique<::txlog::LogServer>( - node_id, log_server_port, txlog_ips, txlog_ports, txlog_path, 0, - eloq_txlog_group_replica_num, txlog_rocksdb_path, - eloq_logserver_rocksdb_scan_thread_num, rocksdb_cloud_config, - eloq_txlog_rocksdb_cloud_in_mem_log_size_high_watermark, - eloq_txlog_rocksdb_max_write_buffer_number, - eloq_txlog_rocksdb_max_background_jobs, - rocksdb_target_file_size_base_val, eloq_logserver_snapshot_interval); - } - else - { - txlog_server= std::make_unique<::txlog::LogServer>( - node_id, log_server_port, txlog_ips, txlog_ports, txlog_path, 0, - eloq_txlog_group_replica_num, txlog_rocksdb_path, - eloq_logserver_rocksdb_scan_thread_num, rocksdb_cloud_config, - eloq_txlog_rocksdb_cloud_in_mem_log_size_high_watermark, - eloq_txlog_rocksdb_max_write_buffer_number, - eloq_txlog_rocksdb_max_background_jobs, - rocksdb_target_file_size_base_val, eloq_logserver_snapshot_interval, - enable_txlog_request_checkpoint, - eloq_check_replay_log_size_interval_sec, - notify_checkpointer_threshold_size); - } -#else /* LOG_STATE_TYPE_RKDB_CLOUD */ - // LOG_STATE_TYPE_RKDB - size_t rocksdb_sst_files_size_limit_val= - txlog::parse_size(eloq_txlog_rocksdb_sst_files_size_limit); - - if (opt_bootstrap) - { -#if defined(OPEN_LOG_SERVICE) - txlog_server= std::make_unique<::txlog::LogServer>( - node_id, log_server_port, txlog_path, 1, - rocksdb_sst_files_size_limit_val, - eloq_txlog_rocksdb_max_write_buffer_number, - eloq_txlog_rocksdb_max_background_jobs, - rocksdb_target_file_size_base_val); -#else - txlog_server= std::make_unique<::txlog::LogServer>( - node_id, log_server_port, txlog_ips, txlog_ports, txlog_path, 0, - eloq_txlog_group_replica_num, txlog_rocksdb_path, - eloq_logserver_rocksdb_scan_thread_num, - rocksdb_sst_files_size_limit_val, - eloq_txlog_rocksdb_max_write_buffer_number, - eloq_txlog_rocksdb_max_background_jobs, - rocksdb_target_file_size_base_val, eloq_logserver_snapshot_interval); -#endif - } - else - { -#if defined(OPEN_LOG_SERVICE) - txlog_server= std::make_unique<::txlog::LogServer>( - node_id, log_server_port, txlog_path, 1, - rocksdb_sst_files_size_limit_val, - eloq_txlog_rocksdb_max_write_buffer_number, - eloq_txlog_rocksdb_max_background_jobs, - rocksdb_target_file_size_base_val); -#else - txlog_server= std::make_unique<::txlog::LogServer>( - node_id, log_server_port, txlog_ips, txlog_ports, txlog_path, 0, - eloq_txlog_group_replica_num, txlog_rocksdb_path, - eloq_logserver_rocksdb_scan_thread_num, - rocksdb_sst_files_size_limit_val, - eloq_txlog_rocksdb_max_write_buffer_number, - eloq_txlog_rocksdb_max_background_jobs, - rocksdb_target_file_size_base_val, eloq_logserver_snapshot_interval, - enable_txlog_request_checkpoint, - eloq_check_replay_log_size_interval_sec, - notify_checkpointer_threshold_size); -#endif - } - -#endif /* LOG_STATE_TYPE_RKDB_CLOUD */ -#else /* LOG_STATE_TYPE_MEM */ -#if defined(OPEN_LOG_SERVICE) - txlog_server= std::make_unique<::txlog::LogServer>( - node_id, log_server_port, txlog_path, 1); -#else - txlog_server= std::make_unique<::txlog::LogServer>( - node_id, log_server_port, txlog_ips, txlog_ports, txlog_path, 0, - eloq_txlog_group_replica_num, eloq_logserver_snapshot_interval); -#endif -#endif /* LOG_STATE_TYPE_MEM */ - err= txlog_server->Start(); - if (err != 0) - { - // TODO: append detailed error information. - sql_print_error("Failed to start the tx log service in this node."); - DBUG_RETURN(eloq_init_abort()); - } - - sql_print_information("Bounded txlog service started."); - } - else - { - sql_print_information("Stand-alone txlog service provided: %s.", - eloq_txlog_service_list); - - std::string token; - std::istringstream txlog_ip_list_stream(eloq_txlog_service_list); - while (std::getline(txlog_ip_list_stream, token, ',')) - { - size_t c_idx= token.find_first_of(':'); - if (c_idx != std::string::npos) - { - txlog_ips.emplace_back(token.substr(0, c_idx)); - uint16_t pt= std::stoi(token.substr(c_idx + 1)); - txlog_ports.emplace_back(pt); - } - else - { - sql_print_error("Port is missing in eloq_txlog_service_list"); - DBUG_RETURN(eloq_init_abort()); - } - } + DBUG_RETURN(1); } // fetch and print the global level cc_protocol @@ -3095,7 +1505,7 @@ static int eloq_init_func(void *p) assert(false); }; - if (eloq_enable_mvcc) + if (DataSubstrate::GetGlobal()->GetCoreConfig().enable_mvcc) { sql_print_information("mvcc is enabled."); } @@ -3104,206 +1514,6 @@ static int eloq_init_func(void *p) sql_print_information("mvcc is disabled."); } - // initialize the transaction service. - std::map tx_service_conf; - tx_service_conf.insert( - std::pair("core_num", eloq_core_num)); - tx_service_conf.insert(std::pair( - "range_split_worker_num", eloq_range_split_worker_num)); - tx_service_conf.insert(std::pair( - "checkpointer_interval", eloq_checkpointer_interval_sec)); - tx_service_conf.insert(std::pair( - "node_memory_limit_mb", eloq_node_memory_limit_mb)); - tx_service_conf.insert(std::pair( - "node_log_limit_mb", eloq_node_log_limit_mb)); - tx_service_conf.insert(std::pair( - "checkpointer_delay_seconds", eloq_checkpointer_delay_sec)); - tx_service_conf.insert(std::pair( - "collect_active_tx_ts_interval_seconds", - eloq_collect_active_tx_ts_interval_sec)); - tx_service_conf.insert(std::pair( - "realtime_sampling", eloq_realtime_sampling)); - tx_service_conf.insert(std::pair( - "rep_group_cnt", eloq_node_group_replica_num)); - tx_service_conf.insert(std::pair( - "enable_key_cache", eloq_use_key_cache ? 1 : 0)); - tx_service_conf.insert(std::pair( - "enable_shard_heap_defragment", eloq_enable_heap_defragment ? 1 : 0)); - tx_service_conf.insert(std::pair( - "bthread_worker_num", eloq_bthread_worker_num)); - tx_service_conf.insert(std::pair( - "kickout_data_for_test", eloq_kickout_data_for_test ? 1 : 0)); - - auto log_agent= std::make_unique( - static_cast(eloq_txlog_group_replica_num)); - - sql_print_information("enable_metrics: %s", - eloq_enable_metrics ? "ON" : "OFF"); - - metrics::CommonLabels empty_common_labels= {}; - std::vector>> - empty_external_metrics= {}; - if (eloq_enable_metrics && !opt_bootstrap) - { - setenv("ELOQ_METRICS_PORT", std::to_string(eloq_metrics_port).c_str(), - false); - MetricsRegistryImpl::MetricsRegistryResult metrics_registry_result= - MetricsRegistryImpl::GetRegistry(); - if (metrics_registry_result.not_ok_ != nullptr) - { - // MetricsRegistry Init error will be exit(-1); - sql_print_error("EloqDB enable metrics collector but " - "MetricsRegistry Init ERR %s", - metrics_registry_result.not_ok_); - DBUG_RETURN(eloq_init_abort()); - } - else - { - /* parse metrics options */ - metrics::enable_metrics= true; - - // mysql metrics - metrics::enable_mysql_tx_metrics= - eloq_enable_mysql_tx_metrics ? true : false; - sql_print_information("enable_mysql_tx_metrics: %s", - metrics::enable_mysql_tx_metrics ? "ON" : "OFF"); - - metrics::enable_mysql_dml_metrics= - eloq_enable_mysql_dml_metrics ? true : false; - sql_print_information("enable_mysql_dml_metrics: %s", - metrics::enable_mysql_dml_metrics ? "ON" : "OFF"); - - // tx_service metrics - metrics::enable_tx_metrics= eloq_enable_tx_metrics ? true : false; - sql_print_information("enable_tx_metrics: %s", - metrics::enable_tx_metrics ? "ON" : "OFF"); - if (metrics::enable_tx_metrics) - { - metrics::collect_tx_duration_round= eloq_collect_tx_duration_round; - sql_print_information( - "collect `collect_tx_duration_round` every %d round(s).", - metrics::collect_tx_duration_round); - } - - metrics::enable_cache_hit_rate= - eloq_enable_cache_hit_rate ? true : false; - sql_print_information("enable_cache_hit_rate: %s", - metrics::enable_cache_hit_rate ? "ON" : "OFF"); - - metrics::enable_busy_round_metrics= - eloq_enable_busy_round_metrics ? true : false; - sql_print_information("enable_busy_round_metrics: %s", - metrics::enable_busy_round_metrics ? "ON" : "OFF"); - if (metrics::enable_busy_round_metrics) - { - metrics::busy_round_threshold= eloq_busy_round_threshold; - sql_print_information("busy_round_threshold %d.", - metrics::busy_round_threshold); - } - - metrics::enable_memory_usage= eloq_enable_memory_usage ? true : false; - sql_print_information("enable_memory_usage: %s", - metrics::enable_memory_usage ? "ON" : "OFF"); - if (metrics::enable_memory_usage) - { - metrics::collect_memory_usage_round= eloq_collect_memory_usage_round; - sql_print_information("collect `memory_usage` every %d round(s).", - metrics::collect_memory_usage_round); - } - - metrics::enable_remote_request_metrics= - eloq_enable_remote_request_metrics ? true : false; - sql_print_information("enable_remote_request_metrics: %s", - metrics::enable_remote_request_metrics ? "ON" - : "OFF"); - - metrics::enable_kv_metrics= eloq_enable_kv_metrics ? true : false; - sql_print_information("enable_kv_metrics: %s", - metrics::enable_kv_metrics ? "ON" : "OFF"); - - // log_service metrics - metrics::enable_log_service_metrics= - eloq_enable_log_service_metrics ? true : false; - sql_print_information("enable_log_service_metrics: %s", - metrics::enable_log_service_metrics ? "ON" - : "OFF"); - - metrics_registry= std::move(metrics_registry_result.metrics_registry_); - - metrics::CommonLabels mysql_common_labels{}; - mysql_common_labels["node_ip"]= local_ip; - mysql_common_labels["node_port"]= std::to_string(mysqld_port); - - metrics::CommonLabels kv_common_labels{}; - kv_common_labels["node_ip"]= local_ip; - kv_common_labels["node_port"]= std::to_string(mysqld_port); - - metrics::register_mysql_metrics(metrics_registry.get(), - mysql_common_labels); - storage_hd->RegisterKvMetrics(metrics_registry.get(), kv_common_labels); - - metrics::CommonLabels tx_service_common_labels{}; - tx_service_common_labels["node_ip"]= local_ip; - tx_service_common_labels["node_port"]= std::to_string(mysqld_port); - tx_service_common_labels["node_id"]= std::to_string(node_id); - - tx_service= std::make_unique( - catalog_factory, &MariaSystemHandler::Instance(), tx_service_conf, - node_id, native_ng_id, &ng_configs, cluster_config_version, - storage_hd.get(), log_agent.get(), eloq_enable_mvcc, - eloq_skip_redo_log, false /*skip kv*/, - true /*enable cache replacement*/, true /*auto redirect */, - metrics_registry.get(), tx_service_common_labels); - - sql_print_information("Eloq metrics collector bind port: %d", - eloq_metrics_port); - -#ifdef EXT_TX_PROC_ENABLED - get_tx_service_functors= tx_service->GetTxProcFunctors(); -#endif - } - } - else - { - tx_service= std::make_unique( - catalog_factory, &MariaSystemHandler::Instance(), tx_service_conf, - node_id, native_ng_id, &ng_configs, cluster_config_version, - storage_hd != nullptr ? storage_hd.get() : nullptr, log_agent.get(), - eloq_enable_mvcc, eloq_skip_redo_log, false); - -#ifdef EXT_TX_PROC_ENABLED - get_tx_service_functors= tx_service->GetTxProcFunctors(); -#endif - } - - if (tx_service->Start(node_id, native_ng_id, &ng_configs, - cluster_config_version, &txlog_ips, &txlog_ports, - &hm_ip, &hm_port, &hm_bin_path, tx_service_conf, - std::move(log_agent), local_path, - cluster_config_file) < 0) - { - sql_print_error("!!!!!!Failed to start tx service. EloqDB startup is " - "terminated!!!!!!"); - DBUG_RETURN(eloq_init_abort()); - } - - txservice::Sequences::InitSequence(tx_service.get(), storage_hd.get()); - - DeadLockCheck::SetTimeInterval(eloq_deadlock_interval_sec); - - storage_hd->SetTxService(tx_service != nullptr ? tx_service.get() : nullptr); - sql_print_information("Transaction service started."); - sql_print_information( - "Number of cores allocated for transaction service: %u", eloq_core_num); - - eloq_partition_type= 1; - // tx_service is a distributed service, should wait for all the tx_service - // nodes to finish the log recovery process and setup the cc_stream_sender. - tx_service->WaitClusterReady(); - // wait for the tx_service node to become the native group leader. - tx_service->WaitNodeBecomeNativeGroupLeader(); - drop_orphan_tmp_tables(); if (eloq_signal_monitor != 0) @@ -3313,7 +1523,8 @@ static int eloq_init_func(void *p) #else if (txlog_server) { - txlog_server->CloseBraft(); + txlog_server->CloseBraft(); // TODO(liunyl): what is this for? can we + // remove txlog_server? } #endif }; @@ -3329,31 +1540,10 @@ static int eloq_done_func(void *p) { DBUG_ENTER_FUNC(); - sql_print_information("Shutting down the tx service."); - tx_service->Shutdown(); - sql_print_information("Tx service shut down."); - - sql_print_information("Shutting down the storage handler."); - storage_hd= nullptr; // Wait for all in-fight requests complete. -#if ELOQDS - if (data_store_service_ != nullptr) - { - data_store_service_= nullptr; - } +#ifndef MYSQLD_LIBRARY_MODE + sql_print_information("Shutting down the data substrate."); + DataSubstrate::GetGlobal()->Shutdown(); #endif - sql_print_information("Storage handler shut down."); - - sql_print_information("Shutting down the log service."); - txlog_server= nullptr; - sql_print_information("Log service shut down."); - - txservice::Sequences::Destory(); - - // Guarantee shutdown. In some cases, like bootstrap, - // eloq_pre_shutdown() won't call. - MariaSystemHandler::Instance().Shutdown(); - - tx_service= nullptr; mysql_mutex_destroy(&mono_collation_data_mutex); mysql_mutex_destroy(&mono_mem_cmp_space_mutex); @@ -3363,17 +1553,6 @@ static int eloq_done_func(void *p) delete it; it= nullptr; } - - if (eloq_enable_metrics) - { - metrics_registry= nullptr; - } - -#if defined(DATA_STORE_TYPE_DYNAMODB) || defined(LOG_STATE_TYPE_RKDB_S3) || \ - defined(DATA_STORE_TYPE_ELOQDSS_ROCKSDB_CLOUD_S3) - aws_deinit(); -#endif - DBUG_RETURN(0); } diff --git a/storage/eloq/ha_eloq.h b/storage/eloq/ha_eloq.h index cb775ef5262..1f8932f1fd8 100644 --- a/storage/eloq/ha_eloq.h +++ b/storage/eloq/ha_eloq.h @@ -62,14 +62,14 @@ #include #include "ha_eloq_macro.h" -#include "eloq_key.h" -#include "eloq_schema.h" +#include "eloqsql_key.h" +#include "eloqsql_schema.h" #include "tx_service/include/statistics.h" #include "tx_service/include/tx_request.h" #include "tx_service/include/tx_execution.h" #include "tx_service/include/tx_util.h" #include "tx_service/include/store/data_store_scanner.h" -#include "eloq_catalog_factory.h" +#include "eloqsql_catalog_factory.h" #include "eloq_buff.h" #include "eloq_key_def.h" #include "tx_service/include/cc/reader_writer_cntl.h" @@ -78,7 +78,7 @@ using namespace MyEloq; using namespace txservice; extern uint32_t node_id; // node id of itself -extern std::unique_ptr storage_hd; +extern store::DataStoreHandler *storage_hd; /** @brief Eloq_share is a class that will be shared among all open handlers. diff --git a/storage/eloq/log_service b/storage/eloq/log_service deleted file mode 160000 index 9caaf7cd9e7..00000000000 --- a/storage/eloq/log_service +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9caaf7cd9e78ee4a6e4eb6e6b35bff16f852e249 diff --git a/storage/eloq/metrics_registry_impl.cpp b/storage/eloq/metrics_registry_impl.cpp deleted file mode 100644 index c0a216b72bd..00000000000 --- a/storage/eloq/metrics_registry_impl.cpp +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright (C) 2025 EloqData Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the following license: - * 1. GNU General Public License as published by the Free Software - * Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License V2 - * along with this program. If not, see . - * - */ -// -// Created by pangzhenzhou on 2022/10/10. -// - -#include "metrics_registry_impl.h" -#include -#include - -namespace MyEloq -{ -MetricsRegistryImpl::MetricsRegistryResult MetricsRegistryImpl::GetRegistry() -{ - struct make_registry_shared : public MetricsRegistryImpl - { - }; - static std::unique_ptr registry_impl= - std::make_unique(); - - if (registry_impl->metrics_mgr_result_.not_ok_ == nullptr) - { - return MetricsRegistryImpl::MetricsRegistryResult{std::move(registry_impl), - nullptr}; - } - else - { - return MetricsRegistryImpl::MetricsRegistryResult{ - nullptr, - registry_impl->metrics_mgr_result_.not_ok_, - }; - } -} - -// This method is the one that needs to be extended, the open method does not -// do anything for the current implementation. -metrics::MetricsErrors MetricsRegistryImpl::Open() -{ - return metrics::MetricsErrors::Success; -} - -metrics::MetricKey MetricsRegistryImpl::Register(const metrics::Name &name, - metrics::Type type, - const metrics::Labels &labels) -{ - auto metric= metrics::Metric(name.GetName(), type, labels); - - auto metric_collector= metrics_mgr_result_.mgr_->MetricsRegistry( - std::make_unique(metric)); - - auto key= metric_collector->metric_key_; - - std::unique_lock lock(collectors_mu_); - collectors_.insert(std::make_pair(key, std::move(metric_collector))); - - return key; -} - -void MetricsRegistryImpl::Collect(metrics::MetricKey key, - const metrics::Value &val) -{ - auto collector= collectors_[key].get(); - collector->Collect(val); -} -} // namespace MyEloq diff --git a/storage/eloq/metrics_registry_impl.h b/storage/eloq/metrics_registry_impl.h deleted file mode 100644 index 9d16fa0a245..00000000000 --- a/storage/eloq/metrics_registry_impl.h +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Copyright (C) 2025 EloqData Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the following license: - * 1. GNU General Public License as published by the Free Software - * Foundation; version 2 of the License. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License V2 - * along with this program. If not, see . - * - */ -// -// Created by pangzhenzhou on 2022/10/10. -// -#pragma once -#include "metrics.h" -#include "metrics_manager.h" - -#include -#include - -namespace MyEloq -{ -class MetricsRegistryImpl : public metrics::MetricsRegistry -{ - -public: - struct MetricsRegistryResult - { - std::unique_ptr metrics_registry_; - const char *not_ok_; - }; - - MetricsRegistryImpl(MetricsRegistryImpl const &)= delete; - void operator=(MetricsRegistryImpl const &)= delete; - - ~MetricsRegistryImpl()= default; - static MetricsRegistryResult GetRegistry(); - - metrics::MetricsErrors Open() override; - metrics::MetricKey Register(const metrics::Name &, metrics::Type, - const metrics::Labels &) override; - void Collect(metrics::MetricKey, const metrics::Value &) override; - -private: - MetricsRegistryImpl()= default; - - metrics::MetricsMgr::MetricsMgrResult metrics_mgr_result_= - metrics::MetricsMgr::GetMetricMgrInstance(); - std::unordered_map intervals_; - std::unordered_map> - collectors_; - - // Mutex to exclusively protect 'collectors_' during write operations in - // multi-threaded environments. Use this mutex solely for guarding - // modifications to 'collectors_'. - std::mutex collectors_mu_; -}; - -} // namespace MyEloq diff --git a/storage/eloq/mysql-test/mono_basic/data_substrate.cnf b/storage/eloq/mysql-test/mono_basic/data_substrate.cnf new file mode 100644 index 00000000000..6d598fe2be8 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/data_substrate.cnf @@ -0,0 +1,24 @@ +[local] +core_number=2 +enable_mvcc=false +deadlock_check_interval_seconds=10 +txlog_rocksdb_scan_threads=3 +tx_ip=127.0.0.1 +tx_port=8000 +hm_bin_path=../../../../data_substrate/host_manager +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test +txlog_rocksdb_cloud_bucket_prefix = txlog- +txlog_rocksdb_cloud_region = ap-northeast-1 +[store] +aws_secret_key=XXXXXXXXXX +aws_access_key_id=XXXXXXXXXXXXXXXXXXXXX + +dynamodb_endpoint=http://127.0.0.1:8000 +bigtable_project_id=XXXXXXXX +bigtable_instance_id=XXXXXXXX +rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +rocksdb_cloud_bucket_name = eloqsql-mtr-test +rocksdb_cloud_bucket_prefix = dss- +rocksdb_cloud_region = ap-northeast-1 +eloq_dss_config_file_path = \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/include/have_range_partition.inc b/storage/eloq/mysql-test/mono_basic/include/have_range_partition.inc deleted file mode 100644 index 70578b199f3..00000000000 --- a/storage/eloq/mysql-test/mono_basic/include/have_range_partition.inc +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (C) 2010 Sun Microsystems, Inc. -# Use is subject to license terms -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; version 2 of the License. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA - -if (!`SELECT count(*) FROM information_schema.GLOBAL_VARIABLES - WHERE VARIABLE_NAME='eloq_partition_type' - AND VARIABLE_VALUE='Range'`){ - skip Need range partition enabled; -} diff --git a/storage/eloq/mysql-test/mono_basic/my.cnf b/storage/eloq/mysql-test/mono_basic/my.cnf index d7eca0350bf..937f86997d9 100644 --- a/storage/eloq/mysql-test/mono_basic/my.cnf +++ b/storage/eloq/mysql-test/mono_basic/my.cnf @@ -2,33 +2,26 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental default-storage-engine=eloq -plugin_load_add=ha_eloq thread_handling=pool-of-threads thread_pool_size=2 thread_pool_oversubscribe=10 thread_pool_dedicated_listener=1 table_open_cache_instances=20 -eloq skip-log-bin -eloq_core_num=2 eloq_cc_protocol=OCC -eloq_enable_mvcc=off -eloq_logserver_rocksdb_scan_thread_num=3 use_stat_tables=complementary -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 -eloq_metrics_port=18081 + [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/alter_table.test b/storage/eloq/mysql-test/mono_basic/t/alter_table.test index 24f596fccc2..4f21f1af795 100644 --- a/storage/eloq/mysql-test/mono_basic/t/alter_table.test +++ b/storage/eloq/mysql-test/mono_basic/t/alter_table.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc --disable_warnings DROP DATABASE IF EXISTS mono; diff --git a/storage/eloq/mysql-test/mono_basic/t/alter_table_recovery.test b/storage/eloq/mysql-test/mono_basic/t/alter_table_recovery.test index fe16341481c..66484aa94e0 100644 --- a/storage/eloq/mysql-test/mono_basic/t/alter_table_recovery.test +++ b/storage/eloq/mysql-test/mono_basic/t/alter_table_recovery.test @@ -1,7 +1,6 @@ # --source include/have_eloq.inc --source include/long_test.inc ---source include/have_range_partition.inc --disable_warnings DROP DATABASE IF EXISTS mono_test; diff --git a/storage/eloq/mysql-test/mono_basic/t/create_drop_index.test b/storage/eloq/mysql-test/mono_basic/t/create_drop_index.test index 6067b75c4f8..5a3f8717dce 100644 --- a/storage/eloq/mysql-test/mono_basic/t/create_drop_index.test +++ b/storage/eloq/mysql-test/mono_basic/t/create_drop_index.test @@ -1,6 +1,5 @@ --source include/have_eloq.inc --source include/long_test.inc ---source include/have_range_partition.inc set @@default_storage_engine= eloq; # # test of left outer join (from join_outer.test) diff --git a/storage/eloq/mysql-test/mono_basic/t/data_store_error.test b/storage/eloq/mysql-test/mono_basic/t/data_store_error.test index 78f013dec4a..4ebf3cfcf60 100644 --- a/storage/eloq/mysql-test/mono_basic/t/data_store_error.test +++ b/storage/eloq/mysql-test/mono_basic/t/data_store_error.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc set @@default_storage_engine= eloq; select @@default_storage_engine; diff --git a/storage/eloq/mysql-test/mono_basic/t/deadlock_handling.cnf b/storage/eloq/mysql-test/mono_basic/t/deadlock_handling.cnf index 8ed2f8801ce..844e5ffa0a0 100644 --- a/storage/eloq/mysql-test/mono_basic/t/deadlock_handling.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/deadlock_handling.cnf @@ -2,26 +2,18 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 eloq_cc_protocol=LOCKING -eloq_enable_mvcc=off transaction-isolation=READ-COMMITTED -eloq_deadlock_interval_sec=10 -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/flush_undo_while_ckpt.cnf b/storage/eloq/mysql-test/mono_basic/t/flush_undo_while_ckpt.cnf index b73f81de73c..2de0d5ec7b5 100644 --- a/storage/eloq/mysql-test/mono_basic/t/flush_undo_while_ckpt.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/flush_undo_while_ckpt.cnf @@ -2,26 +2,17 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_enable_mvcc=on eloq_cc_protocol=OccRead -eloq_checkpointer_interval_sec=10 -eloq_checkpointer_delay_sec=0 -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/flush_undo_while_ckpt.opt b/storage/eloq/mysql-test/mono_basic/t/flush_undo_while_ckpt.opt new file mode 100644 index 00000000000..4d0e66dd20b --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/flush_undo_while_ckpt.opt @@ -0,0 +1 @@ +--enable_mvcc=true --core_number=1 --deadlock_check_interval_seconds=10 --checkpointer_interval=10 --checkpointer_delay_seconds=0 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_locking.cnf b/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_locking.cnf index 69b3389dfa7..d3799ed598d 100644 --- a/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_locking.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_locking.cnf @@ -2,23 +2,17 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 eloq_cc_protocol=Locking -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_mvcc.cnf b/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_mvcc.cnf index 537115923f2..41c29b3912c 100644 --- a/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_mvcc.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_mvcc.cnf @@ -2,24 +2,16 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] -plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_enable_mvcc=on eloq_cc_protocol=OCC -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_mvcc.opt b/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_mvcc.opt new file mode 100644 index 00000000000..0153f72ca01 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_mvcc.opt @@ -0,0 +1 @@ +--enable_mvcc=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_occ.cnf b/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_occ.cnf index 8e8bd7d19cc..5b63170fd4b 100644 --- a/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_occ.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/isolation_level_for_occ.cnf @@ -2,29 +2,23 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] -plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq thread_handling=pool-of-threads -thread_pool_size=1 +default-storage-engine=eloq +thread_pool_size=2 thread_pool_oversubscribe=10 thread_pool_dedicated_listener=1 table_open_cache_instances=20 -eloq skip-log-bin -eloq_core_num=1 eloq_cc_protocol=OCC -eloq_enable_mvcc=off -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf + [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/key_cache.cnf b/storage/eloq/mysql-test/mono_basic/t/key_cache.cnf index 71f159b5bb7..892cab33969 100644 --- a/storage/eloq/mysql-test/mono_basic/t/key_cache.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/key_cache.cnf @@ -2,33 +2,25 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental default-storage-engine=eloq -plugin_load_add=ha_eloq thread_handling=pool-of-threads thread_pool_size=2 thread_pool_oversubscribe=10 thread_pool_dedicated_listener=1 table_open_cache_instances=20 -eloq skip-log-bin -eloq_core_num=2 eloq_cc_protocol=OCC -eloq_enable_mvcc=off use_stat_tables=complementary -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager -eloq_use_key_cache=true +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 -eloq_metrics_port=18081 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/key_cache.opt b/storage/eloq/mysql-test/mono_basic/t/key_cache.opt new file mode 100644 index 00000000000..a5bcb4384f6 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/key_cache.opt @@ -0,0 +1 @@ +--enable_key_cache=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_archives_recycle.cnf b/storage/eloq/mysql-test/mono_basic/t/mvcc_archives_recycle.cnf index d819778524a..287f752a6bf 100644 --- a/storage/eloq/mysql-test/mono_basic/t/mvcc_archives_recycle.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_archives_recycle.cnf @@ -2,25 +2,19 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_enable_mvcc=on eloq_cc_protocol=OccRead -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_archives_recycle.opt b/storage/eloq/mysql-test/mono_basic/t/mvcc_archives_recycle.opt new file mode 100644 index 00000000000..0153f72ca01 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_archives_recycle.opt @@ -0,0 +1 @@ +--enable_mvcc=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_read_after_flushing_deleted_record.cnf b/storage/eloq/mysql-test/mono_basic/t/mvcc_read_after_flushing_deleted_record.cnf index 667dd493c3e..ceac07fb6ce 100644 --- a/storage/eloq/mysql-test/mono_basic/t/mvcc_read_after_flushing_deleted_record.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_read_after_flushing_deleted_record.cnf @@ -2,24 +2,18 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_enable_mvcc=on eloq_cc_protocol=OccRead -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_read_after_flushing_deleted_record.opt b/storage/eloq/mysql-test/mono_basic/t/mvcc_read_after_flushing_deleted_record.opt new file mode 100644 index 00000000000..0153f72ca01 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_read_after_flushing_deleted_record.opt @@ -0,0 +1 @@ +--enable_mvcc=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_read_unique_sk_after_flushing_deleted_record.cnf b/storage/eloq/mysql-test/mono_basic/t/mvcc_read_unique_sk_after_flushing_deleted_record.cnf index 667dd493c3e..ceac07fb6ce 100644 --- a/storage/eloq/mysql-test/mono_basic/t/mvcc_read_unique_sk_after_flushing_deleted_record.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_read_unique_sk_after_flushing_deleted_record.cnf @@ -2,24 +2,18 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_enable_mvcc=on eloq_cc_protocol=OccRead -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_read_unique_sk_after_flushing_deleted_record.opt b/storage/eloq/mysql-test/mono_basic/t/mvcc_read_unique_sk_after_flushing_deleted_record.opt new file mode 100644 index 00000000000..0153f72ca01 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_read_unique_sk_after_flushing_deleted_record.opt @@ -0,0 +1 @@ +--enable_mvcc=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan.cnf b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan.cnf index c19b418c579..b345db4b624 100644 --- a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan.cnf @@ -3,23 +3,16 @@ !include include/default_mysqld.cnf !include include/default_client.cnf !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_dss.cnf + + [mysqld] -plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_enable_mvcc=on +default-storage-engine=eloq eloq_cc_protocol=OccRead -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan.opt b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan.opt new file mode 100644 index 00000000000..0153f72ca01 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan.opt @@ -0,0 +1 @@ +--enable_mvcc=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_after_flushing_deleted_record.cnf b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_after_flushing_deleted_record.cnf index 786da545843..6e25864a5b2 100644 --- a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_after_flushing_deleted_record.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_after_flushing_deleted_record.cnf @@ -2,23 +2,17 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_enable_mvcc=on -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_after_flushing_deleted_record.opt b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_after_flushing_deleted_record.opt new file mode 100644 index 00000000000..0153f72ca01 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_after_flushing_deleted_record.opt @@ -0,0 +1 @@ +--enable_mvcc=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk.cnf b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk.cnf index 667dd493c3e..ceac07fb6ce 100644 --- a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk.cnf @@ -2,24 +2,18 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_enable_mvcc=on eloq_cc_protocol=OccRead -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk.opt b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk.opt new file mode 100644 index 00000000000..0153f72ca01 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk.opt @@ -0,0 +1 @@ +--enable_mvcc=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk_rc_isolvl.cnf b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk_rc_isolvl.cnf index 667dd493c3e..3963a874155 100644 --- a/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk_rc_isolvl.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_scan_sk_rc_isolvl.cnf @@ -2,9 +2,9 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_unique_sk_lookup.cnf b/storage/eloq/mysql-test/mono_basic/t/mvcc_unique_sk_lookup.cnf index 667dd493c3e..ceac07fb6ce 100644 --- a/storage/eloq/mysql-test/mono_basic/t/mvcc_unique_sk_lookup.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_unique_sk_lookup.cnf @@ -2,24 +2,18 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_enable_mvcc=on eloq_cc_protocol=OccRead -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/mvcc_unique_sk_lookup.opt b/storage/eloq/mysql-test/mono_basic/t/mvcc_unique_sk_lookup.opt new file mode 100644 index 00000000000..0153f72ca01 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/mvcc_unique_sk_lookup.opt @@ -0,0 +1 @@ +--enable_mvcc=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/poor_performance.cnf b/storage/eloq/mysql-test/mono_basic/t/poor_performance.cnf index a13387805fd..b8ddb04d101 100644 --- a/storage/eloq/mysql-test/mono_basic/t/poor_performance.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/poor_performance.cnf @@ -1,33 +1,23 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] default-storage-engine=eloq -plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq thread_handling=pool-of-threads thread_pool_size=1 thread_pool_oversubscribe=10 thread_pool_dedicated_listener=1 table_open_cache_instances=20 -eloq skip-log-bin -eloq_core_num=1 -eloq_checkpointer_interval_sec=86400 eloq_cc_protocol=OCC -eloq_enable_mvcc=off use_stat_tables=complementary -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 -eloq_metrics_port=18081 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/poor_performance.opt b/storage/eloq/mysql-test/mono_basic/t/poor_performance.opt new file mode 100644 index 00000000000..90f50ece7e0 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/poor_performance.opt @@ -0,0 +1 @@ +--core_number=1 --checkpointer_interval=86400 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/poor_performance.test b/storage/eloq/mysql-test/mono_basic/t/poor_performance.test index e3d3fa72746..a34aa9dfe45 100644 --- a/storage/eloq/mysql-test/mono_basic/t/poor_performance.test +++ b/storage/eloq/mysql-test/mono_basic/t/poor_performance.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc --source include/long_test.inc # diff --git a/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.cnf b/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.cnf index eb02b44fef9..762fa565edf 100644 --- a/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.cnf @@ -2,34 +2,22 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] -plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq thread_handling=pool-of-threads thread_pool_size=2 thread_pool_oversubscribe=10 thread_pool_dedicated_listener=1 table_open_cache_instances=20 -eloq skip-log-bin -eloq_core_num=2 -eloq_logserver_rocksdb_scan_thread_num=3 eloq_cc_protocol=OCC -eloq_enable_mvcc=off -use_stat_tables=complementary -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager -eloq_use_key_cache=true +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 -eloq_metrics_port=18081 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.opt b/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.opt new file mode 100644 index 00000000000..a5bcb4384f6 --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.opt @@ -0,0 +1 @@ +--enable_key_cache=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.test b/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.test index 164f64f069c..8c597030a0f 100644 --- a/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.test +++ b/storage/eloq/mysql-test/mono_basic/t/range_split_keycache.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc --sleep 2 #Here is bug, If not sleep, the mysqld will not return result. --disable_warnings diff --git a/storage/eloq/mysql-test/mono_basic/t/select_for_update_and_share.cnf b/storage/eloq/mysql-test/mono_basic/t/select_for_update_and_share.cnf index 7d76f9ddef7..ceac07fb6ce 100644 --- a/storage/eloq/mysql-test/mono_basic/t/select_for_update_and_share.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/select_for_update_and_share.cnf @@ -2,24 +2,18 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 eloq_cc_protocol=OccRead -eloq_enable_mvcc=off -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/select_for_update_and_share_occ.cnf b/storage/eloq/mysql-test/mono_basic/t/select_for_update_and_share_occ.cnf deleted file mode 100644 index a6fc6821781..00000000000 --- a/storage/eloq/mysql-test/mono_basic/t/select_for_update_and_share_occ.cnf +++ /dev/null @@ -1,26 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq -skip-log-bin -eloq_core_num=1 -eloq_cc_protocol=OCC -eloq_enable_mvcc=off -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 - -[ENV] -MONO1_PORT= @mysqld.1.port -MONO1_SOCK= @mysqld.1.socket diff --git a/storage/eloq/mysql-test/mono_basic/t/single_dead_lock_check.cnf b/storage/eloq/mysql-test/mono_basic/t/single_dead_lock_check.cnf index 1623f6e96ef..fcdaa41abbb 100644 --- a/storage/eloq/mysql-test/mono_basic/t/single_dead_lock_check.cnf +++ b/storage/eloq/mysql-test/mono_basic/t/single_dead_lock_check.cnf @@ -2,30 +2,21 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] -default-storage-engine=eloq -plugin-maturity=experimental thread_handling=pool-of-threads thread_pool_size=1 thread_pool_oversubscribe=1 thread_pool_dedicated_listener=1 table_open_cache_instances=20 -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 -eloq_cc_protocol=Occ -eloq_enable_mvcc=off eloq_cc_protocol=Locking -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_basic/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_basic/t/single_dead_lock_check.opt b/storage/eloq/mysql-test/mono_basic/t/single_dead_lock_check.opt new file mode 100644 index 00000000000..5238541b4fc --- /dev/null +++ b/storage/eloq/mysql-test/mono_basic/t/single_dead_lock_check.opt @@ -0,0 +1 @@ +--core_number=1 --deadlock_check_interval_seconds=10 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_basic/t/single_node.cnf b/storage/eloq/mysql-test/mono_basic/t/single_node.cnf deleted file mode 100644 index 026539218eb..00000000000 --- a/storage/eloq/mysql-test/mono_basic/t/single_node.cnf +++ /dev/null @@ -1,27 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -default-storage-engine=eloq -plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq -skip-log-bin -eloq_core_num=1 -eloq_cc_protocol=Occ -eloq_enable_mvcc=off -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 - -[ENV] -MONO1_PORT= @mysqld.1.port -MONO1_SOCK= @mysqld.1.socket diff --git a/storage/eloq/mysql-test/mono_main/data_substrate.cnf b/storage/eloq/mysql-test/mono_main/data_substrate.cnf new file mode 100644 index 00000000000..91265982658 --- /dev/null +++ b/storage/eloq/mysql-test/mono_main/data_substrate.cnf @@ -0,0 +1,24 @@ +[local] +core_number=2 +enable_mvcc=false +checkpointer_interval=86400 +txlog_rocksdb_scan_threads=3 +hm_bin_path=../../../../data_substrate/host_manager +tx_ip=127.0.0.1 +tx_port=8000 +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test +txlog_rocksdb_cloud_bucket_prefix = txlog- +txlog_rocksdb_cloud_region = ap-northeast-1 +[store] +aws_secret_key=XXXXXXXXXX +aws_access_key_id=XXXXXXXXXXXXXXXXXXXXX + +dynamodb_endpoint=http://127.0.0.1:8000 +bigtable_project_id=XXXXXXXX +bigtable_instance_id=XXXXXXXX +rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +rocksdb_cloud_bucket_name = eloqsql-mtr-test +rocksdb_cloud_bucket_prefix = dss- +rocksdb_cloud_region = ap-northeast-1 +eloq_dss_config_file_path = \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_main/my.cnf b/storage/eloq/mysql-test/mono_main/my.cnf index 8ec799bb850..0e79f14a136 100644 --- a/storage/eloq/mysql-test/mono_main/my.cnf +++ b/storage/eloq/mysql-test/mono_main/my.cnf @@ -2,37 +2,26 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] -plugin-maturity=experimental -plugin_load_add=ha_eloq thread_handling=pool-of-threads thread_pool_size=2 thread_pool_oversubscribe=10 thread_pool_dedicated_listener=1 table_open_cache_instances=20 -eloq -eloq_core_num=2 -eloq_logserver_rocksdb_scan_thread_num=3 default-storage-engine=eloq default-tmp-storage-engine=eloq collation-server=latin1_bin -eloq_checkpointer_interval_sec=86400 # NOTE: the value of this variable should be consistent with the value in bootstrap.test -eloq_ddl_skip_kv=on eloq_cc_protocol=OCC -eloq_enable_mvcc=off use_stat_tables=complementary -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_main/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 -eloq_metrics_port=18081 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_main/r/system_mysql_db_error_log.result b/storage/eloq/mysql-test/mono_main/r/system_mysql_db_error_log.result index 5af3eda0700..94d81b99d61 100644 --- a/storage/eloq/mysql-test/mono_main/r/system_mysql_db_error_log.result +++ b/storage/eloq/mysql-test/mono_main/r/system_mysql_db_error_log.result @@ -112,7 +112,7 @@ SHOW GRANTS FOR good_version_id_100500@localhost; Grants for good_version_id_100500@localhost GRANT SUPER, SET USER, FEDERATED ADMIN, CONNECTION ADMIN, READ_ONLY ADMIN, REPLICATION SLAVE ADMIN, BINLOG ADMIN, BINLOG REPLAY ON *.* TO `good_version_id_100500`@`localhost` DROP USER good_version_id_100500@localhost; -FOUND 1 /Warning.*'user' entry 'bad_access1@localhost' has a wrong 'access' value.*version_id=/ in system_mysql_db_error_log.err -FOUND 1 /Warning.*'user' entry 'bad_version_id_1000000@localhost' has a wrong 'version_id' value 1000000/ in system_mysql_db_error_log.err -FOUND 1 /Warning.*'user' entry 'bad_version_id_minus_3@localhost' has a wrong 'version_id' value -3/ in system_mysql_db_error_log.err -FOUND 1 /Warning.*'user' entry 'bad_version_id_100300@localhost' has a wrong 'version_id' value 100300/ in system_mysql_db_error_log.err +FOUND 1 /WARNING.*'user' entry 'bad_access1@localhost' has a wrong 'access' value.*version_id=/ in system_mysql_db_error_log.err +FOUND 1 /WARNING.*'user' entry 'bad_version_id_1000000@localhost' has a wrong 'version_id' value 1000000/ in system_mysql_db_error_log.err +FOUND 1 /WARNING.*'user' entry 'bad_version_id_minus_3@localhost' has a wrong 'version_id' value -3/ in system_mysql_db_error_log.err +FOUND 1 /WARNING.*'user' entry 'bad_version_id_100300@localhost' has a wrong 'version_id' value 100300/ in system_mysql_db_error_log.err diff --git a/storage/eloq/mysql-test/mono_main/t/commit.opt b/storage/eloq/mysql-test/mono_main/t/commit.opt index c8924faf76c..66a6c43ba79 100644 --- a/storage/eloq/mysql-test/mono_main/t/commit.opt +++ b/storage/eloq/mysql-test/mono_main/t/commit.opt @@ -1,2 +1,2 @@ ---eloq_enable_mvcc=on +--enable_mvcc=true --eloq_cc_protocol=OccRead diff --git a/storage/eloq/mysql-test/mono_main/t/connect-abstract.cnf b/storage/eloq/mysql-test/mono_main/t/connect-abstract.cnf index e50915df444..df9f65a19de 100644 --- a/storage/eloq/mysql-test/mono_main/t/connect-abstract.cnf +++ b/storage/eloq/mysql-test/mono_main/t/connect-abstract.cnf @@ -1,25 +1,22 @@ !include include/default_my.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 default-storage-engine=eloq default-tmp-storage-engine=eloq +thread_handling=pool-of-threads +thread_pool_size=2 +thread_pool_oversubscribe=10 +thread_pool_dedicated_listener=1 collation-server=latin1_bin -eloq_checkpointer_interval_sec=86400 -eloq_ddl_skip_kv=on -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_main/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 # Using @OPT.port here for uniqueness [ENV] diff --git a/storage/eloq/mysql-test/mono_main/t/connect.cnf b/storage/eloq/mysql-test/mono_main/t/connect.cnf index 2eaa8c0fe9a..ac82c3859e8 100644 --- a/storage/eloq/mysql-test/mono_main/t/connect.cnf +++ b/storage/eloq/mysql-test/mono_main/t/connect.cnf @@ -1,26 +1,23 @@ !include include/default_my.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 default-storage-engine=eloq default-tmp-storage-engine=eloq +thread_handling=pool-of-threads +thread_pool_size=2 +thread_pool_oversubscribe=10 +thread_pool_dedicated_listener=1 collation-server=latin1_bin -eloq_checkpointer_interval_sec=86400 -eloq_ddl_skip_kv=on -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_main/data_substrate.cnf [mysqld.1] extra-port= @ENV.MASTER_EXTRA_PORT extra-max-connections=1 -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MASTER_EXTRA_PORT= @OPT.port diff --git a/storage/eloq/mysql-test/mono_main/t/connect2.cnf b/storage/eloq/mysql-test/mono_main/t/connect2.cnf index e0231a32836..74f50f9d4df 100644 --- a/storage/eloq/mysql-test/mono_main/t/connect2.cnf +++ b/storage/eloq/mysql-test/mono_main/t/connect2.cnf @@ -1,20 +1,15 @@ !include include/default_my.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 default-storage-engine=eloq default-tmp-storage-engine=eloq collation-server=latin1_bin -eloq_checkpointer_interval_sec=86400 -eloq_ddl_skip_kv=on -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_main/data_substrate.cnf [mysqld.1] extra-port= @ENV.MASTER_EXTRA_PORT @@ -22,8 +17,6 @@ extra-max-connections=2 thread_handling=pool-of-threads thread_pool_size=1 thread_pool_dedicated_listener=1 -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MASTER_EXTRA_PORT= @OPT.port diff --git a/storage/eloq/mysql-test/mono_main/t/connect2.opt b/storage/eloq/mysql-test/mono_main/t/connect2.opt new file mode 100644 index 00000000000..23109bca354 --- /dev/null +++ b/storage/eloq/mysql-test/mono_main/t/connect2.opt @@ -0,0 +1 @@ +--core_number=1 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_main/t/consistent_snapshot.opt b/storage/eloq/mysql-test/mono_main/t/consistent_snapshot.opt index cb3674d1d02..f10baca9e49 100644 --- a/storage/eloq/mysql-test/mono_main/t/consistent_snapshot.opt +++ b/storage/eloq/mysql-test/mono_main/t/consistent_snapshot.opt @@ -1,2 +1,2 @@ ---eloq_enable_mvcc=on +--enable_mvcc=true --eloq_cc_protocol=OCC \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_main/t/pool_of_threads.cnf b/storage/eloq/mysql-test/mono_main/t/pool_of_threads.cnf index 69393f6870a..2dd914b587e 100644 --- a/storage/eloq/mysql-test/mono_main/t/pool_of_threads.cnf +++ b/storage/eloq/mysql-test/mono_main/t/pool_of_threads.cnf @@ -1,20 +1,15 @@ !include include/default_my.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 default-storage-engine=eloq default-tmp-storage-engine=eloq collation-server=latin1_bin -eloq_checkpointer_interval_sec=86400 -eloq_ddl_skip_kv=on -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_main/data_substrate.cnf [mysqld.1] loose-thread-handling= pool-of-threads @@ -22,8 +17,6 @@ loose-thread_pool_size= 2 loose-thread_pool_max_threads= 2 extra-port= @ENV.MASTER_EXTRA_PORT extra-max-connections=1 -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 [ENV] MASTER_EXTRA_PORT= @OPT.port diff --git a/storage/eloq/mysql-test/mono_main/t/pool_of_threads.opt b/storage/eloq/mysql-test/mono_main/t/pool_of_threads.opt new file mode 100644 index 00000000000..23109bca354 --- /dev/null +++ b/storage/eloq/mysql-test/mono_main/t/pool_of_threads.opt @@ -0,0 +1 @@ +--core_number=1 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_main/t/sp_notembedded.opt b/storage/eloq/mysql-test/mono_main/t/sp_notembedded.opt index c8924faf76c..66a6c43ba79 100644 --- a/storage/eloq/mysql-test/mono_main/t/sp_notembedded.opt +++ b/storage/eloq/mysql-test/mono_main/t/sp_notembedded.opt @@ -1,2 +1,2 @@ ---eloq_enable_mvcc=on +--enable_mvcc=true --eloq_cc_protocol=OccRead diff --git a/storage/eloq/mysql-test/mono_main/t/subselect_exists2in_costmat.cnf b/storage/eloq/mysql-test/mono_main/t/subselect_exists2in_costmat.cnf index 7dc932b8130..0b4e7d6904c 100644 --- a/storage/eloq/mysql-test/mono_main/t/subselect_exists2in_costmat.cnf +++ b/storage/eloq/mysql-test/mono_main/t/subselect_exists2in_costmat.cnf @@ -2,28 +2,21 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 default-storage-engine=eloq default-tmp-storage-engine=eloq collation-server=latin1_bin eloq_cc_protocol=OCC -eloq_enable_mvcc=off use_stat_tables=complementary -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_main/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 -eloq_metrics_port=18081 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_main/t/subselect_mat_cost.cnf b/storage/eloq/mysql-test/mono_main/t/subselect_mat_cost.cnf index 7dc932b8130..0b4e7d6904c 100644 --- a/storage/eloq/mysql-test/mono_main/t/subselect_mat_cost.cnf +++ b/storage/eloq/mysql-test/mono_main/t/subselect_mat_cost.cnf @@ -2,28 +2,21 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq skip-log-bin -eloq_core_num=1 default-storage-engine=eloq default-tmp-storage-engine=eloq collation-server=latin1_bin eloq_cc_protocol=OCC -eloq_enable_mvcc=off use_stat_tables=complementary -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_main/data_substrate.cnf [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000 -eloq_metrics_port=18081 [ENV] MONO1_PORT= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_main/t/system_mysql_db_error_log.test b/storage/eloq/mysql-test/mono_main/t/system_mysql_db_error_log.test index 17c04a9cc14..3404431a99b 100644 --- a/storage/eloq/mysql-test/mono_main/t/system_mysql_db_error_log.test +++ b/storage/eloq/mysql-test/mono_main/t/system_mysql_db_error_log.test @@ -104,14 +104,14 @@ DROP USER good_version_id_100500@localhost; --let SEARCH_FILE=$MYSQLTEST_VARDIR/tmp/system_mysql_db_error_log.err ---let SEARCH_PATTERN= Warning.*'user' entry 'bad_access1@localhost' has a wrong 'access' value.*version_id= +--let SEARCH_PATTERN= WARNING.*'user' entry 'bad_access1@localhost' has a wrong 'access' value.*version_id= --source include/search_pattern_in_file.inc ---let SEARCH_PATTERN= Warning.*'user' entry 'bad_version_id_1000000@localhost' has a wrong 'version_id' value 1000000 +--let SEARCH_PATTERN= WARNING.*'user' entry 'bad_version_id_1000000@localhost' has a wrong 'version_id' value 1000000 --source include/search_pattern_in_file.inc ---let SEARCH_PATTERN= Warning.*'user' entry 'bad_version_id_minus_3@localhost' has a wrong 'version_id' value -3 +--let SEARCH_PATTERN= WARNING.*'user' entry 'bad_version_id_minus_3@localhost' has a wrong 'version_id' value -3 --source include/search_pattern_in_file.inc ---let SEARCH_PATTERN= Warning.*'user' entry 'bad_version_id_100300@localhost' has a wrong 'version_id' value 100300 +--let SEARCH_PATTERN= WARNING.*'user' entry 'bad_version_id_100300@localhost' has a wrong 'version_id' value 100300 --source include/search_pattern_in_file.inc diff --git a/storage/eloq/mysql-test/mono_multi/data_substrate1.cnf b/storage/eloq/mysql-test/mono_multi/data_substrate1.cnf new file mode 100644 index 00000000000..ad848b19cde --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/data_substrate1.cnf @@ -0,0 +1,19 @@ +[local] +core_number=2 +enable_mvcc=false +txlog_rocksdb_scan_threads=3 +hm_bin_path=../../../../data_substrate/host_manager +tx_ip=127.0.0.1 +tx_port=8000 +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test +txlog_rocksdb_cloud_bucket_prefix = txlog- +txlog_rocksdb_cloud_region = ap-northeast-1 + +[cluster] +tx_ip_port_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 + +[store] +eloq_dss_peer_node=127.0.0.1:9100 +aws_secret_key=XXXXXXXXXX +aws_access_key_id=XXXXXXXXXXXXXXXXXXXXX \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/data_substrate2.cnf b/storage/eloq/mysql-test/mono_multi/data_substrate2.cnf new file mode 100644 index 00000000000..584e80c5e8e --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/data_substrate2.cnf @@ -0,0 +1,19 @@ +[local] +core_number=2 +enable_mvcc=false +txlog_rocksdb_scan_threads=3 +hm_bin_path=../../../../data_substrate/host_manager +tx_ip=127.0.0.1 +tx_port=8010 +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test +txlog_rocksdb_cloud_bucket_prefix = txlog- +txlog_rocksdb_cloud_region = ap-northeast-1 + +[cluster] +tx_ip_port_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 + +[store] +eloq_dss_peer_node=127.0.0.1:9100 +aws_secret_key=XXXXXXXXXX +aws_access_key_id=XXXXXXXXXXXXXXXXXXXXX \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/data_substrate3.cnf b/storage/eloq/mysql-test/mono_multi/data_substrate3.cnf new file mode 100644 index 00000000000..c3651b9e08d --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/data_substrate3.cnf @@ -0,0 +1,18 @@ +[local] +core_number=2 +enable_mvcc=false +txlog_rocksdb_scan_threads=3 +hm_bin_path=../../../../data_substrate/host_manager +tx_ip=127.0.0.1 +tx_port=8020 +txlog_rocksdb_cloud_s3_endpoint_url=http://127.0.0.1:9900 +txlog_rocksdb_cloud_bucket_name = eloqsql-mtr-test +txlog_rocksdb_cloud_bucket_prefix = txlog- +txlog_rocksdb_cloud_region = ap-northeast-1 + +[cluster] +tx_ip_port_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 +[store] +eloq_dss_peer_node=127.0.0.1:9100 +aws_secret_key=XXXXXXXXXX +aws_access_key_id=XXXXXXXXXXXXXXXXXXXXX \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/my.cnf b/storage/eloq/mysql-test/mono_multi/my.cnf index f658cab8fee..f9954465798 100644 --- a/storage/eloq/mysql-test/mono_multi/my.cnf +++ b/storage/eloq/mysql-test/mono_multi/my.cnf @@ -2,42 +2,31 @@ # Use default setting for mysqld processes !include include/default_mysqld.cnf !include include/default_client.cnf -!include include/eloq_kv_storage.cnf + !include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf + [mysqld] performance_schema=OFF default_storage_engine=eloq plugin-maturity=experimental -plugin_load_add=ha_eloq skip-log-bin thread_handling=pool-of-threads thread_pool_size=2 thread_pool_dedicated_listener=1 table_open_cache_instances=20 -eloq_core_num=2 -eloq_logserver_rocksdb_scan_thread_num=3 eloq_cc_protocol=OCC -eloq_enable_mvcc=off use_stat_tables=complementary -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager [mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_metrics_port=18081 +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_multi/data_substrate1.cnf [mysqld.2] -eloq_local_ip=127.0.0.1:8010 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_metrics_port=18082 +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_multi/data_substrate2.cnf [mysqld.3] -eloq_local_ip=127.0.0.1:8020 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_metrics_port=18083 +eloq_config = @ENV.MYSQLTEST_VARDIR/../../../storage/eloq/mysql-test/mono_multi/data_substrate3.cnf [ENV] MONO_PORT_1= @mysqld.1.port diff --git a/storage/eloq/mysql-test/mono_multi/t/alter_schema_term_changed.test b/storage/eloq/mysql-test/mono_multi/t/alter_schema_term_changed.test index f708566d939..62f843fee93 100644 --- a/storage/eloq/mysql-test/mono_multi/t/alter_schema_term_changed.test +++ b/storage/eloq/mysql-test/mono_multi/t/alter_schema_term_changed.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc set @@default_storage_engine=eloq; --let $mono_server_count=3 diff --git a/storage/eloq/mysql-test/mono_multi/t/check_blocked_request.cnf b/storage/eloq/mysql-test/mono_multi/t/check_blocked_request.cnf deleted file mode 100644 index 6757dd6a869..00000000000 --- a/storage/eloq/mysql-test/mono_multi/t/check_blocked_request.cnf +++ /dev/null @@ -1,46 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -default-storage-engine=eloq -plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq -skip-log-bin -thread_handling=pool-of-threads -thread_pool_size=1 -thread_pool_dedicated_listener=1 -table_open_cache_instances=20 -eloq_core_num=1 -eloq_cc_protocol=Occ -eloq_enable_mvcc=off -eloq_cc_protocol=Locking -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.2] -eloq_local_ip=127.0.0.1:8010 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.3] -eloq_local_ip=127.0.0.1:8020 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[ENV] -MONO_PORT_1= @mysqld.1.port -MONO_SOCK_1= @mysqld.1.socket - -MONO_PORT_2= @mysqld.2.port -MONO_SOCK_2= @mysqld.2.socket - -MONO_PORT_3= @mysqld.3.port -MONO_SOCK_3= @mysqld.3.socket diff --git a/storage/eloq/mysql-test/mono_multi/t/check_blocked_request.opt b/storage/eloq/mysql-test/mono_multi/t/check_blocked_request.opt new file mode 100644 index 00000000000..c86fab7c7cb --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/t/check_blocked_request.opt @@ -0,0 +1 @@ +--thread_pool_size=1 --core_number=1 --eloq_cc_protocol=Locking \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/t/create_drop_index.test b/storage/eloq/mysql-test/mono_multi/t/create_drop_index.test index 3d045b2f2a5..39e51798983 100644 --- a/storage/eloq/mysql-test/mono_multi/t/create_drop_index.test +++ b/storage/eloq/mysql-test/mono_multi/t/create_drop_index.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc --let $mono_server_count= 3 --source include/mono_init.inc diff --git a/storage/eloq/mysql-test/mono_multi/t/fault_create_drop_index.test b/storage/eloq/mysql-test/mono_multi/t/fault_create_drop_index.test index 3c3c658b119..154de1bf67a 100644 --- a/storage/eloq/mysql-test/mono_multi/t/fault_create_drop_index.test +++ b/storage/eloq/mysql-test/mono_multi/t/fault_create_drop_index.test @@ -1,6 +1,5 @@ --source include/have_eloq.inc --source include/long_test.inc ---source include/have_range_partition.inc # Skip for dynamodb temporary. if (!`SELECT count(*) FROM information_schema.GLOBAL_VARIABLES WHERE VARIABLE_NAME='eloq_kv_storage' diff --git a/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo.cnf b/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo.cnf deleted file mode 100644 index 819b0699c59..00000000000 --- a/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo.cnf +++ /dev/null @@ -1,46 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -default_storage_engine=eloq -plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq -skip-log-bin -thread_handling=pool-of-threads -thread_pool_size=1 -thread_pool_dedicated_listener=1 -table_open_cache_instances=20 -eloq_core_num=1 -eloq_cc_protocol=OCC -eloq_enable_mvcc=on -eloq_checkpointer_delay_sec=0 -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.2] -eloq_local_ip=127.0.0.1:8010 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.3] -eloq_local_ip=127.0.0.1:8020 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[ENV] -MONO_PORT_1= @mysqld.1.port -MONO_SOCK_1= @mysqld.1.socket - -MONO_PORT_2= @mysqld.2.port -MONO_SOCK_2= @mysqld.2.socket - -MONO_PORT_3= @mysqld.3.port -MONO_SOCK_3= @mysqld.3.socket - diff --git a/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo.opt b/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo.opt new file mode 100644 index 00000000000..712bf69a313 --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo.opt @@ -0,0 +1 @@ +--enable_mvcc=true --thread_pool_size=1 --core_number=1 --checkpointer_delay_seconds=0 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk1.cnf b/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk1.cnf deleted file mode 100644 index 819b0699c59..00000000000 --- a/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk1.cnf +++ /dev/null @@ -1,46 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -default_storage_engine=eloq -plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq -skip-log-bin -thread_handling=pool-of-threads -thread_pool_size=1 -thread_pool_dedicated_listener=1 -table_open_cache_instances=20 -eloq_core_num=1 -eloq_cc_protocol=OCC -eloq_enable_mvcc=on -eloq_checkpointer_delay_sec=0 -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.2] -eloq_local_ip=127.0.0.1:8010 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.3] -eloq_local_ip=127.0.0.1:8020 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[ENV] -MONO_PORT_1= @mysqld.1.port -MONO_SOCK_1= @mysqld.1.socket - -MONO_PORT_2= @mysqld.2.port -MONO_SOCK_2= @mysqld.2.socket - -MONO_PORT_3= @mysqld.3.port -MONO_SOCK_3= @mysqld.3.socket - diff --git a/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk1.opt b/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk1.opt new file mode 100644 index 00000000000..9cb02da304e --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk1.opt @@ -0,0 +1 @@ +--thread_pool_size=1 --core_number=1 --enable_mvcc=true --checkpointer_delay_seconds=0 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk2.cnf b/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk2.cnf deleted file mode 100644 index 819b0699c59..00000000000 --- a/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk2.cnf +++ /dev/null @@ -1,46 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -default_storage_engine=eloq -plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq -skip-log-bin -thread_handling=pool-of-threads -thread_pool_size=1 -thread_pool_dedicated_listener=1 -table_open_cache_instances=20 -eloq_core_num=1 -eloq_cc_protocol=OCC -eloq_enable_mvcc=on -eloq_checkpointer_delay_sec=0 -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.2] -eloq_local_ip=127.0.0.1:8010 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.3] -eloq_local_ip=127.0.0.1:8020 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[ENV] -MONO_PORT_1= @mysqld.1.port -MONO_SOCK_1= @mysqld.1.socket - -MONO_PORT_2= @mysqld.2.port -MONO_SOCK_2= @mysqld.2.socket - -MONO_PORT_3= @mysqld.3.port -MONO_SOCK_3= @mysqld.3.socket - diff --git a/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk2.opt b/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk2.opt new file mode 100644 index 00000000000..9cb02da304e --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/t/improve_ckpt_flush_undo_sk2.opt @@ -0,0 +1 @@ +--thread_pool_size=1 --core_number=1 --enable_mvcc=true --checkpointer_delay_seconds=0 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/t/multi_dead_lock_check.cnf b/storage/eloq/mysql-test/mono_multi/t/multi_dead_lock_check.cnf deleted file mode 100644 index fdb49b8dfa3..00000000000 --- a/storage/eloq/mysql-test/mono_multi/t/multi_dead_lock_check.cnf +++ /dev/null @@ -1,48 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -default-storage-engine=eloq -plugin-maturity=experimental -default-storage-engine=eloq -plugin_load_add=ha_eloq -eloq -skip-log-bin -thread_handling=pool-of-threads -thread_pool_size=1 -thread_pool_dedicated_listener=1 -table_open_cache_instances=20 -eloq_core_num=1 -eloq_enable_mvcc=off -eloq_cc_protocol=Locking -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager -# Trigger a deadlock check every 15 seconds to ensure detection occurs between ReRunOp retries during transaction timeouts. -# This guarantees the deadlock is identified before ReRunOp exhausts its 3 retry attempts and forces an error. -eloq_deadlock_interval_sec=15 - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.2] -eloq_local_ip=127.0.0.1:8010 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.3] -eloq_local_ip=127.0.0.1:8020 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[ENV] -MONO_PORT_1= @mysqld.1.port -MONO_SOCK_1= @mysqld.1.socket - -MONO_PORT_2= @mysqld.2.port -MONO_SOCK_2= @mysqld.2.socket - -MONO_PORT_3= @mysqld.3.port -MONO_SOCK_3= @mysqld.3.socket diff --git a/storage/eloq/mysql-test/mono_multi/t/multi_dead_lock_check.opt b/storage/eloq/mysql-test/mono_multi/t/multi_dead_lock_check.opt new file mode 100644 index 00000000000..98bcad26206 --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/t/multi_dead_lock_check.opt @@ -0,0 +1 @@ +--thread_pool_size=1 --core_number=1 --eloq_cc_protocol=Locking --deadlock_check_interval_seconds=15 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/t/range_split.test b/storage/eloq/mysql-test/mono_multi/t/range_split.test index 4234963b9d9..32e64ba6001 100644 --- a/storage/eloq/mysql-test/mono_multi/t/range_split.test +++ b/storage/eloq/mysql-test/mono_multi/t/range_split.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc --sleep 2 #Here is bug, If not sleep, the mysqld will not return result. --let $mono_server_count= 3 diff --git a/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.cnf b/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.cnf deleted file mode 100644 index 308e12c1b68..00000000000 --- a/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.cnf +++ /dev/null @@ -1,51 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -performance_schema=OFF -default_storage_engine=eloq -plugin-maturity=experimental -plugin_load_add=ha_eloq -skip-log-bin -thread_handling=pool-of-threads -thread_pool_size=2 -thread_pool_dedicated_listener=1 -table_open_cache_instances=20 - -eloq_core_num=2 -eloq_logserver_rocksdb_scan_thread_num=3 -eloq_cc_protocol=OCC -eloq_enable_mvcc=off -eloq_use_key_cache=true -use_stat_tables=complementary -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_metrics_port=18081 - -[mysqld.2] -eloq_local_ip=127.0.0.1:8010 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_metrics_port=18082 - -[mysqld.3] -eloq_local_ip=127.0.0.1:8020 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_metrics_port=18083 - -[ENV] -MONO_PORT_1= @mysqld.1.port -MONO_SOCK_1= @mysqld.1.socket - -MONO_PORT_2= @mysqld.2.port -MONO_SOCK_2= @mysqld.2.socket - -MONO_PORT_3= @mysqld.3.port -MONO_SOCK_3= @mysqld.3.socket diff --git a/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.opt b/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.opt new file mode 100644 index 00000000000..a5bcb4384f6 --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.opt @@ -0,0 +1 @@ +--enable_key_cache=true \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.test b/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.test index 4234963b9d9..32e64ba6001 100644 --- a/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.test +++ b/storage/eloq/mysql-test/mono_multi/t/range_split_keycache.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc --sleep 2 #Here is bug, If not sleep, the mysqld will not return result. --let $mono_server_count= 3 diff --git a/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.cnf b/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.cnf deleted file mode 100644 index 40b42867fcf..00000000000 --- a/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.cnf +++ /dev/null @@ -1,49 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -default_storage_engine=eloq -plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq -skip-log-bin -thread_handling=pool-of-threads -thread_pool_size=1 -thread_pool_dedicated_listener=1 -table_open_cache_instances=20 -eloq_core_num=1 -eloq_cc_protocol=OCC -eloq_enable_mvcc=off -use_stat_tables=complementary -eloq_checkpointer_interval_sec=86400 -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_metrics_port=18081 - -[mysqld.2] -eloq_local_ip=127.0.0.1:8010 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_metrics_port=18082 - -[mysqld.3] -eloq_local_ip=127.0.0.1:8020 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 -eloq_metrics_port=18083 - -[ENV] -MONO_PORT_1= @mysqld.1.port -MONO_SOCK_1= @mysqld.1.socket - -MONO_PORT_2= @mysqld.2.port -MONO_SOCK_2= @mysqld.2.socket - -MONO_PORT_3= @mysqld.3.port -MONO_SOCK_3= @mysqld.3.socket diff --git a/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.opt b/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.opt new file mode 100644 index 00000000000..b6c8b13ccdb --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.opt @@ -0,0 +1 @@ +--checkpointer_interval=86400 \ No newline at end of file diff --git a/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.test b/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.test index 9042e57464d..a5423466710 100644 --- a/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.test +++ b/storage/eloq/mysql-test/mono_multi/t/range_split_recovery.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc --sleep 2 #Here is bug, If not sleep, the mysqld will not return result. --let $mono_server_count= 3 diff --git a/storage/eloq/mysql-test/mono_multi/t/range_split_write_forward.test b/storage/eloq/mysql-test/mono_multi/t/range_split_write_forward.test index 70c2a340a3f..3b0b3e75ff9 100644 --- a/storage/eloq/mysql-test/mono_multi/t/range_split_write_forward.test +++ b/storage/eloq/mysql-test/mono_multi/t/range_split_write_forward.test @@ -1,5 +1,4 @@ --source include/have_eloq.inc ---source include/have_range_partition.inc --sleep 2 #Here is bug, If not sleep, the mysqld will not return result. --let $mono_server_count= 3 diff --git a/storage/eloq/mysql-test/mono_multi/t/tx_timeout.cnf b/storage/eloq/mysql-test/mono_multi/t/tx_timeout.cnf deleted file mode 100644 index a2530b9a8e4..00000000000 --- a/storage/eloq/mysql-test/mono_multi/t/tx_timeout.cnf +++ /dev/null @@ -1,45 +0,0 @@ - -# Use default setting for mysqld processes -!include include/default_mysqld.cnf -!include include/default_client.cnf -!include include/eloq_kv_storage.cnf -!include include/eloq_kv_keyspace.cnf -!include include/eloq_kv_dss.cnf - -[mysqld] -default_storage_engine=eloq -plugin-maturity=experimental -plugin_load_add=ha_eloq -eloq -skip-log-bin -thread_handling=pool-of-threads -thread_pool_size=1 -thread_pool_dedicated_listener=1 -table_open_cache_instances=20 -eloq_core_num=1 -eloq_cc_protocol=OCC -eloq_enable_mvcc=off -eloq_hm_bin_path = @ENV.MYSQLTEST_VARDIR/../../storage/eloq/host_manager - -[mysqld.1] -eloq_local_ip=127.0.0.1:8000 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.2] -eloq_local_ip=127.0.0.1:8010 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[mysqld.3] -eloq_local_ip=127.0.0.1:8020 -eloq_ip_list=127.0.0.1:8000,127.0.0.1:8010,127.0.0.1:8020 - -[ENV] -MONO_PORT_1= @mysqld.1.port -MONO_SOCK_1= @mysqld.1.socket - -MONO_PORT_2= @mysqld.2.port -MONO_SOCK_2= @mysqld.2.socket - -MONO_PORT_3= @mysqld.3.port -MONO_SOCK_3= @mysqld.3.socket - diff --git a/storage/eloq/mysql-test/mono_multi/t/tx_timeout.opt b/storage/eloq/mysql-test/mono_multi/t/tx_timeout.opt new file mode 100644 index 00000000000..ab1db8c83b8 --- /dev/null +++ b/storage/eloq/mysql-test/mono_multi/t/tx_timeout.opt @@ -0,0 +1 @@ +--thread_pool_size=1 --core_number=1 \ No newline at end of file diff --git a/storage/eloq/store_handler b/storage/eloq/store_handler deleted file mode 160000 index 4def573ca78..00000000000 --- a/storage/eloq/store_handler +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4def573ca78dab2f59039f0c10e05d5f429e413e diff --git a/storage/eloq/tx_service b/storage/eloq/tx_service deleted file mode 160000 index 4116a40315e..00000000000 --- a/storage/eloq/tx_service +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 4116a40315ee80f38cf39db1a8f00accbe750ca1 diff --git a/storage/innobase/CMakeLists.txt b/storage/innobase/CMakeLists.txt index cc1ec1e302a..8903a17ff2f 100644 --- a/storage/innobase/CMakeLists.txt +++ b/storage/innobase/CMakeLists.txt @@ -400,7 +400,7 @@ ENDIF() IF(NOT (PLUGIN_INNOBASE STREQUAL DYNAMIC)) TARGET_LINK_LIBRARIES(innobase tpool mysys) - ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/extra/mariabackup ${CMAKE_BINARY_DIR}/extra/mariabackup) + ADD_SUBDIRECTORY(${ELOQSQL_SOURCE_DIR}/extra/mariabackup ${ELOQSQL_BINARY_DIR}/extra/mariabackup) ENDIF() IF(WITH_UNIT_TESTS) diff --git a/storage/innobase/innodb.cmake b/storage/innobase/innodb.cmake index ae83fe8f97d..4f8694fef0c 100644 --- a/storage/innobase/innodb.cmake +++ b/storage/innobase/innodb.cmake @@ -126,8 +126,8 @@ ENDIF() CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF) # Include directories under innobase -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innobase/include - ${CMAKE_SOURCE_DIR}/storage/innobase/handler) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/storage/innobase/include + ${ELOQSQL_SOURCE_DIR}/storage/innobase/handler) # Sun Studio bug with -xO2 IF(CMAKE_CXX_COMPILER_ID MATCHES "SunPro" @@ -150,6 +150,6 @@ IF(MSVC) ENDIF() # Include directories under innobase -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/innobase/include - ${CMAKE_SOURCE_DIR}/storage/innobase/handler - ${CMAKE_SOURCE_DIR}/libbinlogevents/include ) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/storage/innobase/include + ${ELOQSQL_SOURCE_DIR}/storage/innobase/handler + ${ELOQSQL_SOURCE_DIR}/libbinlogevents/include ) diff --git a/storage/innobase/unittest/CMakeLists.txt b/storage/innobase/unittest/CMakeLists.txt index 7dd7c111baa..0ad8dc9b219 100644 --- a/storage/innobase/unittest/CMakeLists.txt +++ b/storage/innobase/unittest/CMakeLists.txt @@ -13,10 +13,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/unittest/mytap - ${CMAKE_SOURCE_DIR}/storage/innobase/include - ${CMAKE_SOURCE_DIR}/tpool) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/unittest/mytap + ${ELOQSQL_SOURCE_DIR}/storage/innobase/include + ${ELOQSQL_SOURCE_DIR}/tpool) ADD_EXECUTABLE(innodb_fts-t innodb_fts-t.cc) TARGET_LINK_LIBRARIES(innodb_fts-t mysys mytap) ADD_DEPENDENCIES(innodb_fts-t GenError) diff --git a/storage/maria/unittest/CMakeLists.txt b/storage/maria/unittest/CMakeLists.txt index a2da1507c97..46281a8ade6 100644 --- a/storage/maria/unittest/CMakeLists.txt +++ b/storage/maria/unittest/CMakeLists.txt @@ -13,8 +13,8 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib - ${CMAKE_SOURCE_DIR}/unittest/mytap) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include ${ELOQSQL_SOURCE_DIR}/zlib + ${ELOQSQL_SOURCE_DIR}/unittest/mytap) LINK_LIBRARIES(aria myisam mytap mysys dbug strings ${ZLIB_LIBRARY}) MY_ADD_TESTS(ma_control_file trnman) diff --git a/storage/mroonga/CMakeLists.txt b/storage/mroonga/CMakeLists.txt index c048b214658..cea0dfba10c 100644 --- a/storage/mroonga/CMakeLists.txt +++ b/storage/mroonga/CMakeLists.txt @@ -20,7 +20,7 @@ cmake_minimum_required(VERSION 2.8.12) project(mroonga) -if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}") +if("${ELOQSQL_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}") set(MRN_BUNDLED FALSE) else() set(MRN_BUNDLED TRUE) @@ -75,9 +75,9 @@ endif() set(MRN_PLUGIN_SUFFIX ${CMAKE_SHARED_LIBRARY_SUFFIX}) if(MRN_BUNDLED) - set(MRN_SOURCE_DIR ${CMAKE_SOURCE_DIR}/storage/mroonga) + set(MRN_SOURCE_DIR ${ELOQSQL_SOURCE_DIR}/storage/mroonga) else() - set(MRN_SOURCE_DIR ${CMAKE_SOURCE_DIR}) + set(MRN_SOURCE_DIR ${ELOQSQL_SOURCE_DIR}) endif() file(READ ${MRN_SOURCE_DIR}/version_full MRN_VERSION) @@ -168,9 +168,9 @@ string(REGEX REPLACE "([^;]+)" "${MRN_RELATIVE_DIR_PREFIX}udf/\\1" MRN_UDF_SOURCES "${MRN_UDF_SOURCES}") if(MRN_BUNDLED) - set(MYSQL_SOURCE_DIR ${CMAKE_SOURCE_DIR}) + set(MYSQL_SOURCE_DIR ${ELOQSQL_SOURCE_DIR}) set(MYSQL_BUILD_DIR ${MYSQL_SOURCE_DIR}) - set(MYSQL_CONFIG ${CMAKE_SOURCE_DIR}/scripts/mysql_config) + set(MYSQL_CONFIG ${ELOQSQL_SOURCE_DIR}/scripts/mysql_config) else() set(MYSQL_SOURCE_DIR "/PATH/TO/MYSQL/SOURCE/DIRECTORY/" CACHE PATH "MySQL source directory") @@ -422,7 +422,7 @@ configure_file( "${PROJECT_SOURCE_DIR}/config.sh.in" "${PROJECT_BINARY_DIR}/config.sh") -set(MRN_TEST_SUITE_DIR "${CMAKE_SOURCE_DIR}/mysql-test/suite/mroonga") +set(MRN_TEST_SUITE_DIR "${ELOQSQL_SOURCE_DIR}/mysql-test/suite/mroonga") if(NOT EXISTS "${MRN_TEST_SUITE_DIR}") set(MRN_TEST_SUITE_DIR "${PROJECT_SOURCE_DIR}/mysql-test/mroonga") endif() diff --git a/storage/mroonga/vendor/groonga/CMakeLists.txt b/storage/mroonga/vendor/groonga/CMakeLists.txt index 27afb935467..8efab906952 100644 --- a/storage/mroonga/vendor/groonga/CMakeLists.txt +++ b/storage/mroonga/vendor/groonga/CMakeLists.txt @@ -21,7 +21,7 @@ set(GRN_PROJECT_NAME "groonga") set(GRN_PROJECT_LABEL "Groonga") project("${GRN_PROJECT_NAME}") -if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}") +if("${ELOQSQL_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}") set(GRN_BUNDLED FALSE) else() set(GRN_BUNDLED TRUE) diff --git a/storage/mroonga/vendor/groonga/vendor/plugins/groonga-normalizer-mysql/CMakeLists.txt b/storage/mroonga/vendor/groonga/vendor/plugins/groonga-normalizer-mysql/CMakeLists.txt index 4c2aa343089..616cbb363f6 100644 --- a/storage/mroonga/vendor/groonga/vendor/plugins/groonga-normalizer-mysql/CMakeLists.txt +++ b/storage/mroonga/vendor/groonga/vendor/plugins/groonga-normalizer-mysql/CMakeLists.txt @@ -32,7 +32,7 @@ set(GROONGA_NORMALIZER_MYSQL_EMBED ${GROONGA_NORMALIZER_MYSQL_EMBED_DEFAULT} file(READ "${CMAKE_CURRENT_SOURCE_DIR}/version_full" VERSION) -if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}") +if("${ELOQSQL_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}") set(GROONGA_NORMALIZER_MYSQL_BUNDLED FALSE) else() set(GROONGA_NORMALIZER_MYSQL_BUNDLED TRUE) @@ -57,7 +57,7 @@ else() endif() include_directories( - ${CMAKE_BINARY_DIR} + ${ELOQSQL_BINARY_DIR} ${GROONGA_INCLUDE_DIRS}) link_directories( diff --git a/storage/perfschema/CMakeLists.txt b/storage/perfschema/CMakeLists.txt index 56ea79755a3..605f338e8e3 100644 --- a/storage/perfschema/CMakeLists.txt +++ b/storage/perfschema/CMakeLists.txt @@ -20,9 +20,9 @@ # along with this program; if not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/sql - ${CMAKE_BINARY_DIR}/sql +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/sql + ${ELOQSQL_BINARY_DIR}/sql ${CMAKE_CURRENT_BINARY_DIR} ${PCRE_INCLUDES} ${SSL_INCLUDE_DIRS}) diff --git a/storage/perfschema/unittest/CMakeLists.txt b/storage/perfschema/unittest/CMakeLists.txt index ce20006a00e..5b61157291d 100644 --- a/storage/perfschema/unittest/CMakeLists.txt +++ b/storage/perfschema/unittest/CMakeLists.txt @@ -20,13 +20,13 @@ # along with this program; if not, write to the Free Software Foundation, # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/include/mysql +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/include/mysql ${PCRE_INCLUDES} - ${CMAKE_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/sql ${SSL_INCLUDE_DIRS} - ${CMAKE_SOURCE_DIR}/unittest/mytap - ${CMAKE_SOURCE_DIR}/storage/perfschema) + ${ELOQSQL_SOURCE_DIR}/unittest/mytap + ${ELOQSQL_SOURCE_DIR}/storage/perfschema) ADD_DEFINITIONS(-DMYSQL_SERVER ${SSL_DEFINES}) diff --git a/storage/rocksdb/unittest/CMakeLists.txt b/storage/rocksdb/unittest/CMakeLists.txt index de8d0d82aea..c703cd74b79 100644 --- a/storage/rocksdb/unittest/CMakeLists.txt +++ b/storage/rocksdb/unittest/CMakeLists.txt @@ -1,7 +1,7 @@ IF (TARGET rocksdb) - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/zlib - ${CMAKE_SOURCE_DIR}/unittest/mytap - ${CMAKE_SOURCE_DIR}/rocksdb/third-party/gtest-1.7.0/fused-src + INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include ${ELOQSQL_SOURCE_DIR}/zlib + ${ELOQSQL_SOURCE_DIR}/unittest/mytap + ${ELOQSQL_SOURCE_DIR}/rocksdb/third-party/gtest-1.7.0/fused-src ) LINK_LIBRARIES(mytap mysys dbug strings) diff --git a/storage/spider/CMakeLists.txt b/storage/spider/CMakeLists.txt index 898421fa532..ebe86a1aaec 100644 --- a/storage/spider/CMakeLists.txt +++ b/storage/spider/CMakeLists.txt @@ -40,15 +40,15 @@ IF(EXISTS ${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake) INCLUDE("${PROJECT_SOURCE_DIR}/storage/mysql_storage_engine.cmake") INCLUDE_DIRECTORIES( - ${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/sql - ${CMAKE_SOURCE_DIR}/regex) + ${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/regex) MYSQL_STORAGE_ENGINE(SPIDER) ELSEIF(PLUGIN_PARTITION MATCHES "^NO$") MESSAGE(STATUS "Spider is skipped because partitioning is disabled") ELSE() - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/storage/spider/hs_client) + INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/storage/spider/hs_client) IF(DEB) SET(extra_options COMPONENT spider-engine) diff --git a/strings/CMakeLists.txt b/strings/CMakeLists.txt index 0e62f9e34ad..ffde59f2963 100644 --- a/strings/CMakeLists.txt +++ b/strings/CMakeLists.txt @@ -13,7 +13,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include) SET(STRINGS_SOURCES bchange.c bmove_upp.c ctype-big5.c ctype-bin.c ctype-cp932.c ctype-czech.c ctype-euc_kr.c ctype-eucjpms.c ctype-extra.c ctype-gb2312.c ctype-gbk.c diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8d4d77590a1..4150a49fe56 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -16,11 +16,11 @@ ADD_DEFINITIONS("-DMYSQL_CLIENT") -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/client) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/client) INCLUDE_DIRECTORIES(BEFORE - ${CMAKE_BINARY_DIR}/libmariadb/include - ${CMAKE_SOURCE_DIR}/libmariadb/include) + ${ELOQSQL_BINARY_DIR}/libmariadb/include + ${ELOQSQL_SOURCE_DIR}/libmariadb/include) MYSQL_ADD_EXECUTABLE(mariadb-client-test mysql_client_test.c COMPONENT Test) SET(CLIENT_LIB mariadbclient mysys) diff --git a/unittest/embedded/CMakeLists.txt b/unittest/embedded/CMakeLists.txt index cf48550c377..f2fdb68cf88 100644 --- a/unittest/embedded/CMakeLists.txt +++ b/unittest/embedded/CMakeLists.txt @@ -1,8 +1,8 @@ -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/libmysqld/include +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/libmysqld/include ${PCRE_INCLUDES} - ${CMAKE_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/sql ${MY_READLINE_INCLUDE_DIR} ) diff --git a/unittest/json_lib/CMakeLists.txt b/unittest/json_lib/CMakeLists.txt index 1b2a89b28cd..6d12ce81f2b 100644 --- a/unittest/json_lib/CMakeLists.txt +++ b/unittest/json_lib/CMakeLists.txt @@ -13,10 +13,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/sql - ${CMAKE_SOURCE_DIR}/regex - ${CMAKE_SOURCE_DIR}/unittest/mytap) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/regex + ${ELOQSQL_SOURCE_DIR}/unittest/mytap) # MY_ADD_TESTS(json_lib LINK_LIBRARIES strings dbug) diff --git a/unittest/my_decimal/CMakeLists.txt b/unittest/my_decimal/CMakeLists.txt index 0b5b228276d..879904358fb 100644 --- a/unittest/my_decimal/CMakeLists.txt +++ b/unittest/my_decimal/CMakeLists.txt @@ -13,10 +13,10 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/sql - ${CMAKE_SOURCE_DIR}/regex - ${CMAKE_SOURCE_DIR}/unittest/mytap) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/regex + ${ELOQSQL_SOURCE_DIR}/unittest/mytap) # MY_ADD_TESTS(my_decimal EXT "cc" LINK_LIBRARIES strings dbug) diff --git a/unittest/mytap/CMakeLists.txt b/unittest/mytap/CMakeLists.txt index 189ea5a1c00..b48df55e579 100644 --- a/unittest/mytap/CMakeLists.txt +++ b/unittest/mytap/CMakeLists.txt @@ -13,5 +13,5 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include) ADD_LIBRARY(mytap tap.c) diff --git a/unittest/sql/CMakeLists.txt b/unittest/sql/CMakeLists.txt index b8682de74c3..cc66b8a98d1 100644 --- a/unittest/sql/CMakeLists.txt +++ b/unittest/sql/CMakeLists.txt @@ -15,10 +15,10 @@ MY_ADD_TESTS(my_apc LINK_LIBRARIES mysys EXT cc) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql - ${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/unittest/mytap - ${CMAKE_SOURCE_DIR}/extra/yassl/include) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql + ${ELOQSQL_SOURCE_DIR}/include + ${ELOQSQL_SOURCE_DIR}/unittest/mytap + ${ELOQSQL_SOURCE_DIR}/extra/yassl/include) ADD_EXECUTABLE(explain_filename-t explain_filename-t.cc dummy_builtins.cc) diff --git a/vio/CMakeLists.txt b/vio/CMakeLists.txt index 85810840273..eb0c1c7e4fe 100644 --- a/vio/CMakeLists.txt +++ b/vio/CMakeLists.txt @@ -13,7 +13,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1335 USA -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/include ${SSL_INCLUDE_DIRS}) ADD_DEFINITIONS(${SSL_DEFINES}) diff --git a/win/packaging/CMakeLists.txt b/win/packaging/CMakeLists.txt index a4d951bfa5c..53f5617bda1 100644 --- a/win/packaging/CMakeLists.txt +++ b/win/packaging/CMakeLists.txt @@ -141,7 +141,7 @@ IF(WITH_THIRD_PARTY) IF(THIRD_PARTY_DOWNLOAD_LOCATION) FILE(TO_CMAKE_PATH "${THIRD_PARTY_DOWNLOAD_LOCATION}" THIRD_PARTY_DOWNLOAD_LOCATION) ELSE() - SET(THIRD_PARTY_DOWNLOAD_LOCATION "${CMAKE_BINARY_DIR}") + SET(THIRD_PARTY_DOWNLOAD_LOCATION "${ELOQSQL_BINARY_DIR}") ENDIF() ENDIF() @@ -196,7 +196,7 @@ ADD_CUSTOM_TARGET( -DTHIRD_PARTY_DOWNLOAD_LOCATION="${THIRD_PARTY_DOWNLOAD_LOCATION}" -DTHIRD_PARTY_FEATURE_CONDITION="${THIRD_PARTY_FEATURE_CONDITION}" -DTINY_VERSION="${TINY_VERSION}" - -DTOP_BINDIR="${CMAKE_BINARY_DIR}" + -DTOP_BINDIR="${ELOQSQL_BINARY_DIR}" -DVERSION="${VERSION}" -DWITH_THIRD_PARTY="${WITH_THIRD_PARTY}" -DWIXCA_LOCATION="$" @@ -221,19 +221,19 @@ ADD_CUSTOM_TARGET( win_package_zip ${SIGN_COMMAND} COMMAND ${CMAKE_CPACK_COMMAND} ${CPACK_CONFIG_PARAM} --config ${CMAKE_CURRENT_SOURCE_DIR}/CPackZipConfig.cmake - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR} ) ADD_CUSTOM_TARGET( win_package_debuginfo COMMAND ${CMAKE_CPACK_COMMAND} ${CPACK_CONFIG_PARAM} --config ${CMAKE_CURRENT_SOURCE_DIR}/CPackZipDebugInfoConfig.cmake - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR} ) ADD_CUSTOM_TARGET( win_package_test COMMAND ${CMAKE_CPACK_COMMAND} ${CPACK_CONFIG_PARAM} --config ${CMAKE_CURRENT_SOURCE_DIR}/CPackZipTestConfig.cmake - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${ELOQSQL_BINARY_DIR} ) ADD_CUSTOM_TARGET(win_package DEPENDS win_package_zip win_package_debuginfo) diff --git a/win/packaging/ca/CMakeLists.txt b/win/packaging/ca/CMakeLists.txt index 368a844f830..4302645a64e 100644 --- a/win/packaging/ca/CMakeLists.txt +++ b/win/packaging/ca/CMakeLists.txt @@ -15,10 +15,10 @@ SET(WIXCA_SOURCES CustomAction.cpp CustomAction.def) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql ${CMAKE_CURRENT_SOURCE_DIR} ${WIX_INCLUDE_DIR}) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql ${CMAKE_CURRENT_SOURCE_DIR} ${WIX_INCLUDE_DIR}) # Custom action should not depend on C runtime, since we do not know if CRT is installed. FORCE_STATIC_CRT() ADD_VERSION_INFO(wixca SHARED WIXCA_SOURCES) -ADD_LIBRARY(wixca SHARED EXCLUDE_FROM_ALL ${WIXCA_SOURCES} ${CMAKE_SOURCE_DIR}/sql/winservice.c) +ADD_LIBRARY(wixca SHARED EXCLUDE_FROM_ALL ${WIXCA_SOURCES} ${ELOQSQL_SOURCE_DIR}/sql/winservice.c) TARGET_LINK_LIBRARIES(wixca ${WIX_WCAUTIL_LIBRARY} ${WIX_DUTIL_LIBRARY} msi version) diff --git a/win/upgrade_wizard/CMakeLists.txt b/win/upgrade_wizard/CMakeLists.txt index 20a06a41215..9560372a6dc 100644 --- a/win/upgrade_wizard/CMakeLists.txt +++ b/win/upgrade_wizard/CMakeLists.txt @@ -20,7 +20,7 @@ IF(MSVC_CRT_TYPE MATCHES "/MD") # FORCE static CRT and MFC for upgrade wizard, # so we do not have to redistribute MFC. FORCE_STATIC_CRT() - SET(UPGRADE_WIZARD_SOURCES ${CMAKE_SOURCE_DIR}/sql/winservice.c) + SET(UPGRADE_WIZARD_SOURCES ${ELOQSQL_SOURCE_DIR}/sql/winservice.c) ELSE() SET(UPGRADE_WIZARD_LINK_LIBRARIES winservice) ENDIF() @@ -31,7 +31,7 @@ SET(CMAKE_MFC_FLAG 1) # Enable exception handling (avoids warnings) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc -DNO_WARN_MBCS_MFC_DEPRECATION") -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/sql) +INCLUDE_DIRECTORIES(${ELOQSQL_SOURCE_DIR}/sql) MYSQL_ADD_EXECUTABLE(mariadb-upgrade-wizard upgrade.cpp upgradeDlg.cpp upgrade.rc ${UPGRADE_WIZARD_SOURCES} COMPONENT Server)