20 #include <drizzled/charset.h>
21 #include <plugin/myisam/myisampack.h>
33 #define HA_MAX_POSSIBLE_KEY 255
39 #define HA_MAX_KEY_LENGTH 1332
40 #define HA_MAX_KEY_SEG 16
42 #define HA_MAX_POSSIBLE_KEY_BUFF (HA_MAX_KEY_LENGTH + 24+ 6+6)
43 #define HA_MAX_KEY_BUFF (HA_MAX_KEY_LENGTH+HA_MAX_KEY_SEG*6+8+8)
56 uint8_t bit_start,bit_end;
60 #define get_key_length(length,key) \
61 { if (*(unsigned char*) (key) != 255) \
62 length= (uint) *(unsigned char*) ((key)++); \
64 { length= mi_uint2korr((key)+1); (key)+=3; } \
67 #define get_key_length_rdonly(length,key) \
68 { if (*(unsigned char*) (key) != 255) \
69 length= ((uint) *(unsigned char*) ((key))); \
71 { length= mi_uint2korr((key)+1); } \
74 #define get_key_pack_length(length,length_pack,key) \
75 { if (*(unsigned char*) (key) != 255) \
76 { length= (uint) *(unsigned char*) ((key)++); length_pack= 1; }\
78 { length=mi_uint2korr((key)+1); (key)+= 3; length_pack= 3; } \
81 #define store_key_length_inc(key,length) \
82 { if ((length) < 255) \
83 { *(key)++= (length); } \
85 { *(key)=255; mi_int2store((key)+1,(length)); (key)+=3; } \
88 #define size_to_store_key_length(length) ((length) < 255 ? 1 : 3)
90 #define get_rec_bits(bit_ptr, bit_ofs, bit_len) \
91 (((((uint16_t) (bit_ptr)[1] << 8) | (uint16_t) (bit_ptr)[0]) >> (bit_ofs)) & \
92 ((1 << (bit_len)) - 1))
94 #define set_rec_bits(bits, bit_ptr, bit_ofs, bit_len) \
96 (bit_ptr)[0]= ((bit_ptr)[0] & ~(((1 << (bit_len)) - 1) << (bit_ofs))) | \
97 ((bits) << (bit_ofs)); \
98 if ((bit_ofs) + (bit_len) > 8) \
99 (bit_ptr)[1]= ((bit_ptr)[1] & ~((1 << ((bit_len) - 8 + (bit_ofs))) - 1)) | \
100 ((bits) >> (8 - (bit_ofs))); \
103 #define clr_rec_bits(bit_ptr, bit_ofs, bit_len) \
104 set_rec_bits(0, bit_ptr, bit_ofs, bit_len)
106 extern int ha_compare_text(
const drizzled::charset_info_st *
const,
unsigned char *, uint,
unsigned char *, uint,
bool,
bool);
109 void my_handler_error_register(
void);
110 extern int ha_key_cmp(
HA_KEYSEG *keyseg,
unsigned char *a,
unsigned char *b,
111 uint32_t key_length,uint32_t nextflag,uint32_t *diff_length);
118 #define portable_sizeof_char_ptr 8