Fix substr result type in mixing run of different versions of observer
This commit is contained in:
parent
0b8f0353c5
commit
38cdda42f8
@ -234,7 +234,11 @@ int ObExprSubstr::calc_result_typeN(ObExprResType &type,
|
|||||||
if (OB_SUCC(ret)
|
if (OB_SUCC(ret)
|
||||||
&& ob_is_text_tc(type.get_type())
|
&& ob_is_text_tc(type.get_type())
|
||||||
&& 3 == param_num
|
&& 3 == param_num
|
||||||
&& !types_array[2].get_param().is_null()) {
|
&& !types_array[2].get_param().is_null()
|
||||||
|
// Compatible with mixing running different versions of observer, the result type is
|
||||||
|
// varchar only when all observer versions are higher than 4.2.0, otherwise is blob,
|
||||||
|
// which is not compatible with mysql
|
||||||
|
&& GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_2_0_0) {
|
||||||
const ObObj &len_obj = types_array[2].get_param();
|
const ObObj &len_obj = types_array[2].get_param();
|
||||||
int64_t substr_len = len_obj.is_int() ? len_obj.get_int() : 0;
|
int64_t substr_len = len_obj.is_int() ? len_obj.get_int() : 0;
|
||||||
if (substr_len > 0 && substr_len <= OB_MAX_CAST_CHAR_VARCHAR_LENGTH) {
|
if (substr_len > 0 && substr_len <= OB_MAX_CAST_CHAR_VARCHAR_LENGTH) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user