[BUGFIX] fix insert on dup update process lob col
This commit is contained in:
@ -1347,7 +1347,7 @@ int ObLobManager::append(
|
|||||||
}
|
}
|
||||||
// prepare write buffer
|
// prepare write buffer
|
||||||
ObString write_buffer;
|
ObString write_buffer;
|
||||||
int64_t buf_len = OB_MIN(ObLobMetaUtil::LOB_OPER_PIECE_DATA_SIZE, append_lob_len);
|
int64_t buf_len = OB_MIN(ObLobMetaUtil::LOB_OPER_PIECE_DATA_SIZE, param.byte_size_ + append_lob_len);
|
||||||
char *buf = nullptr;
|
char *buf = nullptr;
|
||||||
if (OB_SUCC(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
buf = reinterpret_cast<char*>(param.allocator_->alloc(buf_len));
|
buf = reinterpret_cast<char*>(param.allocator_->alloc(buf_len));
|
||||||
@ -2679,7 +2679,7 @@ int ObLobManager::write_outrow(ObLobAccessParam& param, ObLobLocatorV2& lob, uin
|
|||||||
} else {
|
} else {
|
||||||
// prepare read buffer
|
// prepare read buffer
|
||||||
ObString read_buffer;
|
ObString read_buffer;
|
||||||
uint64_t read_buff_size = OB_MIN(LOB_READ_BUFFER_LEN, read_param.byte_size_);;
|
uint64_t read_buff_size = OB_MIN(LOB_READ_BUFFER_LEN, read_param.byte_size_);
|
||||||
char *read_buff = static_cast<char*>(param.allocator_->alloc(read_buff_size));
|
char *read_buff = static_cast<char*>(param.allocator_->alloc(read_buff_size));
|
||||||
if (OB_ISNULL(read_buff)) {
|
if (OB_ISNULL(read_buff)) {
|
||||||
ret = OB_ALLOCATE_MEMORY_FAILED;
|
ret = OB_ALLOCATE_MEMORY_FAILED;
|
||||||
@ -3578,6 +3578,10 @@ int ObLobManager::build_lob_param(ObLobAccessParam& param,
|
|||||||
param.snapshot_.source_ = transaction::ObTxReadSnapshot::SRC::LS;
|
param.snapshot_.source_ = transaction::ObTxReadSnapshot::SRC::LS;
|
||||||
param.snapshot_.snapshot_lsid_ = share::ObLSID(location_info->ls_id_);
|
param.snapshot_.snapshot_lsid_ = share::ObLSID(location_info->ls_id_);
|
||||||
param.read_latest_ = retry_info->read_latest_;
|
param.read_latest_ = retry_info->read_latest_;
|
||||||
|
if (param.read_latest_ && OB_NOT_NULL(param.tx_desc_)) {
|
||||||
|
// tx_info->snapshot_seq_ is seq_abs when read_latest is true
|
||||||
|
param.snapshot_.core_.scn_ = param.tx_desc_->get_tx_seq(tx_info->snapshot_seq_);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// When param for write, param.tx_desc_ should not be null
|
// When param for write, param.tx_desc_ should not be null
|
||||||
// If tx indfo from lob locator is old, produce new read snapshot directly
|
// If tx indfo from lob locator is old, produce new read snapshot directly
|
||||||
|
|||||||
Reference in New Issue
Block a user