31
30
#include "drizzled/sql_string.h"
32
31
#include "drizzled/handler_structs.h"
37
namespace memory { class Root; }
35
namespace drizzled { namespace memory { class Root; } }
41
class Key :public memory::SqlAlloc {
37
class Key :public drizzled::memory::SqlAlloc {
43
39
enum Keytype { PRIMARY, UNIQUE, MULTIPLE, FOREIGN_KEY};
72
int find_ref_key(KeyInfo *key, uint32_t key_count, unsigned char *record, Field *field,
68
int find_ref_key(KEY *key, uint32_t key_count, unsigned char *record, Field *field,
73
69
uint32_t *key_length, uint32_t *keypart);
75
71
Copy part of a record that forms a key or key prefix to a buffer.
86
82
@param key_length specifies length of all keyparts that will be copied
89
void key_copy(unsigned char *to_key, unsigned char *from_record, KeyInfo *key_info, uint32_t key_length);
85
void key_copy(unsigned char *to_key, unsigned char *from_record, KEY *key_info, uint32_t key_length);
90
86
void key_copy(std::basic_string<unsigned char> &to_key,
91
unsigned char *from_record, KeyInfo *key_info, uint32_t key_length);
92
void key_restore(unsigned char *to_record, unsigned char *from_key, KeyInfo *key_info,
87
unsigned char *from_record, KEY *key_info, uint32_t key_length);
88
void key_restore(unsigned char *to_record, unsigned char *from_key, KEY *key_info,
93
89
uint16_t key_length);
94
void key_zero_nulls(unsigned char *tuple, KeyInfo *key_info);
90
void key_zero_nulls(unsigned char *tuple, KEY *key_info);
95
91
bool key_cmp_if_same(Table *form,const unsigned char *key,uint32_t index,uint32_t key_length);
96
92
void key_unpack(String *to,Table *form,uint32_t index);
97
bool is_key_used(Table *table, uint32_t idx, const boost::dynamic_bitset<>& fields);
98
int key_cmp(KeyPartInfo *key_part, const unsigned char *key, uint32_t key_length);
100
} /* namespace drizzled */
93
bool is_key_used(Table *table, uint32_t idx, const MyBitmap *fields);
94
int key_cmp(KEY_PART_INFO *key_part, const unsigned char *key, uint32_t key_length);
95
extern "C" int key_rec_cmp(void *key_info, unsigned char *a, unsigned char *b);
102
96
#endif /* DRIZZLED_KEY_H */