24
24
#include <drizzled/definitions.h>
25
25
#include <drizzled/lex_string.h>
26
26
#include <drizzled/thr_lock.h>
27
#include <drizzled/message/table.pb.h>
28
29
namespace drizzled {
31
{ /* Info about a key part */
34
unsigned int offset; /* offset in record (from 0) */
35
unsigned int null_offset; /* Offset to null_bit in record */
36
/* Length of key part in bytes, excluding NULL flag and length bytes */
39
Number of bytes required to store the keypart value. This may be
40
different from the "length" field as it also counts
41
- possible NULL-flag byte (see HA_KEY_NULL_LENGTH) [if null_bit != 0,
42
the first byte stored at offset is 1 if null, 0 if non-null; the
43
actual value is stored from offset+1].
44
- possible HA_KEY_BLOB_LENGTH bytes needed to store actual value length.
46
uint16_t store_length;
50
uint16_t getKeyType() const
54
uint16_t fieldnr; /* Fieldnum in UNIREG (1,2,3,...) */
55
uint16_t key_part_flag; /* 0 or HA_REVERSE_SORT */
57
uint8_t null_bit; /* Position to null_bit */
64
36
unsigned int key_length; /* Tot length of key */
65
enum ha_key_alg algorithm;
37
drizzled::message::Table::Index::IndexType algorithm;
66
38
unsigned long flags; /* dupp key and pack flags */
67
39
unsigned int key_parts; /* How many key_parts */
68
40
uint32_t extra_length;
86
public: /* Extra info about reg */
87
JoinTable *join_tab; /* Used by SELECT() */
88
enum thr_lock_type lock_type; /* How database is used */
89
bool not_exists_optimize;
90
bool impossible_range;
92
: join_tab(NULL), lock_type(TL_UNLOCK),
93
not_exists_optimize(false), impossible_range(false) {}
98
not_exists_optimize= false;
99
impossible_range= false;
103
typedef int *(*update_var)(Session *, struct drizzle_show_var *);
105
55
} /* namespace drizzled */
107
/* Bits in form->status */
108
#define STATUS_NO_RECORD (1+2) /* Record isn't usably */
109
#define STATUS_GARBAGE 1
110
#define STATUS_NOT_FOUND 2 /* No record in database when needed */
111
#define STATUS_NO_PARENT 4 /* Parent record wasn't found */
112
#define STATUS_NULL_ROW 32 /* table->null_row is set */