Skip to content

Commit

Permalink
[BugFix] fix invalid expression usage (#56064)
Browse files Browse the repository at this point in the history
Signed-off-by: Aliaksei Dziomin <[email protected]>
(cherry picked from commit 0fc6efc)
  • Loading branch information
xhumanoid authored and mergify[bot] committed Feb 28, 2025
1 parent d5970cc commit d0fd6ff
Showing 1 changed file with 8 additions and 7 deletions.
15 changes: 8 additions & 7 deletions be/src/exec/olap_scan_prepare.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -422,8 +422,8 @@ requires(!lt_is_date<SlotType>) Status ChunkPredicateBuilder<E, Type>::normalize
SQLFilterOp op;
ValueType value;
ASSIGN_OR_RETURN(auto* expr_context, _exprs[i].expr_context(_opts.obj_pool, _opts.runtime_state));
bool ok =
get_predicate_value<Negative>(_opts.obj_pool, slot, root_expr, expr_context, &value, &op, &status);
bool ok = get_predicate_value<Negative>(_opts.obj_pool, slot, get_root_expr(expr_context), expr_context,
&value, &op, &status);
if (ok && range->add_fixed_values(FILTER_IN, std::set<RangeValueType>{value}).ok()) {
_normalized_exprs[i] = true;
}
Expand Down Expand Up @@ -533,8 +533,8 @@ requires lt_is_date<SlotType> Status ChunkPredicateBuilder<E, Type>::normalize_i
SQLFilterOp op;
DateValue value{0};
ASSIGN_OR_RETURN(auto* expr_context, _exprs[i].expr_context(_opts.obj_pool, _opts.runtime_state));
bool ok =
get_predicate_value<Negative>(_opts.obj_pool, slot, root_expr, expr_context, &value, &op, &status);
bool ok = get_predicate_value<Negative>(_opts.obj_pool, slot, get_root_expr(expr_context), expr_context,
&value, &op, &status);
if (ok && range->add_fixed_values(FILTER_IN, std::set<DateValue>{value}).ok()) {
_normalized_exprs[i] = true;
}
Expand Down Expand Up @@ -567,7 +567,8 @@ Status ChunkPredicateBuilder<E, Type>::normalize_binary_predicate(const SlotDesc
SQLFilterOp op;
ValueType value;
ASSIGN_OR_RETURN(auto* expr_context, _exprs[i].expr_context(_opts.obj_pool, _opts.runtime_state));
bool ok = get_predicate_value<Negative>(_opts.obj_pool, slot, root_expr, expr_context, &value, &op, &status);
bool ok = get_predicate_value<Negative>(_opts.obj_pool, slot, get_root_expr(expr_context), expr_context, &value,
&op, &status);
if (ok && range->add_range(op, static_cast<RangeValueType>(value)).ok()) {
_normalized_exprs[i] = true;
}
Expand Down Expand Up @@ -769,8 +770,8 @@ Status ChunkPredicateBuilder<E, Type>::normalize_not_in_or_not_equal_predicate(
SQLFilterOp op;
ValueType value;
ASSIGN_OR_RETURN(auto* expr_context, _exprs[i].expr_context(_opts.obj_pool, _opts.runtime_state));
bool ok =
get_predicate_value<Negative>(_opts.obj_pool, slot, root_expr, expr_context, &value, &op, &status);
bool ok = get_predicate_value<Negative>(_opts.obj_pool, slot, get_root_expr(expr_context), expr_context,
&value, &op, &status);
if (ok && range->add_fixed_values(FILTER_NOT_IN, std::set<RangeValueType>{value}).ok()) {
_normalized_exprs[i] = true;
}
Expand Down

0 comments on commit d0fd6ff

Please sign in to comment.