~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/server_includes.h

  • Committer: Jay Pipes
  • Date: 2009-09-21 14:33:44 UTC
  • mfrom: (1126.10.26 dtrace-probes)
  • mto: This revision was merged to the branch mainline in revision 1133.
  • Revision ID: jpipes@serialcoder-20090921143344-jnarp7gcn6zmg19c
Merge fixes from Trond and Padraig on dtrace probes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
 
3
 *
 
4
 *  Copyright (C) 2008 Sun Microsystems
 
5
 *
 
6
 *  This program is free software; you can redistribute it and/or modify
 
7
 *  it under the terms of the GNU General Public License as published by
 
8
 *  the Free Software Foundation; version 2 of the License.
 
9
 *
 
10
 *  This program is distributed in the hope that it will be useful,
 
11
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
 *  GNU General Public License for more details.
 
14
 *
 
15
 *  You should have received a copy of the GNU General Public License
 
16
 *  along with this program; if not, write to the Free Software
 
17
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
18
 */
 
19
 
 
20
/**
 
21
 * @file
 
22
 *
 
23
 * Various server-wide declarations and variables.
 
24
 */
 
25
 
 
26
#ifndef DRIZZLED_SERVER_INCLUDES_H
 
27
#define DRIZZLED_SERVER_INCLUDES_H
 
28
 
 
29
/* Cross-platform portability code and standard includes */
 
30
#include <drizzled/global.h>
 
31
/* Contains system-wide constants and #defines */
 
32
#include <drizzled/definitions.h>
 
33
 
 
34
/* Lots of system-wide struct definitions like IO_CACHE,
 
35
   prototypes for all my_* functions */
 
36
#include <mysys/my_sys.h>
 
37
/* Custom C string functions */
 
38
#include <mystrings/m_string.h>
 
39
 
 
40
/* The <strong>INTERNAL</strong> plugin API - not the external, or public, server plugin API */
 
41
#include <drizzled/sql_plugin.h>
 
42
/* Range optimization API/library */
 
43
#include <drizzled/opt_range.h>
 
44
/* Simple error injection (crash) module */
 
45
#include <drizzled/error_injection.h>
 
46
/* Routines for dropping, repairing, checking schema tables */
 
47
#include <drizzled/sql_table.h>
 
48
 
 
49
/* Routines for printing error messages */
 
50
#include <drizzled/errmsg_print.h>
 
51
 
 
52
#include <string>
 
53
#include <sstream>
 
54
#include <bitset>
 
55
 
 
56
typedef struct st_ha_create_information HA_CREATE_INFO;
 
57
 
 
58
/* information schema */
 
59
static const std::string INFORMATION_SCHEMA_NAME("information_schema");
 
60
 
 
61
/* drizzled.cc */
 
62
void refresh_status(Session *session);
 
63
void unlink_session(Session *session);
 
64
 
 
65
/* item_func.cc */
 
66
extern bool check_reserved_words(LEX_STRING *name);
 
67
extern enum_field_types agg_field_type(Item **items, uint32_t nitems);
 
68
 
 
69
/* strfunc.cc */
 
70
uint64_t find_set(TYPELIB *lib, const char *x, uint32_t length, const CHARSET_INFO * const cs,
 
71
                   char **err_pos, uint32_t *err_len, bool *set_warning);
 
72
uint32_t find_type(const TYPELIB *lib, const char *find, uint32_t length,
 
73
               bool part_match);
 
74
uint32_t find_type2(const TYPELIB *lib, const char *find, uint32_t length,
 
75
                const CHARSET_INFO *cs);
 
76
void unhex_type2(TYPELIB *lib);
 
77
uint32_t check_word(TYPELIB *lib, const char *val, const char *end,
 
78
                const char **end_of_word);
 
79
int find_string_in_array(LEX_STRING * const haystack, LEX_STRING * const needle,
 
80
                         const CHARSET_INFO * const cs);
 
81
 
 
82
/*
 
83
  External variables
 
84
*/
 
85
 
 
86
extern const CHARSET_INFO *system_charset_info;
 
87
extern const CHARSET_INFO *files_charset_info;
 
88
extern const CHARSET_INFO *table_alias_charset;
 
89
 
 
90
extern char *drizzle_tmpdir;
 
91
extern const LEX_STRING command_name[];
 
92
extern const char *first_keyword;
 
93
extern const char *binary_keyword;
 
94
extern const char *in_left_expr_name;
 
95
extern const char *in_additional_cond;
 
