[index][resolver]:suport create index with '`' in index_name/table_name/databasename.
This commit is contained in:
		| @ -723,33 +723,77 @@ int ObDDLUtil::generate_build_replica_sql( | |||||||
|         } |         } | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       if (OB_FAIL(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) { |         } 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", |           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, |               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>(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>(insert_column_sql_string.length()), insert_column_sql_string.ptr(), | ||||||
|             static_cast<int>(source_table_name.length()), source_table_name.ptr(), |               static_cast<int>(new_source_table_name.length()), new_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>(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>(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(), |               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()))) { |               snapshot_version, static_cast<int>(rowkey_column_sql_string.length()), rowkey_column_sql_string.ptr()))) { | ||||||
|             LOG_WARN("fail to assign sql string", K(ret)); |             LOG_WARN("fail to assign sql string", K(ret)); | ||||||
|           } |           } | ||||||
|         } else { |         } 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", |           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, |               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>(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>(insert_column_sql_string.length()), insert_column_sql_string.ptr(), | ||||||
|             static_cast<int>(source_table_name.length()), source_table_name.ptr(), |               static_cast<int>(new_source_table_name.length()), new_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>(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>(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(), |               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()))) { |               snapshot_version, static_cast<int>(rowkey_column_sql_string.length()), rowkey_column_sql_string.ptr()))) { | ||||||
|             LOG_WARN("fail to assign sql string", K(ret)); |             LOG_WARN("fail to assign sql string", K(ret)); | ||||||
|           } |           } | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|  |     } | ||||||
|     LOG_INFO("execute sql", K(sql_string)); |     LOG_INFO("execute sql", K(sql_string)); | ||||||
|   } |   } | ||||||
|   return ret; |   return ret; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Monk-Liu
					Monk-Liu