From 61b472c37a4b2775c6f257d320d8fdf26d4253c2 Mon Sep 17 00:00:00 2001 From: wudidapaopao <664920313@qq.com> Date: Tue, 2 Jan 2024 09:26:51 +0000 Subject: [PATCH] Fix the issue with inaccurate error messages for duplicate rowkey --- src/storage/access/ob_rows_info.cpp | 8 +++++--- src/storage/ls/ob_ls_tablet_service.cpp | 3 +++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/storage/access/ob_rows_info.cpp b/src/storage/access/ob_rows_info.cpp index 0a8eb07674..6e9d8f0d4e 100644 --- a/src/storage/access/ob_rows_info.cpp +++ b/src/storage/access/ob_rows_info.cpp @@ -205,10 +205,12 @@ int ObRowsInfo::check_duplicate(ObStoreRow *rows, const int64_t row_count, ObRel RowsCompare rows_cmp(*datum_utils_, min_key_, true, ret); std::sort(rowkeys_.begin(), rowkeys_.end(), rows_cmp); } - for (int64_t i = 0; i < row_count; i++) { - permutation_[rowkeys_[i].row_idx_] = i; + if (OB_SUCC(ret)) { + for (int64_t i = 0; i < row_count; i++) { + permutation_[rowkeys_[i].row_idx_] = i; + } + min_key_ = rowkeys_.at(0).marked_rowkey_.get_rowkey(); } - min_key_ = rowkeys_.at(0).marked_rowkey_.get_rowkey(); } } diff --git a/src/storage/ls/ob_ls_tablet_service.cpp b/src/storage/ls/ob_ls_tablet_service.cpp index 9b40cc3cee..e62e1ec950 100644 --- a/src/storage/ls/ob_ls_tablet_service.cpp +++ b/src/storage/ls/ob_ls_tablet_service.cpp @@ -3920,9 +3920,12 @@ int ObLSTabletService::insert_rows_to_tablet( run_ctx.dml_param_.tz_info_)) { LOG_WARN("extract rowkey failed"); } else { + int tmp_ret = OB_SUCCESS; ObString index_name = "PRIMARY"; if (data_table.is_index_table()) { data_table.get_index_name(index_name); + } else if (lib::is_oracle_mode() && OB_TMP_FAIL(data_table.get_primary_key_name(index_name))) { + LOG_WARN("Failed to get pk name", K(ret), K(tmp_ret)); } LOG_USER_ERROR(OB_ERR_PRIMARY_KEY_DUPLICATE, rowkey_buffer, index_name.length(), index_name.ptr());