20
20
#ifndef DRIZZLED_HANDLER_STRUCTS_H
21
21
#define DRIZZLED_HANDLER_STRUCTS_H
23
#if TIME_WITH_SYS_TIME
24
# include <sys/time.h>
28
# include <sys/time.h>
34
26
#include <drizzled/base.h>
35
27
#include <drizzled/structs.h>
36
28
#include <drizzled/definitions.h>
37
29
#include <drizzled/lex_string.h>
38
#include "drizzled/global_charset_info.h"
33
typedef struct st_key KEY;
35
typedef struct st_key_cache KEY_CACHE;
45
41
class StorageEngine;
49
/* true is not all entries in the engines[] support 2pc */
51
/* storage engines that registered in this transaction */
54
The purpose of this flag is to keep track of non-transactional
55
tables that were modified in scope of:
56
- transaction, when the variable is a member of
57
Session::transaction.all
58
- top-level statement or sub-statement, when the variable is a
59
member of Session::transaction.stmt
60
This member has the following life cycle:
61
* stmt.modified_non_trans_table is used to keep track of
62
modified non-transactional tables of top-level statements. At
63
the end of the previous statement and at the beginning of the session,
64
it is reset to false. If such functions
65
as mysql_insert, mysql_update, mysql_delete etc modify a
66
non-transactional table, they set this flag to true. At the
67
end of the statement, the value of stmt.modified_non_trans_table
68
is merged with all.modified_non_trans_table and gets reset.
69
* all.modified_non_trans_table is reset at the end of transaction
71
* Since we do not have a dedicated context for execution of a
72
sub-statement, to keep track of non-transactional changes in a
73
sub-statement, we re-use stmt.modified_non_trans_table.
74
At entrance into a sub-statement, a copy of the value of
75
stmt.modified_non_trans_table (containing the changes of the
76
outer statement) is saved on stack. Then
77
stmt.modified_non_trans_table is reset to false and the
78
substatement is executed. Then the new value is merged with the
81
bool modified_non_trans_table;
83
void reset() { no_2pc= false; modified_non_trans_table= false; }
48
86
typedef struct st_ha_create_information
52
90
uint64_t auto_increment_value;
53
91
uint32_t table_options;
54
92
uint32_t used_fields;
55
plugin::StorageEngine *db_type;
93
enum row_type row_type;
94
drizzled::plugin::StorageEngine *db_type;
95
uint32_t options; /* OR of HA_CREATE_ options */
56
96
bool table_existed; /* 1 in create if table existed */
58
st_ha_create_information() :
60
default_table_charset(0),
62
auto_increment_value(0),
70
99
typedef struct st_ha_alter_information
72
KeyInfo *key_info_buffer;
101
KEY *key_info_buffer;
73
102
uint32_t key_count;
74
103
uint32_t index_drop_count;
75
104
uint32_t *index_drop_buffer;
76
105
uint32_t index_add_count;
77
106
uint32_t *index_add_buffer;
80
st_ha_alter_information() :
136
168
uint32_t (*next) (range_seq_t seq, KEY_MULTI_RANGE *range);
139
} /* namespace drizzled */
172
This is a buffer area that the handler can use to store rows.
173
'end_of_used_area' should be kept updated after calls to
174
read-functions so that other parts of the code can use the
175
remaining area (until next read calls is issued).
178
typedef struct st_handler_buffer
180
unsigned char *buffer; /* Buffer one can start using */
181
unsigned char *buffer_end; /* End of buffer */
182
unsigned char *end_of_used_area; /* End of area that was used by handler */
141
185
#endif /* DRIZZLED_HANDLER_STRUCTS_H */