[ARRAY] hash join bugfix

This commit is contained in:
helloamateur
2025-02-17 21:45:58 +00:00
committed by ob-robot
parent 6c8f05ceaf
commit aeabb293ad
2 changed files with 15 additions and 0 deletions

View File

@ -2464,6 +2464,9 @@ int ObHashJoinVecOp::calc_hash_value_and_skip_null(const ObIArray<ObExpr*> &join
ObExpr *expr = join_keys.at(idx); // expr ptr check in cg, not check here
if (OB_FAIL(expr->eval_vector(eval_ctx_, *brs))) {
LOG_WARN("eval failed", K(ret));
} else if (OB_UNLIKELY(expr->is_nested_expr()) &&
OB_FAIL(expr->cast_to_uniform(brs->size_, eval_ctx_, brs->skip_))) {
LOG_WARN("nested expr cast to uniform failed", K(ret));
} else {
const bool is_batch_seed = (idx > 0);
ObIVector *vector = expr->get_vector(eval_ctx_);

View File

@ -301,6 +301,18 @@ int ObRawExpr::deep_copy(ObIRawExprCopier &copier,
LOG_WARN("failed to assign other expr", K(ret));
} else if (OB_FAIL(inner_deep_copy(copier))) {
LOG_WARN("failed to deep copy new allocator", K(ret));
} else if (OB_UNLIKELY(other.get_attr_count() > 0) && get_attr_count() == 0) {
for (int64_t i = 0; i < other.get_attr_count() && OB_SUCC(ret); i++) {
ObRawExpr *attr_expr = NULL;
if (OB_FAIL(copier.copy(other.get_attr_expr(i), attr_expr))) {
LOG_WARN("failed to copy attr expr", K(ret));
} else if (OB_ISNULL(attr_expr)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("null expr", K(ret));
} else if (OB_FAIL(add_attr_expr(attr_expr))) {
LOG_WARN("fail to add attr expr", K(ret));
}
}
}
}
return ret;