96
extern const char *in_having_cond;
 
97
extern char language[FN_REFLEN];
 
98
extern char glob_hostname[FN_REFLEN];
 
99
extern char drizzle_home[FN_REFLEN];
 
100
extern char pidfile_name[FN_REFLEN];
 
101
extern char system_time_zone[30];
 
102
extern char *opt_tc_log_file;
 
103
extern const double log_10[309];
 
104
extern uint64_t log_10_int[20];
 
105
extern uint64_t session_startup_options;
 
106
extern uint32_t global_thread_id;
 
107
extern uint64_t aborted_threads;
 
108
extern uint64_t aborted_connects;
 
109
extern uint64_t table_cache_size;
 
110
extern uint64_t table_def_size;
 
111
extern uint64_t max_connect_errors;
 
112
extern uint32_t back_log;
 
113
extern pid_t current_pid;
 
114
extern std::bitset<12> test_flags;
 
115
extern uint32_t ha_open_options;
 
116
extern uint32_t drizzled_tcp_port;
 
117
extern uint32_t dropping_tables;
 
118
extern bool opt_endinfo;
 
119
extern bool locked_in_memory;
 
120
extern bool volatile abort_loop;
 
121
extern bool volatile shutdown_in_progress;
 
122
extern uint32_t volatile thread_running;
 
123
extern uint32_t volatile global_read_lock;
 
124
extern bool opt_readonly;
 
125
extern char* opt_secure_file_priv;
 
126
extern char *default_tz_name;
 
127
 
 
128
extern FILE *stderror_file;
 
129
extern pthread_mutex_t LOCK_create_db;
 
130
extern pthread_mutex_t LOCK_open;
 
131
extern pthread_mutex_t LOCK_thread_count;
 
132
extern pthread_mutex_t LOCK_status;
 
133
extern pthread_mutex_t LOCK_global_read_lock;
 
134
extern pthread_mutex_t LOCK_global_system_variables;
 
135
 
 
136
extern pthread_rwlock_t LOCK_system_variables_hash;
 
137
extern pthread_cond_t COND_refresh;
 
138
extern pthread_cond_t COND_thread_count;
 
139
extern pthread_cond_t COND_global_read_lock;
 
140
extern pthread_attr_t connection_attrib;
 
141
extern std::vector<Session *> session_list;
 
142
extern String my_empty_string;
 
143
extern const String my_null_string;
 
144
extern SHOW_VAR status_vars[];
 
145
extern struct system_variables max_system_variables;
 
146
extern struct system_status_var global_status_var;
 
147
 
 
148
extern Table *unused_tables;
 
149
extern const char* any_db;
 
150
extern struct my_option my_long_options[];
 
151
extern std::bitset<5> sql_command_flags[];
 
152
 
 
153
extern StorageEngine *myisam_engine;
 
154
extern StorageEngine *heap_engine;
 
155
 
 
156
extern SHOW_COMP_OPTION have_symlink;
 
157
 
 
158
extern pthread_t signal_thread;
 
159
 
 
160
/* table.cc */
 
161
TableShare *alloc_table_share(TableList *table_list, char *key,
 
162
                               uint32_t key_length);
 
163
int open_table_def(Session *session, TableShare *share);
 
164
void open_table_error(TableShare *share, int error, int db_errno, int errarg);
 
165
int open_table_from_share(Session *session, TableShare *share, const char *alias,
 
166
                          uint32_t db_stat, uint32_t prgflag, uint32_t ha_open_flags,
 
167
                          Table *outparam, open_table_mode open_mode);
 
168
void free_blobs(Table *table);
 
169
int set_zone(int nr,int min_zone,int max_zone);
 
170
uint32_t convert_period_to_month(uint32_t period);
 
171
uint32_t convert_month_to_period(uint32_t month);
 
172
void get_date_from_daynr(long daynr,uint32_t *year, uint32_t *month,
 
173
                         uint32_t *day);
 
174
bool str_to_time_with_warn(const char *str,uint32_t length,DRIZZLE_TIME *l_time);
 
175
enum enum_drizzle_timestamp_type str_to_datetime_with_warn(const char *str, uint32_t length,
 
176
                                         DRIZZLE_TIME *l_time, uint32_t flags);
 
177
void localtime_to_TIME(DRIZZLE_TIME *to, struct tm *from);
 
178
void calc_time_from_sec(DRIZZLE_TIME *to, long seconds, long microseconds);
 
