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()) { |       if (task.get_status().is_finish()) { | ||||||
|       } else if (OB_FAIL(check_import_ddl_task_exist_(task, is_exist))) { |       } else if (OB_FAIL(check_import_ddl_task_exist_(task, is_exist))) { | ||||||
|         LOG_WARN("failed to check import ddl task", K(ret)); |         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 { |       } else { | ||||||
|         LOG_INFO("[IMPORT_TABLE]cancel import table task", K(arg)); |         LOG_INFO("[IMPORT_TABLE]cancel import table task", K(arg)); | ||||||
|         share::ObTaskId trace_id(*ObCurTraceId::get_trace_id()); |         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_))) { |         if (OB_FAIL(result.set_result(OB_CANCELED, trace_id, GCONF.self_addr_))) { | ||||||
|           LOG_WARN("failed to set result", K(ret)); |           LOG_WARN("failed to set result", K(ret)); | ||||||
|         } else if (OB_FALSE_IT(task.set_result(result))) { |         } 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))) { |         } else if (OB_FAIL(task_helper_.advance_status(*sql_proxy_, task, next_status))) { | ||||||
|           LOG_WARN("failed to cancel import task", K(ret), K(task)); |           LOG_WARN("failed to cancel import task", K(ret), K(task)); | ||||||
|         } else { |         } else { | ||||||
|  | |||||||
| @ -1084,6 +1084,16 @@ int ObSQLUtils::check_and_convert_table_name(const ObCollationType cs_type, | |||||||
|                                              ObString &name, |                                              ObString &name, | ||||||
|                                              const stmt::StmtType stmt_type, |                                              const stmt::StmtType stmt_type, | ||||||
|                                              const bool is_index_table) |                                              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模式 |    * MYSQL模式 | ||||||
| @ -1101,7 +1111,7 @@ int ObSQLUtils::check_and_convert_table_name(const ObCollationType cs_type, | |||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   int64_t name_len = name.length(); |   int64_t name_len = name.length(); | ||||||
|   const char *name_str = name.ptr(); |   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; |               ? OB_MAX_USER_TABLE_NAME_LENGTH_ORACLE : OB_MAX_USER_TABLE_NAME_LENGTH_MYSQL; | ||||||
|   const int64_t max_index_name_prefix_len = 30; |   const int64_t max_index_name_prefix_len = 30; | ||||||
|   if (0 == name_len |   if (0 == name_len | ||||||
|  | |||||||
| @ -324,6 +324,12 @@ public: | |||||||
|   static int cvt_db_name_to_org(share::schema::ObSchemaGetterGuard &schema_guard, |   static int cvt_db_name_to_org(share::schema::ObSchemaGetterGuard &schema_guard, | ||||||
|                                 const ObSQLSessionInfo *session, |                                 const ObSQLSessionInfo *session, | ||||||
|                                 common::ObString &name); |                                 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, |   static int check_and_convert_table_name(const common::ObCollationType cs_type, | ||||||
|                                           const bool preserve_lettercase, |                                           const bool preserve_lettercase, | ||||||
|                                           common::ObString &name, |                                           common::ObString &name, | ||||||
|  | |||||||
| @ -5212,6 +5212,7 @@ int ObRecoverTableResolver::resolve_remap_tables_( | |||||||
|     share::ObRemapTableItem remap_table_item; |     share::ObRemapTableItem remap_table_item; | ||||||
|     ObCollationType cs_type = CS_TYPE_INVALID; |     ObCollationType cs_type = CS_TYPE_INVALID; | ||||||
|     bool perserve_lettercase = Worker::CompatMode::ORACLE == compat_mode ? true : (case_mode != OB_LOWERCASE_AND_INSENSITIVE); |     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. |     // 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; |     const ObNameCaseMode sensitive_case_mode = OB_ORIGIN_AND_SENSITIVE; | ||||||
|     for (int64_t i = 0; OB_SUCC(ret) && i < node->num_child_; ++i) { |     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))) { |         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)); |           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)); |           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))) { |         } 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)); |           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)); |           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) { |         } else if (!src_pt_name.empty() && src_pt_name.length() > OB_MAX_PARTITION_NAME_LENGTH) { | ||||||
|           ret = OB_ERR_WRONG_VALUE; |           ret = OB_ERR_WRONG_VALUE; | ||||||
| @ -5367,6 +5368,7 @@ int ObRecoverTableResolver::resolve_recover_tables_( | |||||||
|   int ret = OB_SUCCESS; |   int ret = OB_SUCCESS; | ||||||
|   ObCollationType cs_type = CS_TYPE_INVALID; |   ObCollationType cs_type = CS_TYPE_INVALID; | ||||||
|   bool perserve_lettercase = Worker::CompatMode::ORACLE == compat_mode ? true : (case_mode != OB_LOWERCASE_AND_INSENSITIVE); |   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. |   // 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; |     const ObNameCaseMode sensitive_case_mode = OB_ORIGIN_AND_SENSITIVE; | ||||||
|   if (OB_ISNULL(node)) { |   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)) { |       } 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 |         // 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_); |         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)); |           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))) { |         } 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)); |           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_; |       const ObTabletID tablet_id = tablet_info.tablet_id_; | ||||||
|       if (OB_FAIL(ls->ha_get_tablet(tablet_id, tablet_handle))) { |       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)); |           LOG_INFO("tablet is not exist", K(tablet_id)); | ||||||
|           ret = OB_SUCCESS; |           ret = OB_SUCCESS; | ||||||
|           continue; |           continue; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 hamstersox
					hamstersox