23 #include <drizzled/field/str.h>
42 static const uint32_t MAX_SIZE;
45 uint32_t length_bytes;
49 uint32_t length_bytes_arg,
50 unsigned char *null_ptr_arg,
51 unsigned char null_bit_arg,
52 const char *field_name_arg,
56 const char *field_name_arg,
59 enum_field_types type()
const {
return DRIZZLE_TYPE_VARCHAR; }
60 enum ha_base_keytype key_type()
const;
61 bool zero_pack()
const {
return 0; }
62 int reset(
void) { memset(
ptr, 0,
field_length+length_bytes);
return 0; }
64 uint32_t pack_length_no_ptr()
const {
return length_bytes; }
65 uint32_t key_length()
const {
return (uint32_t)
field_length; }
66 uint32_t sort_length()
const
68 return (uint32_t)
field_length + (field_charset == &my_charset_bin ?
71 int store(
const char *to,uint32_t length,
const charset_info_st *
const charset);
74 int store(int64_t nr,
bool unsigned_val);
76 double val_real(
void)
const;
77 int64_t val_int(
void)
const;
79 inline String *val_str(
String *str) {
return val_str(str, str); }
80 type::Decimal *val_decimal(type::Decimal *)
const;
81 int cmp_max(
const unsigned char *,
const unsigned char *, uint32_t max_length);
82 inline int cmp(
const unsigned char *str) {
return cmp(
ptr,str); }
83 int cmp(
const unsigned char *a,
const unsigned char *b)
85 return cmp_max(a, b, UINT32_MAX);
87 void sort_string(
unsigned char *buff,uint32_t length);
89 uint32_t
get_key_image(std::basic_string <unsigned char> &buff, uint32_t length);
90 void set_key_image(
const unsigned char *buff,uint32_t length);
91 virtual unsigned char *
pack(
unsigned char *to,
92 const unsigned char *from,
96 virtual const unsigned char *
unpack(
unsigned char* to,
97 const unsigned char *from,
101 int cmp_binary(
const unsigned char *a,
const unsigned char *b, uint32_t max_length=UINT32_MAX);
102 int key_cmp(
const unsigned char *,
const unsigned char*);
103 int key_cmp(
const unsigned char *str, uint32_t length);
104 uint32_t max_packed_col_length(uint32_t max_length);
106 uint32_t size_of()
const {
return sizeof(*this); }
107 enum_field_types real_type()
const {
return DRIZZLE_TYPE_VARCHAR; }
108 bool has_charset(
void)
const
109 {
return charset() == &my_charset_bin ?
false :
true; }
110 Field *new_field(memory::Root *root, Table *new_table,
bool keep_type);
111 Field *new_key_field(memory::Root *root, Table *new_table,
112 unsigned char *new_ptr,
unsigned char *new_null_ptr,
113 uint32_t new_null_bit);
Field(unsigned char *ptr_arg, uint32_t length_arg, unsigned char *null_ptr_arg, unsigned char null_bit_arg, utype unireg_check_arg, const char *field_name_arg)
This is used as a table name when the table structure is not set up.
virtual unsigned char * pack(unsigned char *to, const unsigned char *from, uint32_t max_length, bool low_byte_first)
virtual unsigned char * pack(unsigned char *to, const unsigned char *from, uint32_t max_length, bool low_byte_first)
uint32_t pack_length() const
uint32_t get_key_image(unsigned char *buff, uint32_t length)
virtual const unsigned char * unpack(unsigned char *to, const unsigned char *from, uint32_t param_data, bool low_byte_first)
virtual const unsigned char * unpack(unsigned char *to, const unsigned char *from, uint32_t param_data, bool low_byte_first)
int key_cmp(const unsigned char *, const unsigned char *)