179
 
 
180
void make_truncated_value_warning(Session *session, DRIZZLE_ERROR::enum_warning_level level,
 
181
                                  const char *str_val,
 
182
                                  uint32_t str_length, enum enum_drizzle_timestamp_type time_type,
 
183
                                  const char *field_name);
 
184
 
 
185
bool calc_time_diff(DRIZZLE_TIME *l_time1, DRIZZLE_TIME *l_time2, int l_sign,
 
186
                    int64_t *seconds_out, long *microseconds_out);
 
187
 
 
188
extern LEX_STRING interval_type_to_name[];
 
189
 
 
190
void make_datetime(const DRIZZLE_TIME *l_time, String *str);
 
191
void make_date(const DRIZZLE_TIME *l_time, String *str);
 
192
void make_time(const DRIZZLE_TIME *l_time, String *str);
 
193
int my_time_compare(DRIZZLE_TIME *a, DRIZZLE_TIME *b);
 
194
uint64_t get_datetime_value(Session *session, Item ***item_arg, Item **cache_arg,
 
195
                             Item *warn_item, bool *is_null);
 
196
 
 
197
int test_if_number(char *str,int *res,bool allow_wildcards);
 
198
void change_byte(unsigned char *,uint,char,char);
 
199
void init_read_record(READ_RECORD *info, Session *session, Table *reg_form,
 
200
                      SQL_SELECT *select,
 
201
                      int use_record_cache, bool print_errors);
 
202
void init_read_record_idx(READ_RECORD *info, Session *session, Table *table,
 
203
                          bool print_error, uint32_t idx);
 
204
void end_read_record(READ_RECORD *info);
 
205
ha_rows filesort(Session *session, Table *form,struct st_sort_field *sortorder,
 
206
                 uint32_t s_length, SQL_SELECT *select,
 
207
                 ha_rows max_rows, bool sort_positions,
 
208
                 ha_rows *examined_rows);
 
209
void filesort_free_buffers(Table *table, bool full);
 
210
void change_double_for_sort(double nr,unsigned char *to);
 
211
double my_double_round(double value, int64_t dec, bool dec_unsigned,
 
212
                       bool truncate);
 
213
int get_quick_record(SQL_SELECT *select);
 
214
 
 
215
int calc_weekday(long daynr,bool sunday_first_day_of_week);
 
216
uint32_t calc_week(DRIZZLE_TIME *l_time, uint32_t week_behaviour, uint32_t *year);
 
217
void find_date(char *pos,uint32_t *vek,uint32_t flag);
 
218
TYPELIB *convert_strings_to_array_type(char * *typelibs, char * *end);
 
219
TYPELIB *typelib(MEM_ROOT *mem_root, List<String> &strings);
 
220
ulong get_form_pos(File file, unsigned char *head, TYPELIB *save_names);
 
221
ulong next_io_size(ulong pos);
 
222
void append_unescaped(String *res, const char *pos, uint32_t length);
 
223
int rename_table_proto_file(const char *from, const char* to);
 
224
int delete_table_proto_file(const char *file_name);
 
225
int rename_file_ext(const char * from,const char * to,const char * ext);
 
226
bool check_db_name(LEX_STRING *db);
 
227
bool check_column_name(const char *name);
 
228
bool check_table_name(const char *name, uint32_t length);
 
229
char *fn_rext(char *name);
 
230
 
 
231
/* Conversion functions */
 
232
size_t build_table_filename(char *buff, size_t bufflen, const char *db, 
 
233
                            const char *table_name, bool is_tmp);
 
234
 
 
235
/* Flags for conversion functions. */
 
236
#define FN_FROM_IS_TMP  (1 << 0)
 
237
#define FN_TO_IS_TMP    (1 << 1)
 
238
#define FN_IS_TMP       (FN_FROM_IS_TMP | FN_TO_IS_TMP)
 
239
#define NO_FRM_RENAME   (1 << 2)
 
240
 
 
241
inline uint32_t sql_rnd()
 
242
{
 
243
  return (uint32_t) (rand() * 0xffffffff); /* make all bits random */
 
244
}
 
245
 
 
246
/**
 
247
  convert a hex digit into number.
 
248
*/
 
249
inline int hexchar_to_int(char c)
 
250
{
 
251
  if (c <= '9' && c >= '0')
 
252
    return c-'0';
 
253
  c|=32;
 
254
  if (c <= 'f' && c >= 'a')
 
255
    return c-'a'+10;
 
256
  return -1;
 
257
}
 
258
 
 
259
#endif /* DRIZZLED_SERVER_INCLUDES_H */