[FEAT MERGE] merge transfer
Co-authored-by: wxhwang <wxhwang@126.com> Co-authored-by: godyangfight <godyangfight@gmail.com> Co-authored-by: Tyshawn <tuyunshan@gmail.com>
This commit is contained in:
@ -18,7 +18,6 @@
|
||||
#include "share/schema/ob_schema_getter_guard.h"
|
||||
#include "share/ob_locality_parser.h"
|
||||
#include "share/ob_time_utility2.h"
|
||||
#include "share/backup/ob_log_archive_backup_info_mgr.h"
|
||||
#include "share/ob_encryption_util.h"
|
||||
#include "observer/ob_server_struct.h"
|
||||
#include "observer/omt/ob_tenant_config_mgr.h"
|
||||
@ -2550,7 +2549,7 @@ int ObPhysicalRestoreTenantResolver::resolve(const ParseNode &parse_tree)
|
||||
stmt->set_is_preview(false);
|
||||
} else {
|
||||
if (T_TABLE_LIST == node->type_) {
|
||||
// TODO table list restore not support, fix this 4.1
|
||||
// TODO table list restore not support, fix this 4.3
|
||||
ret = OB_NOT_SUPPORTED;
|
||||
LOG_USER_ERROR(OB_NOT_SUPPORTED, "table list restore is");
|
||||
// store database_name/table_name with case sensitive.
|
||||
@ -3793,6 +3792,45 @@ int ObBackupDatabaseResolver::resolve(const ParseNode &parse_tree)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObCancelRestoreResolver::resolve(const ParseNode &parse_tree)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
if (OB_UNLIKELY(T_CANCEL_RESTORE != parse_tree.type_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("type is not T_CANCEL_RESTORE", "type", get_type_name(parse_tree.type_));
|
||||
} else if (OB_UNLIKELY(NULL == parse_tree.children_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("children should not be null", K(ret));
|
||||
} else if (OB_UNLIKELY(1 != parse_tree.num_child_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("children num not match", K(ret), "num_child", parse_tree.num_child_);
|
||||
} else if (GET_MIN_CLUSTER_VERSION() < CLUSTER_VERSION_4_2_0_0) {
|
||||
ret = OB_NOT_SUPPORTED;
|
||||
LOG_WARN("cancel restore is not supported under cluster version 4_2_0_0", K(ret));
|
||||
LOG_USER_ERROR(OB_NOT_SUPPORTED, "cancel restore is");
|
||||
} else {
|
||||
ObCancelRestoreStmt *stmt = NULL;
|
||||
if (OB_ISNULL(stmt = create_stmt<ObCancelRestoreStmt>())) {
|
||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||
LOG_ERROR("failed to create stmt", K(ret));
|
||||
} else if (OB_UNLIKELY(T_IDENT != parse_tree.children_[0]->type_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("invalid node", K(ret));
|
||||
} else {
|
||||
ObString tenant_name;
|
||||
tenant_name.assign_ptr(parse_tree.children_[0]->str_value_, parse_tree.children_[0]->str_len_);
|
||||
stmt->get_drop_tenant_arg().exec_tenant_id_ = OB_SYS_TENANT_ID;
|
||||
stmt->get_drop_tenant_arg().if_exist_ = false;
|
||||
stmt->get_drop_tenant_arg().force_drop_ = true;
|
||||
stmt->get_drop_tenant_arg().delay_to_drop_ = false;
|
||||
stmt->get_drop_tenant_arg().open_recyclebin_ = false;
|
||||
stmt->get_drop_tenant_arg().tenant_name_ = tenant_name;
|
||||
stmt->get_drop_tenant_arg().drop_only_in_restore_ = true;
|
||||
}
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ObAlterSystemResolverUtil::get_tenant_ids(const ParseNode &t_node, ObIArray<uint64_t> &tenant_ids)
|
||||
{
|
||||
int ret = OB_SUCCESS;
|
||||
|
||||
@ -232,6 +232,7 @@ DEF_SIMPLE_CMD_RESOLVER(ObBackupKeyResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObEnableSqlThrottleResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObDisableSqlThrottleResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObSetRegionBandwidthResolver);
|
||||
DEF_SIMPLE_CMD_RESOLVER(ObCancelRestoreResolver);
|
||||
|
||||
#undef DEF_SIMPLE_CMD_RESOLVER
|
||||
|
||||
|
||||
@ -796,6 +796,19 @@ private:
|
||||
common::ObSArray<uint64_t> backup_tenant_ids_;
|
||||
};
|
||||
|
||||
class ObCancelRestoreStmt : public ObSystemCmdStmt
|
||||
{
|
||||
public:
|
||||
ObCancelRestoreStmt()
|
||||
: ObSystemCmdStmt(stmt::T_CANCEL_RESTORE),
|
||||
drop_tenant_arg_() {}
|
||||
virtual ~ObCancelRestoreStmt() {}
|
||||
obrpc::ObDropTenantArg &get_drop_tenant_arg() { return drop_tenant_arg_; }
|
||||
TO_STRING_KV(N_STMT_TYPE, ((int)stmt_type_), K_(drop_tenant_arg));
|
||||
private:
|
||||
obrpc::ObDropTenantArg drop_tenant_arg_;
|
||||
};
|
||||
|
||||
class ObBackupBackupsetStmt : public ObSystemCmdStmt
|
||||
{
|
||||
public:
|
||||
|
||||
@ -1138,17 +1138,35 @@ int ObShowResolver::resolve(const ParseNode &parse_tree)
|
||||
ObSqlStrGenerator sql_gen;
|
||||
show_resv_ctx.condition_node_ = parse_tree.children_[0];
|
||||
show_resv_ctx.stmt_type_ = stmt::T_SHOW_TABLEGROUPS;
|
||||
GEN_SQL_STEP_1(ObShowSqlSet::SHOW_TABLEGROUPS);
|
||||
GEN_SQL_STEP_2(ObShowSqlSet::SHOW_TABLEGROUPS,
|
||||
REAL_NAME(OB_SYS_DATABASE_NAME, OB_ORA_SYS_SCHEMA_NAME),
|
||||
REAL_NAME(OB_ALL_TABLEGROUP_TNAME, OB_ALL_VIRTUAL_TABLEGROUP_REAL_AGENT_ORA_TNAME),
|
||||
REAL_NAME(OB_SYS_DATABASE_NAME, OB_ORA_SYS_SCHEMA_NAME),
|
||||
REAL_NAME(table_name, OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_TNAME),
|
||||
is_oracle_mode ? real_tenant_id : sql_tenant_id,
|
||||
REAL_NAME(OB_SYS_DATABASE_NAME, OB_ORA_SYS_SCHEMA_NAME),
|
||||
REAL_NAME(OB_ALL_DATABASE_TNAME, OB_ALL_VIRTUAL_DATABASE_REAL_AGENT_ORA_TNAME),
|
||||
is_oracle_mode ? real_tenant_id : sql_tenant_id,
|
||||
is_oracle_mode ? real_tenant_id : sql_tenant_id);
|
||||
uint64_t compat_version = OB_INVALID_VERSION;
|
||||
|
||||
if (OB_FAIL(GET_MIN_DATA_VERSION(real_tenant_id, compat_version))) {
|
||||
LOG_WARN("get min data_version failed", K(ret), K(real_tenant_id));
|
||||
} else if (compat_version < DATA_VERSION_4_2_0_0) {
|
||||
GEN_SQL_STEP_1(ObShowSqlSet::SHOW_TABLEGROUPS);
|
||||
GEN_SQL_STEP_2(ObShowSqlSet::SHOW_TABLEGROUPS,
|
||||
REAL_NAME(OB_SYS_DATABASE_NAME, OB_ORA_SYS_SCHEMA_NAME),
|
||||
REAL_NAME(OB_ALL_TABLEGROUP_TNAME, OB_ALL_VIRTUAL_TABLEGROUP_REAL_AGENT_ORA_TNAME),
|
||||
REAL_NAME(OB_SYS_DATABASE_NAME, OB_ORA_SYS_SCHEMA_NAME),
|
||||
REAL_NAME(table_name, OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_TNAME),
|
||||
is_oracle_mode ? real_tenant_id : sql_tenant_id,
|
||||
REAL_NAME(OB_SYS_DATABASE_NAME, OB_ORA_SYS_SCHEMA_NAME),
|
||||
REAL_NAME(OB_ALL_DATABASE_TNAME, OB_ALL_VIRTUAL_DATABASE_REAL_AGENT_ORA_TNAME),
|
||||
is_oracle_mode ? real_tenant_id : sql_tenant_id,
|
||||
is_oracle_mode ? real_tenant_id : sql_tenant_id);
|
||||
} else {
|
||||
GEN_SQL_STEP_1(ObShowSqlSet::SHOW_TABLEGROUPS_V2);
|
||||
GEN_SQL_STEP_2(ObShowSqlSet::SHOW_TABLEGROUPS_V2,
|
||||
REAL_NAME(OB_SYS_DATABASE_NAME, OB_ORA_SYS_SCHEMA_NAME),
|
||||
REAL_NAME(OB_ALL_TABLEGROUP_TNAME, OB_ALL_VIRTUAL_TABLEGROUP_REAL_AGENT_ORA_TNAME),
|
||||
REAL_NAME(OB_SYS_DATABASE_NAME, OB_ORA_SYS_SCHEMA_NAME),
|
||||
REAL_NAME(table_name, OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_TNAME),
|
||||
is_oracle_mode ? real_tenant_id : sql_tenant_id,
|
||||
REAL_NAME(OB_SYS_DATABASE_NAME, OB_ORA_SYS_SCHEMA_NAME),
|
||||
REAL_NAME(OB_ALL_DATABASE_TNAME, OB_ALL_VIRTUAL_DATABASE_REAL_AGENT_ORA_TNAME),
|
||||
is_oracle_mode ? real_tenant_id : sql_tenant_id,
|
||||
is_oracle_mode ? real_tenant_id : sql_tenant_id);
|
||||
}
|
||||
}
|
||||
}();
|
||||
break;
|
||||
@ -2691,6 +2709,19 @@ DEFINE_SHOW_CLAUSE_SET(SHOW_TABLEGROUPS,
|
||||
WHERE T1.TENANT_ID = %lu \
|
||||
ORDER BY T1.TABLEGROUP_NAME, T2.TABLE_NAME",
|
||||
"Tablegroup_name");
|
||||
DEFINE_SHOW_CLAUSE_SET(SHOW_TABLEGROUPS_V2,
|
||||
NULL,
|
||||
"SELECT t1.Tablegroup_name AS Tablegroup_name, t2.Table_name AS Table_name, t3.Database_name AS Database_name, t1.Sharding AS Sharding \
|
||||
FROM %s.%s t1 LEFT JOIN %s.%s t2 ON (t1.tablegroup_id = t2.tablegroup_id and t2.tenant_id = %lu) \
|
||||
LEFT JOIN %s.%s t3 ON (t2.database_id = t3.database_id and t3.tenant_id = %lu) \
|
||||
WHERE t1.tenant_id = %lu AND t2.table_type in (0, 3, 6) \
|
||||
ORDER BY t1.tablegroup_name, t2.table_name",
|
||||
"SELECT T1.TABLEGROUP_NAME AS \"TABLEGROUP_NAME\", T2.TABLE_NAME AS \"TABLE_NAME\", T3.DATABASE_NAME AS \"DATABASE_NAME\", t1.SHARDING AS \"SHARDING\" \
|
||||
FROM %s.%s T1 LEFT JOIN %s.%s T2 ON (T1.TABLEGROUP_ID = T2.TABLEGROUP_ID AND T2.TENANT_ID = %lu) \
|
||||
LEFT JOIN %s.%s T3 ON (T2.DATABASE_ID = T3.DATABASE_ID AND T3.TENANT_ID = %lu) \
|
||||
WHERE T1.TENANT_ID = %lu AND T2.TABLE_TYPE in (0, 3, 6) \
|
||||
ORDER BY T1.TABLEGROUP_NAME, T2.TABLE_NAME",
|
||||
"Tablegroup_name");
|
||||
DEFINE_SHOW_CLAUSE_SET(SHOW_VARIABLES,
|
||||
NULL,
|
||||
"SELECT variable_name AS `Variable_name`, value AS `Value` FROM %s.%s ORDER BY variable_name ASC",
|
||||
|
||||
@ -99,6 +99,7 @@ struct ObShowResolver::ObShowSqlSet
|
||||
DECLARE_SHOW_CLAUSE_SET(SHOW_FULL_TABLES_LIKE);
|
||||
DECLARE_SHOW_CLAUSE_SET(SHOW_CHARSET);
|
||||
DECLARE_SHOW_CLAUSE_SET(SHOW_TABLEGROUPS);
|
||||
DECLARE_SHOW_CLAUSE_SET(SHOW_TABLEGROUPS_V2);
|
||||
DECLARE_SHOW_CLAUSE_SET(SHOW_VARIABLES);
|
||||
DECLARE_SHOW_CLAUSE_SET(SHOW_GLOBAL_VARIABLES);
|
||||
DECLARE_SHOW_CLAUSE_SET(SHOW_COLUMNS);
|
||||
|
||||
Reference in New Issue
Block a user