~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/key.h

  • Committer: Mark Atwood
  • Date: 2011-10-14 15:59:08 UTC
  • mfrom: (2430.1.12 refactor3a)
  • Revision ID: me@mark.atwood.name-20111014155908-whqmrmaf2grpsg5c
mergeĀ lp:~olafvdspek/drizzle/refactor3

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