24 #include <boost/dynamic_bitset.hpp>
26 #include <drizzled/memory/sql_alloc.h>
27 #include <drizzled/key_part_spec.h>
28 #include <drizzled/sql_list.h>
29 #include <drizzled/lex_string.h>
30 #include <drizzled/sql_string.h>
31 #include <drizzled/handler_structs.h>
38 enum Keytype { PRIMARY, UNIQUE, MULTIPLE, FOREIGN_KEY };
47 key_create_info(*key_info_arg),
50 generated(generated_arg)
55 friend bool foreign_key_prefix(
Key *a,
Key *b);
59 int find_ref_key(
KeyInfo *key, uint32_t key_count,
unsigned char *record,
Field *field, uint32_t *key_length, uint32_t *keypart);
75 DRIZZLED_API void key_copy(
unsigned char *to_key,
unsigned char *from_record,
KeyInfo *key_info, uint32_t key_length);
76 void key_copy(std::basic_string<unsigned char> &to_key,
unsigned char *from_record,
KeyInfo *key_info, uint32_t key_length);
77 void key_restore(
unsigned char *to_record,
unsigned char *from_key,
KeyInfo *key_info, uint16_t key_length);
80 void key_unpack(
String *to,
const Table *form,uint32_t index);
81 bool is_key_used(
Table *table, uint32_t idx,
const boost::dynamic_bitset<>& fields);
void key_zero_nulls(unsigned char *tuple, KeyInfo *key_info)
int key_cmp(KeyPartInfo *key_part, const unsigned char *key, uint32_t key_length)
bool key_cmp_if_same(Table *table, const unsigned char *key, uint32_t idx, uint32_t key_length)