[BUGFIX]fix lob not strict default val

This commit is contained in:
obdev 2023-01-29 15:47:01 +08:00 committed by ob-robot
parent e2586353e4
commit 6f294fda6b
2 changed files with 13 additions and 13 deletions

View File

@ -961,7 +961,7 @@ public:
{
validate_has_lob_header(has_lob_header_);
return has_lob_header_ && OB_NOT_NULL(ptr_) &&
!is_lob_disk_locator() &&
!is_lob_disk_locator() && size_ >= MEM_LOB_COMMON_HEADER_LEN &&
(reinterpret_cast<ObMemLobCommon *>(ptr_))->is_read_only();
}
@ -973,7 +973,7 @@ public:
} else if (OB_NOT_NULL(ptr_)) {
if (is_lob_disk_locator()) {
bret = (reinterpret_cast<ObLobCommon *>(ptr_))->in_row_;
} else {
} else if (size_ >= MEM_LOB_COMMON_HEADER_LEN) {
bret = (reinterpret_cast<ObMemLobCommon *>(ptr_))->has_inrow_data();
}
}
@ -984,7 +984,7 @@ public:
{
validate_has_lob_header(has_lob_header_);
return has_lob_header_ && OB_NOT_NULL(ptr_) &&
!is_lob_disk_locator() &&
!is_lob_disk_locator() && size_ >= MEM_LOB_COMMON_HEADER_LEN &&
(reinterpret_cast<ObMemLobCommon *>(ptr_))->is_open();
}
@ -992,7 +992,7 @@ public:
{
validate_has_lob_header(has_lob_header_);
return has_lob_header_ && OB_NOT_NULL(ptr_) &&
!is_lob_disk_locator() &&
!is_lob_disk_locator() && size_ >= MEM_LOB_COMMON_HEADER_LEN &&
(reinterpret_cast<ObMemLobCommon *>(ptr_))->is_simple();
}
@ -1000,7 +1000,7 @@ public:
{
validate_has_lob_header(has_lob_header_);
return has_lob_header_ && OB_NOT_NULL(ptr_) &&
!is_lob_disk_locator() &&
!is_lob_disk_locator() && size_ >= MEM_LOB_COMMON_HEADER_LEN &&
(reinterpret_cast<ObMemLobCommon *>(ptr_))->has_extern();
}
@ -1009,7 +1009,7 @@ public:
{
validate_has_lob_header(has_lob_header_);
return has_lob_header_ && OB_NOT_NULL(ptr_) &&
!is_lob_disk_locator() &&
!is_lob_disk_locator() && size_ >= MEM_LOB_COMMON_HEADER_LEN &&
(reinterpret_cast<ObMemLobCommon *>(ptr_))->is_persist();
}
@ -1018,7 +1018,7 @@ public:
validate_has_lob_header(has_lob_header_);
return (!has_lob_header_)
|| (has_lob_header_ && OB_NOT_NULL(ptr_) &&
!is_lob_disk_locator() &&
!is_lob_disk_locator() && size_ >= MEM_LOB_COMMON_HEADER_LEN &&
(reinterpret_cast<ObMemLobCommon *>(ptr_))->is_temporary_full());
}
@ -1026,7 +1026,7 @@ public:
{
validate_has_lob_header(has_lob_header_);
return has_lob_header_ && OB_NOT_NULL(ptr_) &&
!is_lob_disk_locator() &&
!is_lob_disk_locator() && size_ >= MEM_LOB_COMMON_HEADER_LEN &&
(reinterpret_cast<ObMemLobCommon *>(ptr_))->is_temporary_delta();
}

View File

@ -3513,10 +3513,8 @@ int ObLSTabletService::check_old_row_legitimacy(
const ObIArray<uint64_t> &column_ids = *run_ctx.column_ids_;
if (OB_FAIL(rowkey_helper.convert_datum_rowkey(rowkey.get_rowkey(), datum_rowkey))) {
STORAGE_LOG(WARN, "Failed to transfer datum rowkey", K(ret), K(rowkey));
} else if (OB_FAIL(old_row_getter.init_dml_access_ctx(run_ctx.store_ctx_, dml_param, true))) {
LOG_WARN("init dml access ctx failed", K(ret));
} else if (OB_FAIL(old_row_getter.init_dml_access_param(data_table, dml_param, column_ids))) {
LOG_WARN("init dml access param failed", K(ret));
} else if (OB_FAIL(init_single_row_getter(old_row_getter, run_ctx, column_ids, data_table, true))) {
LOG_WARN("failed to init single row getter", K(ret));
} else if (OB_FAIL(old_row_getter.open(datum_rowkey, true))) {
LOG_WARN("open old row getter failed", K(ret), K(rowkey));
} else if (OB_FAIL(old_row_getter.get_next_row(storage_old_row))) {
@ -3770,7 +3768,9 @@ int ObLSTabletService::insert_lob_col(
// Notice: currently only inrow data
ObString raw_data = obj.get_string();
ObString data;
ObLobLocatorV2 loc(raw_data, obj.has_lob_header());
// for not strict sql mode, will insert empty string without lob header
bool has_lob_header = obj.has_lob_header() && raw_data.length() > 0;
ObLobLocatorV2 loc(raw_data, has_lob_header);
if (OB_FAIL(lob_mngr->append(lob_param, loc))) {
LOG_WARN("[STORAGE_LOB]lob append failed.", K(ret));
} else {