[CP] Fix bug: in Oracle mode, the prepared statement throws an error -4016.

This commit is contained in:
GongYusen
2024-06-17 22:22:10 +00:00
committed by ob-robot
parent a9fc91b6e3
commit f34f2dd352
2 changed files with 9 additions and 1 deletions

View File

@ -780,6 +780,14 @@ int ObRawExprDeduceType::visit(ObOpRawExpr &expr)
expr.set_result_type(result_type);
} else if (T_OP_ROW == expr.get_expr_type()) {
expr.set_data_type(ObNullType);
// During the prepare phase, some boolean expressions do not undergo recursive type deduction.
// T_OP_EQ, T_OP_NSEQ, T_OP_LE, T_OP_LT, T_OP_GE, T_OP_GT, T_OP_NE.
} else if (my_session_->is_varparams_sql_prepare() && T_OP_EQ <= expr.get_expr_type() && expr.get_expr_type() <= T_OP_NE) {
ObExprResType result_type;
result_type.set_tinyint();
result_type.set_precision(DEFAULT_PRECISION_FOR_BOOL);
result_type.set_scale(DEFAULT_SCALE_FOR_INTEGER);
expr.set_result_type(result_type);
} else {
ObExprOperator *op = expr.get_op();
if (NULL == op) {