diff --git a/deps/oblib/src/lib/mysqlclient/ob_dblink_error_trans.cpp b/deps/oblib/src/lib/mysqlclient/ob_dblink_error_trans.cpp index 5d4304411..e8f7ad358 100644 --- a/deps/oblib/src/lib/mysqlclient/ob_dblink_error_trans.cpp +++ b/deps/oblib/src/lib/mysqlclient/ob_dblink_error_trans.cpp @@ -39,6 +39,11 @@ bool __attribute__((weak)) get_dblink_reuse_connection_cfg() return true; } +bool __attribute__((weak)) get_enable_dblink_cfg() +{ + return true; +} + namespace oceanbase { namespace common diff --git a/deps/oblib/src/lib/mysqlclient/ob_dblink_error_trans.h b/deps/oblib/src/lib/mysqlclient/ob_dblink_error_trans.h index f1d2eb50b..872900b27 100644 --- a/deps/oblib/src/lib/mysqlclient/ob_dblink_error_trans.h +++ b/deps/oblib/src/lib/mysqlclient/ob_dblink_error_trans.h @@ -16,6 +16,7 @@ #include "lib/ob_errno.h" extern bool get_dblink_reuse_connection_cfg(); +extern bool get_enable_dblink_cfg(); namespace oceanbase { diff --git a/deps/oblib/src/lib/mysqlclient/ob_mysql_proxy.cpp b/deps/oblib/src/lib/mysqlclient/ob_mysql_proxy.cpp index 6ef00f73b..e23a1f109 100644 --- a/deps/oblib/src/lib/mysqlclient/ob_mysql_proxy.cpp +++ b/deps/oblib/src/lib/mysqlclient/ob_mysql_proxy.cpp @@ -441,7 +441,10 @@ int ObDbLinkProxy::create_dblink_pool(const dblink_param_ctx ¶m_ctx, const O { int ret = OB_SUCCESS; ObISQLConnectionPool *dblink_pool = NULL; - if (!is_inited()) { + if (!get_enable_dblink_cfg()) { + ret = OB_OP_NOT_ALLOW; + LOG_WARN("dblink is disabled", K(ret)); + } else if (!is_inited()) { ret = OB_NOT_INIT; LOG_WARN("mysql proxy not inited"); } else if (OB_FAIL(switch_dblink_conn_pool(param_ctx.link_type_, dblink_pool))) { diff --git a/src/share/parameter/ob_parameter_seed.ipp b/src/share/parameter/ob_parameter_seed.ipp index 159b98a8f..e7cdc09be 100644 --- a/src/share/parameter/ob_parameter_seed.ipp +++ b/src/share/parameter/ob_parameter_seed.ipp @@ -1616,6 +1616,9 @@ ERRSIM_DEF_STR(errsim_transfer_backfill_server_addr, OB_CLUSTER_PARAMETER, "", DEF_BOOL(_ob_enable_direct_load, OB_CLUSTER_PARAMETER, "True", "Enable or disable direct path load", ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); +DEF_BOOL(enable_dblink, OB_CLUSTER_PARAMETER, "True", + "Enable or disable dblink", + ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); DEF_BOOL(_px_join_skew_handling, OB_TENANT_PARAMETER, "False", "enables skew handling for parallel joins. The default value is True.", ObParameterAttr(Section::OBSERVER, Source::DEFAULT, EditLevel::DYNAMIC_EFFECTIVE)); diff --git a/src/sql/dblink/ob_dblink_utils.cpp b/src/sql/dblink/ob_dblink_utils.cpp index 3478271fe..f180665b9 100644 --- a/src/sql/dblink/ob_dblink_utils.cpp +++ b/src/sql/dblink/ob_dblink_utils.cpp @@ -38,6 +38,11 @@ bool get_dblink_reuse_connection_cfg() return tenant_config.is_valid() ? tenant_config->_enable_dblink_reuse_connection : true; } +bool get_enable_dblink_cfg() +{ + return GCONF.enable_dblink; +} + uint64_t ObDblinkService::get_current_tenant_id() { return MTL_ID(); diff --git a/src/sql/resolver/ddl/ob_create_dblink_resolver.cpp b/src/sql/resolver/ddl/ob_create_dblink_resolver.cpp index 05b6ed101..2c9db041c 100644 --- a/src/sql/resolver/ddl/ob_create_dblink_resolver.cpp +++ b/src/sql/resolver/ddl/ob_create_dblink_resolver.cpp @@ -43,6 +43,9 @@ int ObCreateDbLinkResolver::resolve(const ParseNode &parse_tree) || OB_UNLIKELY(node->num_child_ != DBLINK_NODE_COUNT)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("invalid parse tree", K(ret), KP(node), K(node->type_), K(T_CREATE_DBLINK), K(node->num_child_)); + } else if (!GCONF.enable_dblink) { + ret = OB_OP_NOT_ALLOW; + LOG_WARN("dblink is disabled", K(ret)); } else if (OB_ISNULL(session_info_) || OB_ISNULL(schema_checker_)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("session info should not be null", K(ret)); diff --git a/src/sql/resolver/ddl/ob_drop_dblink_resolver.cpp b/src/sql/resolver/ddl/ob_drop_dblink_resolver.cpp index 566aba210..3f7dc0fdf 100644 --- a/src/sql/resolver/ddl/ob_drop_dblink_resolver.cpp +++ b/src/sql/resolver/ddl/ob_drop_dblink_resolver.cpp @@ -43,6 +43,9 @@ int ObDropDbLinkResolver::resolve(const ParseNode &parse_tree) || OB_UNLIKELY(node->num_child_ != DBLINK_NODE_COUNT)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("invalid parse tree", K(ret)); + } else if (!GCONF.enable_dblink) { + ret = OB_OP_NOT_ALLOW; + LOG_WARN("dblink is disabled", K(ret)); } else if (OB_ISNULL(session_info_)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("session info should not be null", K(ret)); diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result index 20b94f126..1e70a2d3f 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/all_virtual_sys_parameter_stat.result @@ -79,6 +79,7 @@ dump_data_dictionary_to_log_interval enable_async_syslog enable_cgroup enable_crazy_medium_compaction +enable_dblink enable_ddl enable_early_lock_release enable_kv_ttl