Commit af83d06d authored by Nikita Malyavin's avatar Nikita Malyavin Committed by Sergei Golubchik

Copy_field: add const to arguments

parent 25110260
...@@ -757,15 +757,15 @@ class Field: public Value_source ...@@ -757,15 +757,15 @@ class Field: public Value_source
} }
void error_generated_column_function_is_not_allowed(THD *thd, bool error) void error_generated_column_function_is_not_allowed(THD *thd, bool error)
const; const;
static void do_field_eq(Copy_field *copy); static void do_field_eq(const Copy_field *copy);
static void do_field_int(Copy_field *copy); static void do_field_int(const Copy_field *copy);
static void do_field_real(Copy_field *copy); static void do_field_real(const Copy_field *copy);
static void do_field_string(Copy_field *copy); static void do_field_string(const Copy_field *copy);
static void do_field_date(Copy_field *copy); static void do_field_date(const Copy_field *copy);
static void do_field_temporal(Copy_field *copy, date_mode_t fuzzydate); static void do_field_temporal(const Copy_field *copy, date_mode_t fuzzydate);
static void do_field_datetime(Copy_field *copy); static void do_field_datetime(const Copy_field *copy);
static void do_field_timestamp(Copy_field *copy); static void do_field_timestamp(const Copy_field *copy);
static void do_field_decimal(Copy_field *copy); static void do_field_decimal(const Copy_field *copy);
public: public:
static void *operator new(size_t size, MEM_ROOT *mem_root) throw () static void *operator new(size_t size, MEM_ROOT *mem_root) throw ()
{ return alloc_root(mem_root, size); } { return alloc_root(mem_root, size); }
...@@ -914,7 +914,7 @@ class Field: public Value_source ...@@ -914,7 +914,7 @@ class Field: public Value_source
Convenience definition of a copy function returned by Convenience definition of a copy function returned by
Field::get_copy_func() Field::get_copy_func()
*/ */
typedef void Copy_func(Copy_field*); typedef void Copy_func(const Copy_field*);
virtual Copy_func *get_copy_func(const Field *from) const= 0; virtual Copy_func *get_copy_func(const Field *from) const= 0;
virtual Copy_func *get_copy_func_to(const Field *to) const virtual Copy_func *get_copy_func_to(const Field *to) const
{ {
...@@ -3572,7 +3572,7 @@ class Field_time :public Field_temporal { ...@@ -3572,7 +3572,7 @@ class Field_time :public Field_temporal {
void store_TIME(const Time &t) { return store_TIME(t.get_mysql_time()); } void store_TIME(const Time &t) { return store_TIME(t.get_mysql_time()); }
int store_TIME_with_warning(const Time *ltime, const ErrConv *str, int warn); int store_TIME_with_warning(const Time *ltime, const ErrConv *str, int warn);
bool check_zero_in_date_with_warn(date_mode_t fuzzydate); bool check_zero_in_date_with_warn(date_mode_t fuzzydate);
static void do_field_time(Copy_field *copy); static void do_field_time(const Copy_field *copy);
public: public:
Field_time(uchar *ptr_arg, uint length_arg, uchar *null_ptr_arg, Field_time(uchar *ptr_arg, uint length_arg, uchar *null_ptr_arg,
uchar null_bit_arg, enum utype unireg_check_arg, uchar null_bit_arg, enum utype unireg_check_arg,
...@@ -4373,8 +4373,8 @@ class Field_blob :public Field_longstr { ...@@ -4373,8 +4373,8 @@ class Field_blob :public Field_longstr {
*/ */
String read_value; String read_value;
static void do_copy_blob(Copy_field *copy); static void do_copy_blob(const Copy_field *copy);
static void do_conv_blob(Copy_field *copy); static void do_conv_blob(const Copy_field *copy);
uint get_key_image_itRAW(const uchar *ptr_arg, uchar *buff, uint length) const; uint get_key_image_itRAW(const uchar *ptr_arg, uchar *buff, uint length) const;
public: public:
Field_blob(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg, Field_blob(uchar *ptr_arg, uchar *null_ptr_arg, uchar null_bit_arg,
...@@ -4730,7 +4730,7 @@ class Field_blob_compressed final :public Field_blob { ...@@ -4730,7 +4730,7 @@ class Field_blob_compressed final :public Field_blob {
class Field_enum :public Field_str { class Field_enum :public Field_str {
static void do_field_enum(Copy_field *copy_field); static void do_field_enum(const Copy_field *copy_field);
longlong val_int(const uchar *) const; longlong val_int(const uchar *) const;
bool can_optimize_range_or_keypart_ref(const Item_bool_func *cond, bool can_optimize_range_or_keypart_ref(const Item_bool_func *cond,
const Item *item) const; const Item *item) const;
...@@ -5854,14 +5854,14 @@ class Copy_field :public Sql_alloc { ...@@ -5854,14 +5854,14 @@ class Copy_field :public Sql_alloc {
*/ */
uint from_length,to_length; uint from_length,to_length;
Field *from_field,*to_field; Field *from_field,*to_field;
String tmp; // For items mutable String tmp; // For items
Copy_field() = default; Copy_field() = default;
~Copy_field() = default; ~Copy_field() = default;
void set(Field *to,Field *from,bool save); // Field to field void set(Field *to,Field *from,bool save); // Field to field
void set(uchar *to,Field *from); // Field to string void set(uchar *to,Field *from); // Field to string
void (*do_copy)(Copy_field *); void (*do_copy)(const Copy_field *);
void (*do_copy2)(Copy_field *); // Used to handle null values void (*do_copy2)(const Copy_field *); // Used to handle null values
}; };
......
...@@ -30,30 +30,30 @@ ...@@ -30,30 +30,30 @@
#include "sql_class.h" // THD #include "sql_class.h" // THD
#include <m_ctype.h> #include <m_ctype.h>
void Field::do_field_eq(Copy_field *copy) void Field::do_field_eq(const Copy_field *copy)
{ {
memcpy(copy->to_ptr,copy->from_ptr,copy->from_length); memcpy(copy->to_ptr,copy->from_ptr,copy->from_length);
} }
static void do_field_1(Copy_field *copy) static void do_field_1(const Copy_field *copy)
{ {
copy->to_ptr[0]=copy->from_ptr[0]; copy->to_ptr[0]=copy->from_ptr[0];
} }
static void do_field_2(Copy_field *copy) static void do_field_2(const Copy_field *copy)
{ {
copy->to_ptr[0]=copy->from_ptr[0]; copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1]; copy->to_ptr[1]=copy->from_ptr[1];
} }
static void do_field_3(Copy_field *copy) static void do_field_3(const Copy_field *copy)
{ {
copy->to_ptr[0]=copy->from_ptr[0]; copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1]; copy->to_ptr[1]=copy->from_ptr[1];
copy->to_ptr[2]=copy->from_ptr[2]; copy->to_ptr[2]=copy->from_ptr[2];
} }
static void do_field_4(Copy_field *copy) static void do_field_4(const Copy_field *copy)
{ {
copy->to_ptr[0]=copy->from_ptr[0]; copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1]; copy->to_ptr[1]=copy->from_ptr[1];
...@@ -61,7 +61,7 @@ static void do_field_4(Copy_field *copy) ...@@ -61,7 +61,7 @@ static void do_field_4(Copy_field *copy)
copy->to_ptr[3]=copy->from_ptr[3]; copy->to_ptr[3]=copy->from_ptr[3];
} }
static void do_field_6(Copy_field *copy) static void do_field_6(const Copy_field *copy)
{ // For blob field { // For blob field
copy->to_ptr[0]=copy->from_ptr[0]; copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1]; copy->to_ptr[1]=copy->from_ptr[1];
...@@ -71,7 +71,7 @@ static void do_field_6(Copy_field *copy) ...@@ -71,7 +71,7 @@ static void do_field_6(Copy_field *copy)
copy->to_ptr[5]=copy->from_ptr[5]; copy->to_ptr[5]=copy->from_ptr[5];
} }
static void do_field_8(Copy_field *copy) static void do_field_8(const Copy_field *copy)
{ {
copy->to_ptr[0]=copy->from_ptr[0]; copy->to_ptr[0]=copy->from_ptr[0];
copy->to_ptr[1]=copy->from_ptr[1]; copy->to_ptr[1]=copy->from_ptr[1];
...@@ -84,7 +84,7 @@ static void do_field_8(Copy_field *copy) ...@@ -84,7 +84,7 @@ static void do_field_8(Copy_field *copy)
} }
static void do_field_to_null_str(Copy_field *copy) static void do_field_to_null_str(const Copy_field *copy)
{ {
if (*copy->from_null_ptr & copy->from_bit) if (*copy->from_null_ptr & copy->from_bit)
{ {
...@@ -99,7 +99,7 @@ static void do_field_to_null_str(Copy_field *copy) ...@@ -99,7 +99,7 @@ static void do_field_to_null_str(Copy_field *copy)
} }
static void do_outer_field_to_null_str(Copy_field *copy) static void do_outer_field_to_null_str(const Copy_field *copy)
{ {
if (*copy->null_row || if (*copy->null_row ||
(copy->from_null_ptr && (*copy->from_null_ptr & copy->from_bit))) (copy->from_null_ptr && (*copy->from_null_ptr & copy->from_bit)))
...@@ -220,7 +220,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions) ...@@ -220,7 +220,7 @@ set_field_to_null_with_conversions(Field *field, bool no_conversions)
} }
static void do_skip(Copy_field *copy __attribute__((unused))) static void do_skip(const Copy_field *copy __attribute__((unused)))
{ {
} }
...@@ -233,7 +233,7 @@ static void do_skip(Copy_field *copy __attribute__((unused))) ...@@ -233,7 +233,7 @@ static void do_skip(Copy_field *copy __attribute__((unused)))
set to NULLs, so we don't need to check table->null_row here. set to NULLs, so we don't need to check table->null_row here.
*/ */
static void do_copy_null(Copy_field *copy) static void do_copy_null(const Copy_field *copy)
{ {
if (*copy->from_null_ptr & copy->from_bit) if (*copy->from_null_ptr & copy->from_bit)
{ {
...@@ -252,7 +252,7 @@ static void do_copy_null(Copy_field *copy) ...@@ -252,7 +252,7 @@ static void do_copy_null(Copy_field *copy)
field) field)
*/ */
static void do_outer_field_null(Copy_field *copy) static void do_outer_field_null(const Copy_field *copy)
{ {
if (*copy->null_row || if (*copy->null_row ||
(copy->from_null_ptr && (*copy->from_null_ptr & copy->from_bit))) (copy->from_null_ptr && (*copy->from_null_ptr & copy->from_bit)))
...@@ -271,7 +271,7 @@ static void do_outer_field_null(Copy_field *copy) ...@@ -271,7 +271,7 @@ static void do_outer_field_null(Copy_field *copy)
Copy: (not-NULL field in table that can be NULL-complemented) -> (not-NULL Copy: (not-NULL field in table that can be NULL-complemented) -> (not-NULL
field) field)
*/ */
static void do_copy_nullable_row_to_notnull(Copy_field *copy) static void do_copy_nullable_row_to_notnull(const Copy_field *copy)
{ {
if (*copy->null_row || if (*copy->null_row ||
(copy->from_null_ptr && (*copy->from_null_ptr & copy->from_bit))) (copy->from_null_ptr && (*copy->from_null_ptr & copy->from_bit)))
...@@ -288,7 +288,7 @@ static void do_copy_nullable_row_to_notnull(Copy_field *copy) ...@@ -288,7 +288,7 @@ static void do_copy_nullable_row_to_notnull(Copy_field *copy)
} }
/* Copy: (NULL-able field) -> (not NULL-able field) */ /* Copy: (NULL-able field) -> (not NULL-able field) */
static void do_copy_not_null(Copy_field *copy) static void do_copy_not_null(const Copy_field *copy)
{ {
if (*copy->from_null_ptr & copy->from_bit) if (*copy->from_null_ptr & copy->from_bit)
{ {
...@@ -302,7 +302,7 @@ static void do_copy_not_null(Copy_field *copy) ...@@ -302,7 +302,7 @@ static void do_copy_not_null(Copy_field *copy)
/* Copy: (non-NULLable field) -> (NULLable field) */ /* Copy: (non-NULLable field) -> (NULLable field) */
static void do_copy_maybe_null(Copy_field *copy) static void do_copy_maybe_null(const Copy_field *copy)
{ {
*copy->to_null_ptr&= ~copy->to_bit; *copy->to_null_ptr&= ~copy->to_bit;
(copy->do_copy2)(copy); (copy->do_copy2)(copy);
...@@ -310,7 +310,7 @@ static void do_copy_maybe_null(Copy_field *copy) ...@@ -310,7 +310,7 @@ static void do_copy_maybe_null(Copy_field *copy)
/* timestamp and next_number has special handling in case of NULL values */ /* timestamp and next_number has special handling in case of NULL values */
static void do_copy_timestamp(Copy_field *copy) static void do_copy_timestamp(const Copy_field *copy)
{ {
if (*copy->from_null_ptr & copy->from_bit) if (*copy->from_null_ptr & copy->from_bit)
{ {
...@@ -322,7 +322,7 @@ static void do_copy_timestamp(Copy_field *copy) ...@@ -322,7 +322,7 @@ static void do_copy_timestamp(Copy_field *copy)
} }
static void do_copy_next_number(Copy_field *copy) static void do_copy_next_number(const Copy_field *copy)
{ {
if (*copy->from_null_ptr & copy->from_bit) if (*copy->from_null_ptr & copy->from_bit)
{ {
...@@ -335,12 +335,12 @@ static void do_copy_next_number(Copy_field *copy) ...@@ -335,12 +335,12 @@ static void do_copy_next_number(Copy_field *copy)
} }
void Field_blob::do_copy_blob(Copy_field *copy) void Field_blob::do_copy_blob(const Copy_field *copy)
{ {
((Field_blob*) copy->to_field)->copy_value(((Field_blob*) copy->from_field)); ((Field_blob*) copy->to_field)->copy_value(((Field_blob*) copy->from_field));
} }
void Field_blob::do_conv_blob(Copy_field *copy) void Field_blob::do_conv_blob(const Copy_field *copy)
{ {
copy->from_field->val_str(&copy->tmp); copy->from_field->val_str(&copy->tmp);
((Field_blob *) copy->to_field)->store(copy->tmp.ptr(), ((Field_blob *) copy->to_field)->store(copy->tmp.ptr(),
...@@ -350,7 +350,7 @@ void Field_blob::do_conv_blob(Copy_field *copy) ...@@ -350,7 +350,7 @@ void Field_blob::do_conv_blob(Copy_field *copy)
/** Save blob in copy->tmp for GROUP BY. */ /** Save blob in copy->tmp for GROUP BY. */
static void do_save_blob(Copy_field *copy) static void do_save_blob(const Copy_field *copy)
{ {
char buff[MAX_FIELD_WIDTH]; char buff[MAX_FIELD_WIDTH];
String res(buff,sizeof(buff),copy->tmp.charset()); String res(buff,sizeof(buff),copy->tmp.charset());
...@@ -362,7 +362,7 @@ static void do_save_blob(Copy_field *copy) ...@@ -362,7 +362,7 @@ static void do_save_blob(Copy_field *copy)
} }
void Field::do_field_string(Copy_field *copy) void Field::do_field_string(const Copy_field *copy)
{ {
char buff[MAX_FIELD_WIDTH]; char buff[MAX_FIELD_WIDTH];
String res(buff, sizeof(buff), copy->from_field->charset()); String res(buff, sizeof(buff), copy->from_field->charset());
...@@ -373,7 +373,7 @@ void Field::do_field_string(Copy_field *copy) ...@@ -373,7 +373,7 @@ void Field::do_field_string(Copy_field *copy)
} }
void Field_enum::do_field_enum(Copy_field *copy) void Field_enum::do_field_enum(const Copy_field *copy)
{ {
if (copy->from_field->val_int() == 0) if (copy->from_field->val_int() == 0)
((Field_enum *) copy->to_field)->store_type((ulonglong) 0); ((Field_enum *) copy->to_field)->store_type((ulonglong) 0);
...@@ -382,7 +382,7 @@ void Field_enum::do_field_enum(Copy_field *copy) ...@@ -382,7 +382,7 @@ void Field_enum::do_field_enum(Copy_field *copy)
} }
static void do_field_varbinary_pre50(Copy_field *copy) static void do_field_varbinary_pre50(const Copy_field *copy)
{ {
char buff[MAX_FIELD_WIDTH]; char buff[MAX_FIELD_WIDTH];
copy->tmp.set_buffer_if_not_allocated(buff,sizeof(buff),copy->tmp.charset()); copy->tmp.set_buffer_if_not_allocated(buff,sizeof(buff),copy->tmp.charset());
...@@ -397,35 +397,35 @@ static void do_field_varbinary_pre50(Copy_field *copy) ...@@ -397,35 +397,35 @@ static void do_field_varbinary_pre50(Copy_field *copy)
} }
void Field::do_field_int(Copy_field *copy) void Field::do_field_int(const Copy_field *copy)
{ {
longlong value= copy->from_field->val_int(); longlong value= copy->from_field->val_int();
copy->to_field->store(value, copy->to_field->store(value,
MY_TEST(copy->from_field->flags & UNSIGNED_FLAG)); MY_TEST(copy->from_field->flags & UNSIGNED_FLAG));
} }
void Field::do_field_real(Copy_field *copy) void Field::do_field_real(const Copy_field *copy)
{ {
double value=copy->from_field->val_real(); double value=copy->from_field->val_real();
copy->to_field->store(value); copy->to_field->store(value);
} }
void Field::do_field_decimal(Copy_field *copy) void Field::do_field_decimal(const Copy_field *copy)
{ {
my_decimal value(copy->from_field); my_decimal value(copy->from_field);
copy->to_field->store_decimal(&value); copy->to_field->store_decimal(&value);
} }
void Field::do_field_timestamp(Copy_field *copy) void Field::do_field_timestamp(const Copy_field *copy)
{ {
// XXX why couldn't we do it everywhere? // XXX why couldn't we do it everywhere?
copy->from_field->save_in_field(copy->to_field); copy->from_field->save_in_field(copy->to_field);
} }
void Field::do_field_temporal(Copy_field *copy, date_mode_t fuzzydate) void Field::do_field_temporal(const Copy_field *copy, date_mode_t fuzzydate)
{ {
MYSQL_TIME ltime; MYSQL_TIME ltime;
// TODO: we now need to check result // TODO: we now need to check result
...@@ -436,19 +436,19 @@ void Field::do_field_temporal(Copy_field *copy, date_mode_t fuzzydate) ...@@ -436,19 +436,19 @@ void Field::do_field_temporal(Copy_field *copy, date_mode_t fuzzydate)
} }
void Field::do_field_datetime(Copy_field *copy) void Field::do_field_datetime(const Copy_field *copy)
{ {
return do_field_temporal(copy, Datetime::Options(TIME_CONV_NONE, current_thd)); return do_field_temporal(copy, Datetime::Options(TIME_CONV_NONE, current_thd));
} }
void Field::do_field_date(Copy_field *copy) void Field::do_field_date(const Copy_field *copy)
{ {
return do_field_temporal(copy, Date::Options(TIME_CONV_NONE)); return do_field_temporal(copy, Date::Options(TIME_CONV_NONE));
} }
void Field_time::do_field_time(Copy_field *copy) void Field_time::do_field_time(const Copy_field *copy)
{ {
return do_field_temporal(copy, Time::Options(current_thd)); return do_field_temporal(copy, Time::Options(current_thd));
} }
...@@ -459,7 +459,7 @@ void Field_time::do_field_time(Copy_field *copy) ...@@ -459,7 +459,7 @@ void Field_time::do_field_time(Copy_field *copy)
from string. from string.
*/ */
static void do_cut_string(Copy_field *copy) static void do_cut_string(const Copy_field *copy)
{ {
CHARSET_INFO *cs= copy->from_field->charset(); CHARSET_INFO *cs= copy->from_field->charset();
memcpy(copy->to_ptr,copy->from_ptr,copy->to_length); memcpy(copy->to_ptr,copy->from_ptr,copy->to_length);
...@@ -480,7 +480,7 @@ static void do_cut_string(Copy_field *copy) ...@@ -480,7 +480,7 @@ static void do_cut_string(Copy_field *copy)
from string. from string.
*/ */
static void do_cut_string_complex(Copy_field *copy) static void do_cut_string_complex(const Copy_field *copy)
{ // Shorter string field { // Shorter string field
CHARSET_INFO *cs= copy->from_field->charset(); CHARSET_INFO *cs= copy->from_field->charset();
const uchar *from_end= copy->from_ptr + copy->from_length; const uchar *from_end= copy->from_ptr + copy->from_length;
...@@ -512,7 +512,7 @@ static void do_cut_string_complex(Copy_field *copy) ...@@ -512,7 +512,7 @@ static void do_cut_string_complex(Copy_field *copy)
static void do_expand_binary(Copy_field *copy) static void do_expand_binary(const Copy_field *copy)
{ {
CHARSET_INFO *cs= copy->from_field->charset(); CHARSET_INFO *cs= copy->from_field->charset();
memcpy(copy->to_ptr,copy->from_ptr,copy->from_length); memcpy(copy->to_ptr,copy->from_ptr,copy->from_length);
...@@ -522,7 +522,7 @@ static void do_expand_binary(Copy_field *copy) ...@@ -522,7 +522,7 @@ static void do_expand_binary(Copy_field *copy)
static void do_expand_string(Copy_field *copy) static void do_expand_string(const Copy_field *copy)
{ {
CHARSET_INFO *cs= copy->from_field->charset(); CHARSET_INFO *cs= copy->from_field->charset();
memcpy(copy->to_ptr,copy->from_ptr,copy->from_length); memcpy(copy->to_ptr,copy->from_ptr,copy->from_length);
...@@ -531,7 +531,7 @@ static void do_expand_string(Copy_field *copy) ...@@ -531,7 +531,7 @@ static void do_expand_string(Copy_field *copy)
} }
static void do_varstring1(Copy_field *copy) static void do_varstring1(const Copy_field *copy)
{ {
uint length= (uint) *(uchar*) copy->from_ptr; uint length= (uint) *(uchar*) copy->from_ptr;
if (length > copy->to_length- 1) if (length > copy->to_length- 1)
...@@ -548,7 +548,7 @@ static void do_varstring1(Copy_field *copy) ...@@ -548,7 +548,7 @@ static void do_varstring1(Copy_field *copy)
} }
static void do_varstring1_mb(Copy_field *copy) static void do_varstring1_mb(const Copy_field *copy)
{ {
CHARSET_INFO *cs= copy->from_field->charset(); CHARSET_INFO *cs= copy->from_field->charset();
uint from_length= (uint) *(uchar*) copy->from_ptr; uint from_length= (uint) *(uchar*) copy->from_ptr;
...@@ -566,7 +566,7 @@ static void do_varstring1_mb(Copy_field *copy) ...@@ -566,7 +566,7 @@ static void do_varstring1_mb(Copy_field *copy)
} }
static void do_varstring2(Copy_field *copy) static void do_varstring2(const Copy_field *copy)
{ {
uint length=uint2korr(copy->from_ptr); uint length=uint2korr(copy->from_ptr);
if (length > copy->to_length- HA_KEY_BLOB_LENGTH) if (length > copy->to_length- HA_KEY_BLOB_LENGTH)
...@@ -584,7 +584,7 @@ static void do_varstring2(Copy_field *copy) ...@@ -584,7 +584,7 @@ static void do_varstring2(Copy_field *copy)
} }
static void do_varstring2_mb(Copy_field *copy) static void do_varstring2_mb(const Copy_field *copy)
{ {
CHARSET_INFO *cs= copy->from_field->charset(); CHARSET_INFO *cs= copy->from_field->charset();
uint char_length= (copy->to_length - HA_KEY_BLOB_LENGTH) / cs->mbmaxlen; uint char_length= (copy->to_length - HA_KEY_BLOB_LENGTH) / cs->mbmaxlen;
......
...@@ -567,7 +567,7 @@ class Type_handler_fbt: public Type_handler ...@@ -567,7 +567,7 @@ class Type_handler_fbt: public Type_handler
return do_field_string; return do_field_string;
} }
static void do_field_fbt_native_to_binary(Copy_field *copy) static void do_field_fbt_native_to_binary(const Copy_field *copy)
{ {
NativeBuffer<FbtImpl::binary_length()+1> res; NativeBuffer<FbtImpl::binary_length()+1> res;
copy->from_field->val_native(&res); copy->from_field->val_native(&res);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment