fix vtable __all_virtual_tenant_snapshot_ls_replica decode null column return unexpected error code

This commit is contained in:
obdev
2024-02-08 13:24:22 +00:00
committed by ob-robot
parent 59387817ca
commit aec3d88de3
2 changed files with 30 additions and 28 deletions

View File

@ -110,13 +110,14 @@ int ObAllVirtualTenantSnapshotLSReplica::process_curr_tenant(ObNewRow *&row)
SERVER_LOG(WARN, "row is null or column count mismatch", KR(ret), KP(r), K(cur_row_.count_));
} else {
ObString ls_meta_package_str;
HEAP_VAR(ObLSMetaPackage, ls_meta_package) {
for (int64_t i = 0; OB_SUCC(ret) && i < cur_row_.count_; ++i) {
uint64_t col_id = output_column_ids_.at(i);
if (LS_META_PACKAGE == col_id) { // decode ls_meta_package column
int64_t length = 0;
EXTRACT_VARCHAR_FIELD_MYSQL(*result_, "ls_meta_package", ls_meta_package_str);
if (ls_meta_package_str.empty()) {
HEAP_VAR(ObLSMetaPackage, ls_meta_package) {
EXTRACT_VARCHAR_FIELD_MYSQL_SKIP_RET(*result_, "ls_meta_package", ls_meta_package_str);
if (OB_FAIL(ret)) {
} else if (ls_meta_package_str.empty()) {
cur_row_.cells_[i].reset();
} else if (OB_ISNULL(ls_meta_buf_)) {
ret = OB_ERR_UNEXPECTED;
@ -132,6 +133,7 @@ int ObAllVirtualTenantSnapshotLSReplica::process_curr_tenant(ObNewRow *&row)
cur_row_.cells_[i].set_collation_type(ObCharset::get_default_collation(
ObCharset::get_default_charset()));
}
}
} else if (col_id - OB_APP_MIN_COLUMN_ID >= 0 && col_id - OB_APP_MIN_COLUMN_ID < r->count_) {
// direct copy other columns
cur_row_.cells_[i] = r->get_cell(col_id - OB_APP_MIN_COLUMN_ID);
@ -142,7 +144,6 @@ int ObAllVirtualTenantSnapshotLSReplica::process_curr_tenant(ObNewRow *&row)
}
}
}
}
if (OB_SUCC(ret)) {
row = &cur_row_;

View File

@ -110,13 +110,14 @@ int ObAllVirtualTenantSnapshotLSReplicaHistory::process_curr_tenant(ObNewRow *&r
SERVER_LOG(WARN, "row is null or column count mismatch", KR(ret), KP(r), K(cur_row_.count_));
} else {
ObString ls_meta_package_str;
HEAP_VAR(ObLSMetaPackage, ls_meta_package) {
for (int64_t i = 0; OB_SUCC(ret) && i < cur_row_.count_; ++i) {
uint64_t col_id = output_column_ids_.at(i);
if (LS_META_PACKAGE == col_id) { // decode ls_meta_package column
int64_t length = 0;
EXTRACT_VARCHAR_FIELD_MYSQL(*result_, "ls_meta_package", ls_meta_package_str);
if (ls_meta_package_str.empty()) {
HEAP_VAR(ObLSMetaPackage, ls_meta_package) {
EXTRACT_VARCHAR_FIELD_MYSQL_SKIP_RET(*result_, "ls_meta_package", ls_meta_package_str);
if (OB_FAIL(ret)) {
} else if (ls_meta_package_str.empty()) {
cur_row_.cells_[i].reset();
} else if (OB_ISNULL(ls_meta_buf_)) {
ret = OB_ERR_UNEXPECTED;
@ -132,6 +133,7 @@ int ObAllVirtualTenantSnapshotLSReplicaHistory::process_curr_tenant(ObNewRow *&r
cur_row_.cells_[i].set_collation_type(ObCharset::get_default_collation(
ObCharset::get_default_charset()));
}
}
} else if (col_id - OB_APP_MIN_COLUMN_ID >= 0 && col_id - OB_APP_MIN_COLUMN_ID < r->count_) {
// direct copy other columns
cur_row_.cells_[i] = r->get_cell(col_id - OB_APP_MIN_COLUMN_ID);
@ -142,7 +144,6 @@ int ObAllVirtualTenantSnapshotLSReplicaHistory::process_curr_tenant(ObNewRow *&r
}
}
}
}
if (OB_SUCC(ret)) {
row = &cur_row_;