~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/key.h

  • Committer: Mark Atwood
  • Date: 2011-12-15 23:13:18 UTC
  • mfrom: (2465.3.1 rf3)
  • Revision ID: me@mark.atwood.name-20111215231318-mt2y2q4s5ydp79q3
mergeĀ lp:~olafvdspek/drizzle/refactor14

Show diffs side-by-side

added added

removed removed

Lines of Context:
32
32
 
33
33
namespace drizzled {
34
34
 
35
 
class Key :public memory::SqlAlloc {
 
35
class Key : public memory::SqlAlloc 
 
36
{
36
37
public:
37
 
  enum Keytype { PRIMARY, UNIQUE, MULTIPLE, FOREIGN_KEY};
 
38
  enum Keytype { PRIMARY, UNIQUE, MULTIPLE, FOREIGN_KEY };
38
39
  Keytype type;
39
40
  KEY_CREATE_INFO key_create_info;
40
41
  List<Key_part_spec> columns;
41
 
  lex_string_t name;
 
42
  str_ref name;
42
43
  bool generated;
43
44
 
44
 
  Key(Keytype type_par,
45
 
      const lex_string_t &name_arg,
46
 
      KEY_CREATE_INFO *key_info_arg,
47
 
      bool generated_arg, List<Key_part_spec> &cols) :
 
45
  Key(Keytype type_par, str_ref name_arg, KEY_CREATE_INFO *key_info_arg, bool generated_arg, List<Key_part_spec> &cols) :
48
46
    type(type_par),
49
47
    key_create_info(*key_info_arg),
50
48
    columns(cols),
52
50
    generated(generated_arg)
53
51
  {}
54
52
 
55
 
  Key(Keytype type_par,
56
 
      const char *name_arg,
57
 
      size_t name_len_arg,
58
 
      KEY_CREATE_INFO *key_info_arg,
59
 
      bool generated_arg,
60
 
      List<Key_part_spec> &cols) :
61
 
    type(type_par),
62
 
    key_create_info(*key_info_arg),
63
 
    columns(cols),
64
 
    generated(generated_arg)
65
 
  {
66
 
    name.str= const_cast<char *>(name_arg);
67
 
    name.length= name_len_arg;
68
 
  }
69
 
 
70
53
  virtual ~Key() {}
71
54
  /* Equality comparison of keys (ignoring name) */
72
55
  friend bool foreign_key_prefix(Key *a, Key *b);
73
56
};
74
57
 
75
58
 
76
 
int find_ref_key(KeyInfo *key, uint32_t key_count, unsigned char *record, Field *field,
77
 
                 uint32_t *key_length, uint32_t *keypart);
 
59
int find_ref_key(KeyInfo *key, uint32_t key_count, unsigned char *record, Field *field, uint32_t *key_length, uint32_t *keypart);
78
60
/**
79
61
  Copy part of a record that forms a key or key prefix to a buffer.
80
62
 
91
73
*/
92
74
 
93
75
DRIZZLED_API void key_copy(unsigned char *to_key, unsigned char *from_record, KeyInfo *key_info, uint32_t key_length);
94
 
void key_copy(std::basic_string<unsigned char> &to_key,
95
 
              unsigned char *from_record, KeyInfo *key_info, uint32_t key_length);
96
 
void key_restore(unsigned char *to_record, unsigned char *from_key, KeyInfo *key_info,
97
 
                 uint16_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);
98
78
void key_zero_nulls(unsigned char *tuple, KeyInfo *key_info);
99
79
bool key_cmp_if_same(Table *form,const unsigned char *key,uint32_t index,uint32_t key_length);
100
80
void key_unpack(String *to, const Table *form,uint32_t index);
102
82
int key_cmp(KeyPartInfo *key_part, const unsigned char *key, uint32_t key_length);
103
83
 
104
84
} /* namespace drizzled */
105