fix using mysql mode to check oracle mode table name
This commit is contained in:
@ -347,7 +347,8 @@ int ObImportTableJobScheduler::canceling_(share::ObImportTableJob &job)
|
||||
if (task.get_status().is_finish()) {
|
||||
} else if (OB_FAIL(check_import_ddl_task_exist_(task, is_exist))) {
|
||||
LOG_WARN("failed to check import ddl task", K(ret));
|
||||
} else if (!is_exist) {
|
||||
} else if (is_exist && OB_FAIL(ObDDLServerClient::abort_redef_table(arg))) {
|
||||
LOG_WARN("failed to abort redef table", K(ret), K(arg));
|
||||
} else {
|
||||
LOG_INFO("[IMPORT_TABLE]cancel import table task", K(arg));
|
||||
share::ObTaskId trace_id(*ObCurTraceId::get_trace_id());
|
||||
@ -355,8 +356,6 @@ int ObImportTableJobScheduler::canceling_(share::ObImportTableJob &job)
|
||||
if (OB_FAIL(result.set_result(OB_CANCELED, trace_id, GCONF.self_addr_))) {
|
||||
LOG_WARN("failed to set result", K(ret));
|
||||
} else if (OB_FALSE_IT(task.set_result(result))) {
|
||||
} else if (OB_FAIL(ObDDLServerClient::abort_redef_table(arg))) {
|
||||
LOG_WARN("failed to abort redef table", K(ret), K(arg));
|
||||
} else if (OB_FAIL(task_helper_.advance_status(*sql_proxy_, task, next_status))) {
|
||||
LOG_WARN("failed to cancel import task", K(ret), K(task));
|
||||
} else {
|
||||
|
||||
@ -1084,6 +1084,16 @@ int ObSQLUtils::check_and_convert_table_name(const ObCollationType cs_type,
|
||||
ObString &name,
|
||||
const stmt::StmtType stmt_type,
|
||||
const bool is_index_table)
|
||||
{
|
||||
return check_and_convert_table_name(cs_type, preserve_lettercase, name, lib::is_oracle_mode(), stmt_type, is_index_table);
|
||||
}
|
||||
|
||||
int ObSQLUtils::check_and_convert_table_name(const ObCollationType cs_type,
|
||||
const bool preserve_lettercase,
|
||||
ObString &name,
|
||||
const bool is_oracle_mode,
|
||||
const stmt::StmtType stmt_type,
|
||||
const bool is_index_table)
|
||||
{
|
||||
/**
|
||||
* MYSQL模式
|
||||
@ -1101,7 +1111,7 @@ int ObSQLUtils::check_and_convert_table_name(const ObCollationType cs_type,
|
||||
int ret = OB_SUCCESS;
|
||||
int64_t name_len = name.length();
|
||||
const char *name_str = name.ptr();
|
||||
const int64_t max_user_table_name_length = lib::is_oracle_mode()
|
||||
const int64_t max_user_table_name_length = is_oracle_mode
|
||||
? OB_MAX_USER_TABLE_NAME_LENGTH_ORACLE : OB_MAX_USER_TABLE_NAME_LENGTH_MYSQL;
|
||||
const int64_t max_index_name_prefix_len = 30;
|
||||
if (0 == name_len
|
||||
|
||||
@ -324,6 +324,12 @@ public:
|
||||
static int cvt_db_name_to_org(share::schema::ObSchemaGetterGuard &schema_guard,
|
||||
const ObSQLSessionInfo *session,
|
||||
common::ObString &name);
|
||||
static int check_and_convert_table_name(const common::ObCollationType cs_type,
|
||||
const bool preserve_lettercase,
|
||||
common::ObString &name,
|
||||
const bool is_oracle_mode,
|
||||
const stmt::StmtType stmt_type = stmt::T_NONE,
|
||||
const bool is_index_table = false);
|
||||
static int check_and_convert_table_name(const common::ObCollationType cs_type,
|
||||
const bool preserve_lettercase,
|
||||
common::ObString &name,
|
||||
|
||||
@ -5212,6 +5212,7 @@ int ObRecoverTableResolver::resolve_remap_tables_(
|
||||
share::ObRemapTableItem remap_table_item;
|
||||
ObCollationType cs_type = CS_TYPE_INVALID;
|
||||
bool perserve_lettercase = Worker::CompatMode::ORACLE == compat_mode ? true : (case_mode != OB_LOWERCASE_AND_INSENSITIVE);
|
||||
bool is_oracle_mode = Worker::CompatMode::ORACLE == compat_mode;
|
||||
// No matter what name case mode is of target tenant, the names of remap tables are case sensitive.
|
||||
const ObNameCaseMode sensitive_case_mode = OB_ORIGIN_AND_SENSITIVE;
|
||||
for (int64_t i = 0; OB_SUCC(ret) && i < node->num_child_; ++i) {
|
||||
@ -5249,11 +5250,11 @@ int ObRecoverTableResolver::resolve_remap_tables_(
|
||||
|
||||
if (!src_db_name.empty() && OB_FAIL(ObSQLUtils::check_and_convert_db_name(cs_type, perserve_lettercase, src_db_name))) {
|
||||
LOG_WARN("failed to check and convert db name", K(ret), K(cs_type), K(perserve_lettercase), K(src_db_name));
|
||||
} else if (!src_tb_name.empty() && OB_FAIL(ObSQLUtils::check_and_convert_table_name(cs_type, perserve_lettercase, src_tb_name))) {
|
||||
} else if (!src_tb_name.empty() && OB_FAIL(ObSQLUtils::check_and_convert_table_name(cs_type, perserve_lettercase, src_tb_name, is_oracle_mode))) {
|
||||
LOG_WARN("failed to check and convert table name", K(ret), K(cs_type), K(perserve_lettercase), K(src_tb_name));
|
||||
} else if (!dst_db_name.empty() && OB_FAIL(ObSQLUtils::check_and_convert_db_name(cs_type, perserve_lettercase, dst_db_name))) {
|
||||
LOG_WARN("failed to check and convert db name", K(ret), K(cs_type), K(perserve_lettercase), K(dst_db_name));
|
||||
} else if (!dst_tb_name.empty() && OB_FAIL(ObSQLUtils::check_and_convert_table_name(cs_type, perserve_lettercase, dst_tb_name))) {
|
||||
} else if (!dst_tb_name.empty() && OB_FAIL(ObSQLUtils::check_and_convert_table_name(cs_type, perserve_lettercase, dst_tb_name, is_oracle_mode))) {
|
||||
LOG_WARN("failed to check and convert table name", K(ret), K(cs_type), K(perserve_lettercase), K(dst_tb_name));
|
||||
} else if (!src_pt_name.empty() && src_pt_name.length() > OB_MAX_PARTITION_NAME_LENGTH) {
|
||||
ret = OB_ERR_WRONG_VALUE;
|
||||
@ -5367,6 +5368,7 @@ int ObRecoverTableResolver::resolve_recover_tables_(
|
||||
int ret = OB_SUCCESS;
|
||||
ObCollationType cs_type = CS_TYPE_INVALID;
|
||||
bool perserve_lettercase = Worker::CompatMode::ORACLE == compat_mode ? true : (case_mode != OB_LOWERCASE_AND_INSENSITIVE);
|
||||
bool is_oracle_mode = Worker::CompatMode::ORACLE == compat_mode;
|
||||
// No matter what name case mode is of target tenant, the names of recover tables are case sensitive.
|
||||
const ObNameCaseMode sensitive_case_mode = OB_ORIGIN_AND_SENSITIVE;
|
||||
if (OB_ISNULL(node)) {
|
||||
@ -5404,7 +5406,7 @@ int ObRecoverTableResolver::resolve_recover_tables_(
|
||||
} else if (OB_NOT_NULL(db_node) && OB_NOT_NULL(tb_node) && OB_ISNULL(pt_node)) {
|
||||
// db_name.tb_name recover tb_name of db_name
|
||||
ObString db_name(db_node->str_len_, db_node->str_value_), tb_name(tb_node->str_len_, tb_node->str_value_);
|
||||
if (OB_FAIL(ObSQLUtils::check_and_convert_table_name(cs_type, perserve_lettercase, tb_name))) {
|
||||
if (OB_FAIL(ObSQLUtils::check_and_convert_table_name(cs_type, perserve_lettercase, tb_name, is_oracle_mode))) {
|
||||
LOG_WARN("failed to check and convert table name", K(ret), K(cs_type), K(perserve_lettercase), K(tb_name));
|
||||
} else if (OB_FAIL(ObSQLUtils::check_and_convert_db_name(cs_type, perserve_lettercase, db_name))) {
|
||||
LOG_WARN("failed to check and convert db name", K(ret), K(cs_type), K(perserve_lettercase), K(db_name));
|
||||
|
||||
@ -346,7 +346,7 @@ int ObStorageHATabletsBuilder::update_pending_tablets_with_remote()
|
||||
|
||||
const ObTabletID tablet_id = tablet_info.tablet_id_;
|
||||
if (OB_FAIL(ls->ha_get_tablet(tablet_id, tablet_handle))) {
|
||||
if (OB_TABLET_NOT_EXIST) {
|
||||
if (OB_TABLET_NOT_EXIST == ret) {
|
||||
LOG_INFO("tablet is not exist", K(tablet_id));
|
||||
ret = OB_SUCCESS;
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user