Fix ps prepare stage error 4016
This commit is contained in:
@ -153,8 +153,8 @@ int ObExprJsonObject::calc_result_typeN(ObExprResType& type,
|
||||
ObExecContext* ctx = nullptr;
|
||||
|
||||
bool is_deduce_input = true;
|
||||
if (OB_NOT_NULL(session) && OB_NOT_NULL(ctx = session->get_cur_exec_ctx())) {
|
||||
is_deduce_input = (!ctx->is_ps_prepare_stage());
|
||||
if (OB_NOT_NULL(session)) {
|
||||
is_deduce_input = (!session->is_varparams_sql_prepare());
|
||||
}
|
||||
|
||||
for (int64_t i = 0; OB_SUCC(ret) && is_deduce_input && i < param_num; i += 2) {
|
||||
|
||||
@ -75,7 +75,7 @@ int ObExprLeft::calc_result_type2(ObExprResType &type,
|
||||
} else if (OB_ISNULL(exec_ctx = session->get_cur_exec_ctx())) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("exec context is NULL", K(ret));
|
||||
} else if (exec_ctx->is_ps_prepare_stage()) {
|
||||
} else if (session->is_varparams_sql_prepare()) {
|
||||
// the ps prepare stage does not do type deduction, and directly gives a default type.
|
||||
type.set_char();
|
||||
type.set_default_collation_type();
|
||||
|
||||
@ -41,7 +41,7 @@ int ObExprOracleNullif::calc_result_type2(ObExprResType &type,
|
||||
//Oracle 不支持lob类型的 nullif比较
|
||||
exec_ctx = session->get_cur_exec_ctx();
|
||||
if (type1.is_null() || type1.is_lob()) {
|
||||
if (OB_NOT_NULL(exec_ctx) && exec_ctx->is_ps_prepare_stage()) {
|
||||
if (session->is_varparams_sql_prepare()) {
|
||||
type.set_null();
|
||||
} else {
|
||||
if (is_called_in_sql()) {
|
||||
|
||||
@ -1082,12 +1082,10 @@ int ObSql::do_real_prepare(const ObString &sql,
|
||||
parse_result.result_tree_,
|
||||
param_store,
|
||||
session.get_local_collation_connection()))) {
|
||||
LOG_WARN("parameterize syntax tree failed", K(ret));
|
||||
if (OB_INVALID_ARGUMENT == ret || OB_NOT_SUPPORTED == ret) {
|
||||
LOG_INFO("parameterize syntax tree failed", K(ret));
|
||||
pc_ctx.ps_need_parameterized_ = false;
|
||||
ret = OB_SUCCESS;
|
||||
}
|
||||
}
|
||||
if (OB_SUCC(ret)) {
|
||||
if (!pc_ctx.ps_need_parameterized_) {
|
||||
pc_ctx.fixed_param_idx_.reset();
|
||||
|
||||
Reference in New Issue
Block a user