From aca72b694c05473108915b509a230bb694769209 Mon Sep 17 00:00:00 2001 From: liunyl Date: Fri, 28 Nov 2025 14:43:36 +0000 Subject: [PATCH 1/2] fix eloqdb compile --- data_substrate | 2 +- sql/mysqld.cc | 9 ++++++--- storage/eloq/CMakeLists.txt | 12 ++++-------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/data_substrate b/data_substrate index 4df2f155a07..2e1fb679e11 160000 --- a/data_substrate +++ b/data_substrate @@ -1 +1 @@ -Subproject commit 4df2f155a074d86594c5fe8075407efe284cb014 +Subproject commit 2e1fb679e115452b2d92fd05fe06fe78e599ce45 diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 2a3a07b77a1..d715cd4732e 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -643,8 +643,7 @@ 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_string(eloqsql_config); DECLARE_bool(bootstrap); @@ -5565,10 +5564,12 @@ int mysqld_main(int argc, char **argv) // Build argv for load_defaults // Copy all original arguments first, then append --eloqsql_config and --bootstrap if needed int additional_args = 0; +#ifdef MYSQLD_LIBRARY_MODE if (!FLAGS_eloqsql_config.empty()) additional_args++; if (FLAGS_bootstrap) additional_args++; +#endif char **load_default_argv = (char**)malloc((argc + additional_args + 1) * sizeof(char*)); if (!load_default_argv) @@ -5583,7 +5584,8 @@ int mysqld_main(int argc, char **argv) { load_default_argv[i] = argv[i]; } - + +#ifdef MYSQLD_LIBRARY_MODE // Append --defaults-file if --eloqsql_config specified std::string defaults_file_arg; if (!FLAGS_eloqsql_config.empty()) @@ -5599,6 +5601,7 @@ int mysqld_main(int argc, char **argv) load_default_argv[load_default_argc] = const_cast("--bootstrap"); load_default_argc++; } +#endif // Null-terminate the array load_default_argv[load_default_argc] = nullptr; diff --git a/storage/eloq/CMakeLists.txt b/storage/eloq/CMakeLists.txt index a0a8f4fe343..fb2545053e2 100644 --- a/storage/eloq/CMakeLists.txt +++ b/storage/eloq/CMakeLists.txt @@ -19,10 +19,12 @@ set(WITH_DATA_STORE "ELOQDSS_ROCKSDB" CACHE STRING "Which key-value storage to u set_property(CACHE WITH_DATA_STORE PROPERTY STRINGS "DYNAMODB" "BIGTABLE" "ELOQDSS_ROCKSDB_CLOUD_S3" "ELOQDSS_ELOQSTORE" "ELOQDSS_ROCKSDB") message(NOTICE "WITH_DATA_STORE" : ${WITH_DATA_STORE}) -set(METRICS_LIB "eloq-metrics" CACHE STRING "metrics library name.") - option(WITH_LOG_SERVICE "Compile with built-in log service." ON) +if(BUILD_ELOQSQL_AS_LIBRARY) + add_compile_definitions(MYSQLD_LIBRARY_MODE) +endif() + if(WITH_LOG_SERVICE) message("WITH_LOG_SERVICE: " ${WITH_LOG_SERVICE}) add_compile_definitions(WITH_LOG_SERVICE) @@ -122,12 +124,6 @@ else() endif() 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() - - MYSQL_ADD_PLUGIN(eloq ${MYELOQ_SOURCES} STORAGE_ENGINE MANDATORY From 26f81b0b15a1527b62b244068f469fbc8f3e40bd Mon Sep 17 00:00:00 2001 From: liunyl Date: Fri, 28 Nov 2025 14:59:46 +0000 Subject: [PATCH 2/2] fix format --- storage/eloq/eloq_db.cpp | 8 +++--- storage/eloq/eloq_db_dl.h | 5 ++-- storage/eloq/eloqsql_catalog_factory.cpp | 6 ++--- storage/eloq/ha_eloq.cc | 33 +++++++++++++++--------- 4 files changed, 31 insertions(+), 21 deletions(-) diff --git a/storage/eloq/eloq_db.cpp b/storage/eloq/eloq_db.cpp index 05f72b74d2e..57cc64a639c 100644 --- a/storage/eloq/eloq_db.cpp +++ b/storage/eloq/eloq_db.cpp @@ -396,8 +396,8 @@ int eloq_create_database(THD *thd, LEX_CSTRING db, } auto [yield_func, resume_func]= thd_get_coro_functors(thd); - bool ok= - storage_hd->UpsertDatabase(key, {opt_binary.str, opt_binary.length}, yield_func, resume_func); + bool ok= 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", @@ -439,8 +439,8 @@ int eloq_update_database(THD *thd, LEX_CSTRING db, } auto [yield_func, resume_func]= thd_get_coro_functors(thd); - bool ok= - storage_hd->UpsertDatabase(key, {opt_binary.str, opt_binary.length}, yield_func, resume_func); + bool ok= 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", diff --git a/storage/eloq/eloq_db_dl.h b/storage/eloq/eloq_db_dl.h index fbaebd0acf1..8c9b61aad1c 100644 --- a/storage/eloq/eloq_db_dl.h +++ b/storage/eloq/eloq_db_dl.h @@ -52,8 +52,9 @@ template class Dynamic_array; * must match with that defined by ELOQ_DEFINEx. */ // 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, ...) \ +// 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__) diff --git a/storage/eloq/eloqsql_catalog_factory.cpp b/storage/eloq/eloqsql_catalog_factory.cpp index c8bae494873..c8bf35b5f39 100644 --- a/storage/eloq/eloqsql_catalog_factory.cpp +++ b/storage/eloq/eloqsql_catalog_factory.cpp @@ -435,9 +435,9 @@ MysqlTableSchema::MysqlTableSchema(const txservice::TableName &table_name, } size_t offset= 0; - kv_info_= DataSubstrate::GetGlobal() - ->GetStoreHandler() - ->DeserializeKVCatalogInfo(kv_info, offset); + kv_info_= + DataSubstrate::GetGlobal()->GetStoreHandler()->DeserializeKVCatalogInfo( + kv_info, offset); record_schema_= EloqRecordSchema(&mysql_table_share_); } diff --git a/storage/eloq/ha_eloq.cc b/storage/eloq/ha_eloq.cc index 9844082d1ea..078fc9402d1 100644 --- a/storage/eloq/ha_eloq.cc +++ b/storage/eloq/ha_eloq.cc @@ -281,10 +281,10 @@ static MYSQL_SYSVAR_ENUM(enum_var, // name 0, // def &enum_var_typelib); // typelib - -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(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, @@ -426,13 +426,21 @@ static MYSQL_SYSVAR_INT(signal_monitor, eloq_signal_monitor, nullptr, nullptr, 0, 0, INT_MAX, 0); static struct st_mysql_sys_var *eloq_system_variables[]= { - 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}; + 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). @@ -1436,7 +1444,8 @@ static int eloq_init_func(void *p) LOG(INFO) << "Data substrate initialized, MySQL continuing..."; } #else - // Set the data substrate data path to mysql home directory in standalone mode. + // 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