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