fix lob pushdown problem

Co-authored-by: chaser-ch <chaser.ch@antgroup.com>
This commit is contained in:
obdev 2023-01-29 15:50:08 +08:00 committed by ob-robot
parent 6f294fda6b
commit ab3056c41a
2 changed files with 7 additions and 1 deletions

View File

@ -163,12 +163,18 @@ int ObPushdownFilterConstructor::is_white_mode(const ObRawExpr* raw_expr, bool &
} else if (ObRawExpr::EXPR_COLUMN_REF != child->get_expr_class()) {
need_check = false;
} else {
const ObObjMeta &col_meta = child->get_result_meta();
for (int64_t i = 1; OB_SUCC(ret) && need_check && i < raw_expr->get_param_count(); i++) {
if (OB_ISNULL(child = raw_expr->get_param_expr(i))) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("Unexpected null child expr", K(ret), K(i));
} else {
need_check = child->is_const_expr();
if (need_check) {
const ObObjMeta &param_meta = child->get_result_meta();
need_check = param_meta.is_null() ||
(col_meta.get_type() == param_meta.get_type() && col_meta.get_collation_type() == param_meta.get_collation_type());
}
}
}
}

View File

@ -32,7 +32,7 @@ int ObColMap::init(const int64_t col_count)
STORAGE_LOG(WARN, "ObColMap init twice", K(ret));
} else if (count <= FINAL_LEVEL_MAX_COL_NUM) {
if (OB_UNLIKELY(count > FIRST_LEVEL_MAX_COL_NUM)) {
if (NULL == (ptr = ob_malloc(sizeof(ColMapFinal)))) {
if (NULL == (ptr = ob_malloc(sizeof(ColMapFinal), ObModIds::OB_COL_MAP))) {
ret = OB_ALLOCATE_MEMORY_FAILED;
STORAGE_LOG(ERROR, "fail to allocate memory for column_ids map", K(ret));
} else {