[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