[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