From 4ae346ef2f4706e9a8284dbc87845e80b65c90f5 Mon Sep 17 00:00:00 2001 From: LoLolobster <949673574@qq.com> Date: Thu, 28 Mar 2024 02:20:33 +0000 Subject: [PATCH] [CP] Allow tenant=all_user when setting archive_lag_target --- .../resolver/cmd/ob_alter_system_resolver.cpp | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/sql/resolver/cmd/ob_alter_system_resolver.cpp b/src/sql/resolver/cmd/ob_alter_system_resolver.cpp index 7561c8f27b..28de2c740a 100644 --- a/src/sql/resolver/cmd/ob_alter_system_resolver.cpp +++ b/src/sql/resolver/cmd/ob_alter_system_resolver.cpp @@ -2265,12 +2265,29 @@ int ObSetConfigResolver::resolve(const ParseNode &parse_tree) affect_all_user, affect_all_meta))) { LOG_WARN("fail to get reslove tenant", K(ret), "exec_tenant_id", tenant_id); - } else if (affect_all || affect_all_user || affect_all_meta) { + } else if (affect_all || affect_all_meta) { ret = OB_NOT_SUPPORTED; - LOG_WARN("all/all_user/all_meta is not supported by ALTER SYSTEM SET ARCHILVE_LAG_TARGET", + LOG_WARN("all/all_meta is not supported by ALTER SYSTEM SET ARCHIVE_LAG_TARGET", KR(ret), K(affect_all), K(affect_all_user), K(affect_all_meta)); LOG_USER_ERROR(OB_NOT_SUPPORTED, - "use all/all_user/all_meta in 'ALTER SYSTEM SET ARCHILVE_LAG_TARGET' syntax is"); + "use all/all_meta in 'ALTER SYSTEM SET ARCHIVE_LAG_TARGET' syntax is"); + } else if (affect_all_user) { + ObSchemaGetterGuard schema_guard; + ObSArray all_tenant_ids; + if (OB_FAIL(GCTX.schema_service_->get_tenant_schema_guard(tenant_id, schema_guard))) { + LOG_WARN("get_schema_guard failed", K(ret)); + } else if (OB_FAIL(schema_guard.get_tenant_ids(all_tenant_ids))) { + LOG_WARN("fail to get tenant id from schema guard", K(ret)); + } else { + ARRAY_FOREACH_X(all_tenant_ids, i, cnt, OB_SUCC(ret)) { + const uint64_t tmp_tenant_id = all_tenant_ids.at(i); + if (is_user_tenant(tmp_tenant_id)) { + if (OB_FAIL(tenant_ids.push_back(tmp_tenant_id))) { + LOG_WARN("fail to push back", K(ret), K(tmp_tenant_id)); + } + } + } + } } else if (tenant_ids.empty()) { if (OB_FAIL(tenant_ids.push_back(tenant_id))) { LOG_WARN("fail to push back", K(ret), K(tenant_id));