18
18
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
#ifndef DRIZZLED_FIELD_BLOB_H
22
#define DRIZZLED_FIELD_BLOB_H
21
#ifndef DRIZZLE_SERVER_FIELD_BLOB
22
#define DRIZZLE_SERVER_FIELD_BLOB
24
24
#include <drizzled/field/str.h>
26
#include "drizzled/global_charset_info.h"
34
29
* Class representing a BLOB data type column
46
41
using Field::val_int;
47
42
using Field::val_str;
49
Field_blob(unsigned char *ptr_arg,
50
unsigned char *null_ptr_arg,
51
unsigned char null_bit_arg,
52
const char *field_name_arg,
54
uint32_t blob_pack_length,
55
const CHARSET_INFO * const cs);
56
Field_blob(uint32_t len_arg,
58
const char *field_name_arg,
45
Field_blob(unsigned char *ptr_arg, unsigned char *null_ptr_arg, unsigned char null_bit_arg,
46
enum utype unireg_check_arg, const char *field_name_arg,
47
TableShare *share, uint32_t blob_pack_length, const CHARSET_INFO * const cs);
48
Field_blob(uint32_t len_arg, bool maybe_null_arg, const char *field_name_arg,
59
49
const CHARSET_INFO * const cs)
60
:Field_str((unsigned char*) NULL,
62
maybe_null_arg ? (unsigned char *) "": 0,
50
:Field_str((unsigned char*) 0, len_arg, maybe_null_arg ? (unsigned char*) "": 0, 0,
51
NONE, field_name_arg, cs),
70
Field_blob(uint32_t len_arg,
72
const char *field_name_arg,
73
const CHARSET_INFO * const cs,
75
:Field_str((unsigned char*) NULL,
77
maybe_null_arg ? (unsigned char*) "": 0,
56
Field_blob(uint32_t len_arg, bool maybe_null_arg, const char *field_name_arg,
57
const CHARSET_INFO * const cs, bool set_packlength)
58
:Field_str((unsigned char*) 0,len_arg, maybe_null_arg ? (unsigned char*) "": 0, 0,
59
NONE, field_name_arg, cs)
84
63
if (set_packlength)
86
65
uint32_t l_char_length= len_arg/cs->mbmaxlen;
92
71
Field_blob(uint32_t packlength_arg)
93
:Field_str((unsigned char*) 0,
99
packlength(packlength_arg)
72
:Field_str((unsigned char*) 0, 0, (unsigned char*) "", 0, NONE, "temp", system_charset_info),
73
packlength(packlength_arg) {}
101
74
enum_field_types type() const { return DRIZZLE_TYPE_BLOB;}
102
75
enum ha_base_keytype key_type() const
103
76
{ return binary() ? HA_KEYTYPE_VARBINARY2 : HA_KEYTYPE_VARTEXT2; }
180
154
memcpy(ptr,length,packlength);
181
155
memcpy(ptr+packlength,&data,sizeof(char*));
183
void set_ptr_offset(ptrdiff_t ptr_diff, uint32_t length, unsigned char *data)
157
void set_ptr_offset(my_ptrdiff_t ptr_diff, uint32_t length, unsigned char *data)
185
159
unsigned char *ptr_ofs= ADD_TO_PTR(ptr,ptr_diff,unsigned char*);
186
160
store_length(ptr_ofs, packlength, length);
220
194
bool has_charset(void) const
221
195
{ return charset() == &my_charset_bin ? false : true; }
222
196
uint32_t max_display_length();
197
uint32_t is_equal(CreateField *new_field);
200
int do_save_field_metadata(unsigned char *first_byte);
225
} /* namespace drizzled */
227
#endif /* DRIZZLED_FIELD_BLOB_H */