[index][resolver]:suport create index with '`' in index_name/table_name/databasename.
This commit is contained in:
		| @ -723,30 +723,74 @@ int ObDDLUtil::generate_build_replica_sql( | ||||
|         } | ||||
|       } | ||||
|  | ||||
|       if (OB_FAIL(ret)) { | ||||
|       } else if (oracle_mode) { | ||||
|         if (OB_FAIL(sql_string.assign_fmt("INSERT /*+ monitor enable_parallel_dml parallel(%ld) opt_param('ddl_execution_id', %ld) opt_param('ddl_task_id', %ld) opt_param('enable_newsort', 'false') use_px */INTO \"%.*s\".\"%.*s\"(%.*s) SELECT /*+ index(\"%.*s\" primary) %.*s */ %.*s from \"%.*s\".\"%.*s\" as of scn %ld %.*s", | ||||
|             real_parallelism, execution_id, task_id, | ||||
|             static_cast<int>(dest_database_name.length()), dest_database_name.ptr(), static_cast<int>(dest_table_name.length()), dest_table_name.ptr(), | ||||
|             static_cast<int>(insert_column_sql_string.length()), insert_column_sql_string.ptr(), | ||||
|             static_cast<int>(source_table_name.length()), source_table_name.ptr(), | ||||
|             static_cast<int>(src_table_schema_version_hint_sql_string.length()), src_table_schema_version_hint_sql_string.ptr(), | ||||
|             static_cast<int>(query_column_sql_string.length()), query_column_sql_string.ptr(), | ||||
|             static_cast<int>(source_database_name.length()), source_database_name.ptr(), static_cast<int>(source_table_name.length()), source_table_name.ptr(), | ||||
|             snapshot_version, static_cast<int>(rowkey_column_sql_string.length()), rowkey_column_sql_string.ptr()))) { | ||||
|           LOG_WARN("fail to assign sql string", K(ret)); | ||||
|         } | ||||
|       } else { | ||||
|         if (OB_FAIL(sql_string.assign_fmt("INSERT /*+ monitor enable_parallel_dml parallel(%ld) opt_param('ddl_execution_id', %ld) opt_param('ddl_task_id', %ld) opt_param('enable_newsort', 'false') use_px */INTO `%.*s`.`%.*s`(%.*s) SELECT /*+ index(`%.*s` primary) %.*s */ %.*s from `%.*s`.`%.*s` as of snapshot %ld %.*s", | ||||
|             real_parallelism, execution_id, task_id, | ||||
|             static_cast<int>(dest_database_name.length()), dest_database_name.ptr(), static_cast<int>(dest_table_name.length()), dest_table_name.ptr(), | ||||
|             static_cast<int>(insert_column_sql_string.length()), insert_column_sql_string.ptr(), | ||||
|             static_cast<int>(source_table_name.length()), source_table_name.ptr(), | ||||
|             static_cast<int>(src_table_schema_version_hint_sql_string.length()), src_table_schema_version_hint_sql_string.ptr(), | ||||
|             static_cast<int>(query_column_sql_string.length()), query_column_sql_string.ptr(), | ||||
|             static_cast<int>(source_database_name.length()), source_database_name.ptr(), static_cast<int>(source_table_name.length()), source_table_name.ptr(), | ||||
|             snapshot_version, static_cast<int>(rowkey_column_sql_string.length()), rowkey_column_sql_string.ptr()))) { | ||||
|           LOG_WARN("fail to assign sql string", K(ret)); | ||||
|       if (OB_SUCC(ret)) { | ||||
|         ObArenaAllocator allocator("ObDDLTmp"); | ||||
|         ObString new_dest_database_name; | ||||
|         ObString new_dest_table_name; | ||||
|         ObString new_source_table_name; | ||||
|         ObString new_source_database_name; | ||||
|         ObString new_table_schema_version_hint; | ||||
|  | ||||
|         if (OB_FAIL(sql::ObSQLUtils::generate_new_name_with_escape_character( | ||||
|               allocator, | ||||
|               dest_database_name, | ||||
|               new_dest_database_name, | ||||
|               oracle_mode))) { | ||||
|           LOG_WARN("fail to generate new name with escape character", | ||||
|                     K(ret), K(dest_database_name)); | ||||
|         } else if (OB_FAIL(sql::ObSQLUtils::generate_new_name_with_escape_character( | ||||
|               allocator, | ||||
|               dest_table_name, | ||||
|               new_dest_table_name, | ||||
|               oracle_mode))) { | ||||
|           LOG_WARN("fail to generate new name with escape character", | ||||
|                     K(ret), K(dest_table_name)); | ||||
|         } else if (OB_FAIL(sql::ObSQLUtils::generate_new_name_with_escape_character( | ||||
|               allocator, | ||||
|               source_database_name, | ||||
|               new_source_database_name, | ||||
|               oracle_mode))) { | ||||
|           LOG_WARN("fail to generate new name with escape character", | ||||
|                     K(ret), K(source_database_name)); | ||||
|         } else if (OB_FAIL(sql::ObSQLUtils::generate_new_name_with_escape_character( | ||||
|               allocator, | ||||
|               source_table_name, | ||||
|               new_source_table_name, | ||||
|               oracle_mode))) { | ||||
|           LOG_WARN("fail to generate new name with escape character", | ||||
|                     K(ret), K(source_table_name)); | ||||
|         } else if (OB_FAIL(sql::ObSQLUtils::generate_new_name_with_escape_character( | ||||
|               allocator, | ||||
|               src_table_schema_version_hint_sql_string.string(), | ||||
|               new_table_schema_version_hint, | ||||
|               oracle_mode | ||||
|         ))) { | ||||
|           LOG_WARN("fail to generate new name with escape character", | ||||
|                     K(ret), K(src_table_schema_version_hint_sql_string)); | ||||
|         } else if (oracle_mode) { | ||||
|           if (OB_FAIL(sql_string.assign_fmt("INSERT /*+ monitor enable_parallel_dml parallel(%ld) opt_param('ddl_execution_id', %ld) opt_param('ddl_task_id', %ld) opt_param('enable_newsort', 'false') use_px */INTO \"%.*s\".\"%.*s\"(%.*s) SELECT /*+ index(\"%.*s\" primary) %.*s */ %.*s from \"%.*s\".\"%.*s\" as of scn %ld %.*s", | ||||
|               real_parallelism, execution_id, task_id, | ||||
|               static_cast<int>(new_dest_database_name.length()), new_dest_database_name.ptr(), static_cast<int>(new_dest_table_name.length()), new_dest_table_name.ptr(), | ||||
|               static_cast<int>(insert_column_sql_string.length()), insert_column_sql_string.ptr(), | ||||
|               static_cast<int>(new_source_table_name.length()), new_source_table_name.ptr(), | ||||
|               static_cast<int>(new_table_schema_version_hint.length()), new_table_schema_version_hint.ptr(), | ||||
|               static_cast<int>(query_column_sql_string.length()), query_column_sql_string.ptr(), | ||||
|               static_cast<int>(new_source_database_name.length()), new_source_database_name.ptr(), static_cast<int>(new_source_table_name.length()), new_source_table_name.ptr(), | ||||
|               snapshot_version, static_cast<int>(rowkey_column_sql_string.length()), rowkey_column_sql_string.ptr()))) { | ||||
|             LOG_WARN("fail to assign sql string", K(ret)); | ||||
|           } | ||||
|         } else { | ||||
|           if (OB_FAIL(sql_string.assign_fmt("INSERT /*+ monitor enable_parallel_dml parallel(%ld) opt_param('ddl_execution_id', %ld) opt_param('ddl_task_id', %ld) opt_param('enable_newsort', 'false') use_px */INTO `%.*s`.`%.*s`(%.*s) SELECT /*+ index(`%.*s` primary) %.*s */ %.*s from `%.*s`.`%.*s` as of snapshot %ld %.*s", | ||||
|               real_parallelism, execution_id, task_id, | ||||
|               static_cast<int>(new_dest_database_name.length()), new_dest_database_name.ptr(), static_cast<int>(new_dest_table_name.length()), new_dest_table_name.ptr(), | ||||
|               static_cast<int>(insert_column_sql_string.length()), insert_column_sql_string.ptr(), | ||||
|               static_cast<int>(new_source_table_name.length()), new_source_table_name.ptr(), | ||||
|               static_cast<int>(new_table_schema_version_hint.length()), new_table_schema_version_hint.ptr(), | ||||
|               static_cast<int>(query_column_sql_string.length()), query_column_sql_string.ptr(), | ||||
|               static_cast<int>(new_source_database_name.length()), new_source_database_name.ptr(), static_cast<int>(new_source_table_name.length()), new_source_table_name.ptr(), | ||||
|               snapshot_version, static_cast<int>(rowkey_column_sql_string.length()), rowkey_column_sql_string.ptr()))) { | ||||
|             LOG_WARN("fail to assign sql string", K(ret)); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Monk-Liu
					Monk-Liu