Fix ps prepare error 4016

This commit is contained in:
obdev
2023-06-22 03:18:28 +00:00
committed by ob-robot
parent 18882148c8
commit 4ff18491b9
9 changed files with 31 additions and 26 deletions

View File

@ -6177,13 +6177,13 @@ int ObOptimizerUtil::try_add_cast_to_set_child_list(ObIAllocator *allocator,
&& (ob_is_user_defined_sql_type(right_type.get_type()) || ob_is_user_defined_pl_type(right_type.get_type()))))) {
// || (left_type.is_lob() && right_type.is_lob() && !is_distinct))) {
// Originally, cases like "select clob from t union all select blob from t" return error
if (session_info->is_ps_prepare_stage()) {
if (session_info->is_varparams_sql_prepare()) {
skip_add_cast = true;
LOG_WARN("ps prepare stage expression has different datatype", K(i), K(left_type), K(right_type));
} else {
ret = OB_ERR_EXP_NEED_SAME_DATATYPE;
LOG_WARN("expression must have same datatype as corresponding expression", K(ret),
K(session_info->is_ps_prepare_stage()), K(right_type.is_varchar_or_char()),
K(session_info->is_varparams_sql_prepare()), K(right_type.is_varchar_or_char()),
K(i), K(left_type), K(right_type));
}
} else if (left_type.is_character_type()
@ -6217,7 +6217,7 @@ int ObOptimizerUtil::try_add_cast_to_set_child_list(ObIAllocator *allocator,
LOG_WARN("failed to get collation connection", K(ret));
} else if (OB_FAIL(dummy_op.aggregate_result_type_for_merge(res_type, &types.at(0), 2,
coll_type, is_oracle_mode(), length_semantics, session_info))) {
if (session_info->is_ps_prepare_stage()) {
if (session_info->is_varparams_sql_prepare()) {
skip_add_cast = true;
res_type = left_type;
LOG_WARN("failed to deduce type in ps prepare stage", K(types));