fix misuse const flag leads result wrong || core

This commit is contained in:
obdev
2022-11-03 02:13:59 +00:00
committed by wangzelin.wzl
parent 54885402b0
commit 31418623c2
4 changed files with 6 additions and 4 deletions

View File

@ -75,7 +75,7 @@ int ObChunkDatumStore::StoredRow::to_expr_skip_const(const ObIArray<ObExpr*> &ex
} else { } else {
for (uint32_t i = 0; i < cnt_; ++i) { for (uint32_t i = 0; i < cnt_; ++i) {
const ObExpr *expr = exprs.at(i); const ObExpr *expr = exprs.at(i);
if (expr->is_dynamic_const_ || expr->is_static_const_) { // T_QUESTIONMARK is included in dynamic_const if (expr->is_const_expr()) { // T_QUESTIONMARK is included in dynamic_const
continue; continue;
} else { } else {
expr->locate_expr_datum(ctx) = cells()[i]; expr->locate_expr_datum(ctx) = cells()[i];

View File

@ -1203,7 +1203,7 @@ int ObChunkDatumStore::Iterator::get_next_row_skip_const(ObEvalCtx &ctx,
// logical operator, we can not add expr in CG. // logical operator, we can not add expr in CG.
for (int64_t i = 0; i < sr->cnt_; i++) { for (int64_t i = 0; i < sr->cnt_; i++) {
const ObExpr *expr = exprs.at(i); const ObExpr *expr = exprs.at(i);
if (expr->is_dynamic_const_) { // T_QUESTIONMARK is included in is_dynamic_const if (expr->is_const_expr()) { // T_QUESTIONMARK is included in is_dynamic_const
continue; continue;
} else { } else {
const ObDatum &src = sr->cells()[i]; const ObDatum &src = sr->cells()[i];
@ -1270,7 +1270,7 @@ void ObChunkDatumStore::Iterator::attach_rows(
if (NULL != srows) { if (NULL != srows) {
for (int64_t col_idx = 0; col_idx < exprs.count(); col_idx++) { for (int64_t col_idx = 0; col_idx < exprs.count(); col_idx++) {
ObExpr *e = exprs.at(col_idx); ObExpr *e = exprs.at(col_idx);
if (skip_const && e->is_dynamic_const_) { if (skip_const && e->is_const_expr()) {
continue; continue;
} }
if (OB_LIKELY(!fill_invariable_res_buf || e->is_variable_res_buf())) { if (OB_LIKELY(!fill_invariable_res_buf || e->is_variable_res_buf())) {

View File

@ -131,7 +131,7 @@ int ObRADatumStore::StoredRow::to_expr(const common::ObIArray<ObExpr*> &exprs,
LOG_WARN("datum count mismatch", K(ret), K(cnt_), K(exprs.count())); LOG_WARN("datum count mismatch", K(ret), K(cnt_), K(exprs.count()));
} else { } else {
for (uint32_t i = 0; i < cnt_; ++i) { for (uint32_t i = 0; i < cnt_; ++i) {
if (exprs.at(i)->is_static_const_) { if (exprs.at(i)->is_const_expr()) {
continue; continue;
} else { } else {
exprs.at(i)->locate_expr_datum(ctx) = cells()[i]; exprs.at(i)->locate_expr_datum(ctx) = cells()[i];

View File

@ -459,6 +459,8 @@ public:
return OBJ_DATUM_STRING == obj_datum_map_; return OBJ_DATUM_STRING == obj_datum_map_;
}; };
inline bool is_const_expr() const { return is_static_const_ || is_dynamic_const_; }
// Evaluate all parameters, assign the first sizeof...(args) parameters to %args. // Evaluate all parameters, assign the first sizeof...(args) parameters to %args.
// //
// e.g.: // e.g.: