@@ -3146,6 +3146,13 @@ class FunctionTiDBTrim : public IFunction
31463146
31473147class TidbPadImpl
31483148{
3149+ static void addTrailingZero (ColumnString::Chars_t & res, ColumnString::Offset & res_offset)
3150+ {
3151+ res.resize (res.size () + 1 );
3152+ res[res_offset] = ' \0 ' ;
3153+ ++res_offset;
3154+ }
3155+
31493156public:
31503157 template <typename IntType, bool IsUTF8, bool IsLeft>
31513158 static void tidbExecutePadImpl (
@@ -3435,9 +3442,7 @@ class TidbPadImpl
34353442 }
34363443 else
34373444 {
3438- result_data.resize (result_data.size () + 1 );
3439- result_data[res_prev_offset] = ' \0 ' ;
3440- res_prev_offset++;
3445+ addTrailingZero (result_data, res_prev_offset);
34413446 }
34423447
34433448 string_prev_offset = string_offsets[i];
@@ -3496,9 +3501,7 @@ class TidbPadImpl
34963501 }
34973502 else
34983503 {
3499- result_data.resize (result_data.size () + 1 );
3500- result_data[res_prev_offset] = ' \0 ' ;
3501- res_prev_offset++;
3504+ addTrailingZero (result_data, res_prev_offset);
35023505 }
35033506
35043507 string_prev_offset = string_offsets[i];
@@ -3555,9 +3558,7 @@ class TidbPadImpl
35553558 }
35563559 else
35573560 {
3558- result_data.resize (result_data.size () + 1 );
3559- result_data[res_prev_offset] = ' \0 ' ;
3560- res_prev_offset++;
3561+ addTrailingZero (result_data, res_prev_offset);
35613562 }
35623563
35633564 padding_prev_offset = (*padding_offsets)[i];
@@ -3613,9 +3614,7 @@ class TidbPadImpl
36133614 }
36143615 else
36153616 {
3616- result_data.resize (result_data.size () + 1 );
3617- result_data[res_prev_offset] = ' \0 ' ;
3618- res_prev_offset++;
3617+ addTrailingZero (result_data, res_prev_offset);
36193618 }
36203619
36213620 result_offsets[i] = res_prev_offset;
@@ -3640,6 +3639,7 @@ class TidbPadImpl
36403639
36413640 if (target_len < 0 || (data_len < static_cast <ColumnString::Offset>(target_len) && pad_len == 0 ))
36423641 {
3642+ addTrailingZero (res, res_offset);
36433643 return true ;
36443644 }
36453645
@@ -3691,10 +3691,7 @@ class TidbPadImpl
36913691 ++left;
36923692 }
36933693 }
3694- // Add trailing zero.
3695- res.resize (res.size () + 1 );
3696- res[res_offset] = ' \0 ' ;
3697- res_offset++;
3694+ addTrailingZero (res, res_offset);
36983695 return false ;
36993696 }
37003697
@@ -3714,6 +3711,7 @@ class TidbPadImpl
37143711
37153712 if (target_len < 0 || (data_len < static_cast <ColumnString::Offset>(target_len) && pad_len == 0 ))
37163713 {
3714+ addTrailingZero (res, res_offset);
37173715 return true ;
37183716 }
37193717
@@ -3766,10 +3764,7 @@ class TidbPadImpl
37663764 copyResult (res, res_offset, data, 0 , tmp_target_len);
37673765 res_offset += tmp_target_len;
37683766 }
3769- // Add trailing zero.
3770- res.resize (res.size () + 1 );
3771- res[res_offset] = ' \0 ' ;
3772- res_offset++;
3767+ addTrailingZero (res, res_offset);
37733768 return false ;
37743769 }
37753770
0 commit comments