[FEAT MERGE] support restore encrypted tenant
This commit is contained in:
@ -2470,7 +2470,7 @@ int ObPhysicalRestoreTenantResolver::resolve(const ParseNode &parse_tree)
|
||||
} else if (OB_UNLIKELY(NULL == parse_tree.children_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("children should not be null");
|
||||
} else if (OB_UNLIKELY(6 != parse_tree.num_child_)) {
|
||||
} else if (OB_UNLIKELY(8 != parse_tree.num_child_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("num of children not match", K(ret), "child_num", parse_tree.num_child_);
|
||||
} else {
|
||||
@ -2495,7 +2495,31 @@ int ObPhysicalRestoreTenantResolver::resolve(const ParseNode &parse_tree)
|
||||
}
|
||||
}
|
||||
}
|
||||
ParseNode *description_node = parse_tree.children_[4];
|
||||
if (OB_FAIL(ret)) {
|
||||
// do nothing
|
||||
} else if (OB_NOT_NULL(parse_tree.children_[4])
|
||||
&& OB_FAIL(Util::resolve_string(parse_tree.children_[4],
|
||||
stmt->get_rpc_arg().encrypt_key_))) {
|
||||
LOG_WARN("failed to resolve encrypt key", K(ret));
|
||||
} else if (OB_NOT_NULL(parse_tree.children_[5])) {
|
||||
ParseNode *kms_node = parse_tree.children_[5];
|
||||
if (2 != kms_node->num_child_) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("num of children not match", K(ret), "child_num", kms_node->num_child_);
|
||||
} else if (OB_ISNULL(kms_node->children_[0])) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("kms uri should not be NULL", K(ret));
|
||||
} else if (OB_FAIL(Util::resolve_string(kms_node->children_[0],
|
||||
stmt->get_rpc_arg().kms_uri_))) {
|
||||
LOG_WARN("failed to resolve kms uri", K(ret));
|
||||
} else if (OB_NOT_NULL(kms_node->children_[1])
|
||||
&& OB_FAIL(Util::resolve_string(kms_node->children_[1],
|
||||
stmt->get_rpc_arg().kms_encrypt_key_))) {
|
||||
LOG_WARN("failed to resolve kms encrypt key", K(ret));
|
||||
}
|
||||
}
|
||||
|
||||
ParseNode *description_node = parse_tree.children_[6];
|
||||
if (OB_FAIL(ret)) {
|
||||
// do nothing
|
||||
} else if (OB_FAIL(Util::resolve_string(parse_tree.children_[3],
|
||||
@ -2520,8 +2544,8 @@ int ObPhysicalRestoreTenantResolver::resolve(const ParseNode &parse_tree)
|
||||
}
|
||||
|
||||
if (OB_SUCC(ret)) {
|
||||
if (6 == parse_tree.num_child_) { // resolve table_list
|
||||
const ParseNode *node = parse_tree.children_[5];
|
||||
if (8 == parse_tree.num_child_) { // resolve table_list
|
||||
const ParseNode *node = parse_tree.children_[7];
|
||||
if (OB_ISNULL(node)) {
|
||||
stmt->set_is_preview(false);
|
||||
} else {
|
||||
@ -4046,6 +4070,12 @@ int ObDeletePolicyResolver::resolve(const ParseNode &parse_tree)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObBackupKeyResolver::resolve(const ParseNode &parse_tree)
|
||||
{
|
||||
int ret = OB_ERR_PARSE_SQL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObBackupArchiveLogResolver::resolve(const ParseNode &parse_tree)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -228,6 +228,7 @@ DEF_SIMPLE_CMD_RESOLVER(ObBackupDatabaseResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObBackupManageResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObBackupCleanResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObDeletePolicyResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObBackupKeyResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObEnableSqlThrottleResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObDisableSqlThrottleResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObSetRegionBandwidthResolver);
|
||||
|
||||
@ -1093,6 +1093,45 @@ private:
|
||||
DISALLOW_COPY_AND_ASSIGN(ObDeletePolicyStmt);
|
||||
};
|
||||
|
||||
class ObBackupKeyStmt : public ObSystemCmdStmt
|
||||
{
|
||||
public:
|
||||
ObBackupKeyStmt()
|
||||
: ObSystemCmdStmt(stmt::T_BACKUP_KEY),
|
||||
tenant_id_(OB_INVALID_TENANT_ID),
|
||||
backup_dest_()
|
||||
{
|
||||
}
|
||||
virtual ~ObBackupKeyStmt() {}
|
||||
|
||||
uint64 get_tenant_id() const { return tenant_id_; }
|
||||
const share::ObBackupPathString &get_backup_dest() const { return backup_dest_; }
|
||||
const ObString &get_encrypt_key() const { return encrypt_key_; }
|
||||
int set_param(const uint64_t tenant_id,
|
||||
const share::ObBackupPathString &backup_dest,
|
||||
const ObString &encrypt_key)
|
||||
{
|
||||
int ret = common::OB_SUCCESS;
|
||||
if (OB_INVALID_ID == tenant_id) {
|
||||
ret = OB_INVALID_ARGUMENT;
|
||||
COMMON_LOG(WARN, "invalid args", K(tenant_id));
|
||||
} else if (OB_FAIL(backup_dest_.assign(backup_dest))) {
|
||||
COMMON_LOG(WARN, "set backup dest failed", K(backup_dest));
|
||||
} else {
|
||||
tenant_id_ = tenant_id;
|
||||
encrypt_key_ = encrypt_key;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
TO_STRING_KV(N_STMT_TYPE, ((int)stmt_type_), K_(tenant_id), K_(backup_dest));
|
||||
|
||||
private:
|
||||
uint64_t tenant_id_;
|
||||
share::ObBackupPathString backup_dest_;
|
||||
ObString encrypt_key_;
|
||||
};
|
||||
|
||||
class ObBackupSetEncryptionStmt : public ObSystemCmdStmt
|
||||
{
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user