Fix DBMS_VECTOR refesh_index & rebuild_index for duplicate table

This commit is contained in:
GITHUBear 2024-11-01 10:13:50 +00:00 committed by ob-robot
parent 315836473a
commit a7f49f4f53
3 changed files with 12 additions and 3 deletions

View File

@ -725,7 +725,8 @@ public:
ObDASTableLoc *&table_loc);
bool is_duplicate_table() const { return loc_meta_.is_dup_table_; }
bool is_dynamic_replica_select_table() const { return (is_duplicate_table() || get_is_broadcast_table()) &&
!is_partitioned(); }
!is_partitioned() &&
loc_meta_.is_weak_read_; }
void set_broadcast_table(const bool is_broadcast_table) {
is_broadcast_table_ = is_broadcast_table;
}

View File

@ -958,6 +958,7 @@ int ObVectorRefreshIndexExecutor::do_refresh_with_retry()
refresh_ctx.index_id_tb_id_ = index_id_tb_id_;
refresh_ctx.refresh_method_ = refresh_method_;
refresh_ctx.refresh_threshold_ = refresh_threshold_;
int retry_cnt = 0;
CK(OB_NOT_NULL(ctx_));
while (OB_SUCC(ret) && OB_SUCC(ctx_->check_status())) {
@ -979,9 +980,11 @@ int ObVectorRefreshIndexExecutor::do_refresh_with_retry()
}
}
if (OB_FAIL(ret)) {
if (ObVectorRefreshIndexExecutor::is_refresh_retry_ret_code(ret)) {
if (retry_cnt < MAX_REFRESH_RETRY_THRESHOLD &&
ObVectorRefreshIndexExecutor::is_refresh_retry_ret_code(ret)) {
ret = OB_SUCCESS;
refresh_ctx.reuse();
++retry_cnt;
ob_usleep(1LL * 1000 * 1000);
}
} else {
@ -1045,6 +1048,7 @@ int ObVectorRefreshIndexExecutor::do_rebuild_with_retry()
refresh_ctx.idx_parameters_ = idx_parameters_;
refresh_ctx.idx_parallel_creation_ = idx_parallel_creation_;
refresh_ctx.delta_rate_threshold_ = delta_rate_threshold_;
int retry_cnt = 0;
CK(OB_NOT_NULL(ctx_));
while (OB_SUCC(ret) && OB_SUCC(ctx_->check_status())) {
@ -1066,9 +1070,11 @@ int ObVectorRefreshIndexExecutor::do_rebuild_with_retry()
}
}
if (OB_FAIL(ret)) {
if (ObVectorRefreshIndexExecutor::is_refresh_retry_ret_code(ret)) {
if (retry_cnt < MAX_REFRESH_RETRY_THRESHOLD &&
ObVectorRefreshIndexExecutor::is_refresh_retry_ret_code(ret)) {
ret = OB_SUCCESS;
refresh_ctx.reuse();
++retry_cnt;
ob_usleep(1LL * 1000 * 1000);
}
} else {

View File

@ -114,6 +114,8 @@ public:
class ObVectorRefreshIndexExecutor {
public:
static const int MAX_REFRESH_RETRY_THRESHOLD = 3;
enum class VectorIndexAuxType : int8_t {
DELTA_BUF_INDEX = 0,
INDEX_ID_INDEX = 1,