adjust subquery iter hash map memory mode && adjust table columns rewrite error code

This commit is contained in:
18523270951@163.com
2023-05-16 04:11:22 +00:00
committed by ob-robot
parent a13159f429
commit 4f31c69e63
4 changed files with 17 additions and 3 deletions

View File

@ -933,7 +933,7 @@ int ObTableColumns::resolve_view_definition(
K(select_stmt_node->type_));
} else if (OB_FAIL(select_resolver.resolve(*select_stmt_node))) {
LOG_WARN("resolve view definition failed", K(ret));
if (OB_ALLOCATE_MEMORY_FAILED != ret) {
if (can_rewrite_error_code(ret)) {
ret = OB_ERR_VIEW_INVALID;
} else {
LOG_WARN("failed to resolve view", K(ret));
@ -1125,5 +1125,15 @@ int64_t ObTableColumns::ColumnAttributes::get_data_length() const
result_type_.get_accuracy().get_length() : ob_obj_type_size(result_type_.get_type());
}
bool ObTableColumns::can_rewrite_error_code(const int ret)
{
bool res = true;
if (OB_ALLOCATE_MEMORY_FAILED == ret
|| OB_SQL_RESOLVER_NO_MEMORY == ret) {
res = false;
}
return res;
}
}/* ns observer*/
}/* ns oceanbase */

View File

@ -140,6 +140,7 @@ private:
const int64_t buf_len,
int64_t &pos);
private:
static bool can_rewrite_error_code(const int ret);
char type_str_[common::OB_MAX_SYS_PARAM_NAME_LENGTH];
char *column_type_str_;
int64_t column_type_str_len_;

View File

@ -223,7 +223,7 @@ int ObSubQueryIterator::init_mem_entity()
lib::ContextParam param;
param.set_mem_attr(ObMemAttr(op_.get_exec_ctx().get_my_session()->get_effective_tenant_id(),
"SqlSQIterator",
ObCtxIds::WORK_AREA));
ObCtxIds::DEFAULT_CTX_ID));
param.set_properties(lib::USE_TL_PAGE_OPTIONAL);
if (OB_FAIL(CURRENT_CONTEXT->CREATE_CONTEXT(mem_entity_, param))) {
LOG_WARN("fail to create entity", K(ret));

View File

@ -67,7 +67,10 @@ public:
int init_mem_entity();
int init_hashmap(const int64_t param_num)
{
return hashmap_.create(param_num * 2, common::ObModIds::OB_HASH_BUCKET);
int64_t tenant_id = op_.get_exec_ctx().get_my_session()->get_effective_tenant_id();
return hashmap_.create(param_num * 2,
ObMemAttr(tenant_id, "SqlSQIterBKT", ObCtxIds::DEFAULT_CTX_ID),
ObMemAttr(tenant_id, "SqlSQIterND", ObCtxIds::DEFAULT_CTX_ID));
}
bool has_hashmap() const { return hashmap_.created(); }
int init_probe_row(const int64_t cnt);