~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/common_includes.h

pandora-build v0.72 - Moved remaining hard-coded tests into pandora-build
macros.
Add PANDORA_DRIZZLE_BUILD to run the extra checks that drizzle needs that 
plugins would also need to run so we can just use that macro in generated
external plugin builds.
Added support to register_plugins for external plugin building.
Renamed register_plugins.py to pandora-plugin.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2000-2003 MySQL AB
2
 
 
3
 
   This program is free software; you can redistribute it and/or modify
4
 
   it under the terms of the GNU General Public License as published by
5
 
   the Free Software Foundation; version 2 of the License.
6
 
 
7
 
   This program is distributed in the hope that it will be useful,
8
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 
   GNU General Public License for more details.
11
 
 
12
 
   You should have received a copy of the GNU General Public License
13
 
   along with this program; if not, write to the Free Software
14
 
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
 
 
16
 
/**
17
 
 * @file
18
 
 * 
19
 
 * Contains #includes and definitions that apply to ALL server-related
20
 
 * executables, including storage engine plugins.
21
 
 *
22
 
 * @details
23
 
 *
24
 
 * Previously, the mysql_priv.h file contained a number of conditional
25
 
 * #ifdef DRIZZLE_SERVER blocks which made it very difficult to determine
26
 
 * which headers and definitions were actually necessary for plugins to 
27
 
 * include.  The file, and NOT mysql_priv.h, should now be the main included
28
 
 * header for storage engine plugins, as it contains all definitions and 
29
 
 * declarations needed by the plugin and nothing more.
30
 
 */
31
 
#ifndef DRIZZLE_SERVER_COMMON_INCLUDES_H
32
 
#define DRIZZLE_SERVER_COMMON_INCLUDES_H
33
 
 
34
 
/* Cross-platform portability code and standard includes */
35
 
#include <drizzled/global.h>                    
36
 
/* Server versioning information and defines */
37
 
#include <drizzled/version.h>                   
38
 
/* Lots of system-wide struct definitions like IO_CACHE, DYNAMIC_STRING, prototypes for all my_* functions */
39
 
#include <mysys/my_sys.h>                       
40
 
/* Convenience functions for working with times */
41
 
#include <libdrizzle/my_time.h>
42
 
/* Custom C string functions */
43
 
#include <mystrings/m_string.h>
44
 
/* Custom HASH API */
45
 
#include <mysys/hash.h>
46
 
/* Standard signals API */
47
 
#include <signal.h>
48
 
/* Deadlock-free table-list lock API */
49
 
#include <mysys/thr_lock.h>
50
 
/* Custom error API */
51
 
#include <drizzled/error.h>
52
 
/* Defines for the storage engine handler -- i.e. HA_XXX defines */
53
 
#include <drizzled/base.h>                                      /* Needed by field.h */
54
 
/* Custom queue API */
55
 
#include <mysys/queues.h>
56
 
/* Custom Bitmap API */
57
 
#include <drizzled/sql_bitmap.h>
58
 
/* Custom templatized, type-safe Dynamic_Array API */
59
 
#include "sql_array.h"
60
 
/* The <strong>INTERNAL</strong> plugin API - not the external, or public, server plugin API */
61
 
#include "sql_plugin.h"
62
 
/* The <strong>connection</strong> thread scheduler API */
63
 
#include "scheduler.h"
64
 
/* Network database operations (hostent, netent, servent, etc...*/
65
 
#include <netdb.h>
66
 
/* Definitions that the client and the server have in common */
67
 
#include <libdrizzle/drizzle_com.h>
68
 
/* gettext() convenience wrappers */
69
 
#include <libdrizzle/gettext.h>
70
 
/* Contains system-wide constants and #defines */
71
 
#include <drizzled/definitions.h>
72
 
/* System-wide common data structures */
73
 
#include <drizzled/structs.h>
74
 
/* Custom error definitions */
75
 
#include <drizzled/error.h>
76
 
/* Custom continguous-section memory allocator */
77
 
#include <drizzled/sql_alloc.h>
78
 
/* Virtual I/O wrapper library */
79
 
#include <vio/violite.h>
80
 
/* Definition of the MY_LOCALE struct and some convenience functions */
81
 
#include <drizzled/sql_locale.h>
82
 
 
83
 
#ifdef HAVE_DTRACE
84
 
#define _DTRACE_VERSION 1
85
 
#endif
86
 
#include "probes.h"
87
 
 
88
 
/**
89
 
  Query type constants.
90
 
 
91
 
  QT_ORDINARY -- ordinary SQL query.
92
 
  QT_IS -- SQL query to be shown in INFORMATION_SCHEMA (in utf8 and without
93
 
  character set introducers).
94
 
 
95
 
  @TODO
96
 
 
97
 
  Move this out of here once Stew's done with UDF breakout.  The following headers need it:
98
 
 
99
 
    sql_lex.h --> included by sql_class.h
100
 
    item.h
101
 
    table.h
102
 
    item_func.h
103
 
    item_subselect.h
104
 
    item_timefunc.h
105
 
    item_sum.h
106
 
    item_cmpfunc.h
107
 
    item_strfunc.h
108
 
*/
109
 
enum enum_query_type
110
 
{
111
 
  QT_ORDINARY,
112
 
  QT_IS
113
 
};
114
 
 
115
 
/** 
116
 
 * @TODO convert all these three maps to Bitmap classes 
117
 
 *
118
 
 * @TODO Move these to a more appropriate header file (maps.h?).  The following files use them:
119
 
 *
120
 
 *    item_sum.h
121
 
 *    item_compfunc.h
122
 
 *    item.h
123
 
 *    table.h
124
 
 *    item_subselect.h
125
 
 *    sql_bitmap.h
126
 
 *    unireg.h (going bye bye?)
127
 
 *    sql_udf.h
128
 
 *    item_row.h
129
 
 *    handler.cc
130
 
 *    sql_insert.cc
131
 
 *    opt_range.h
132
 
 *    opt_sum.cc
133
 
 *    item_strfunc.h
134
 
 *    sql_delete.cc
135
 
 *    sql_select.h
136
 
 *
137
 
 *    Since most of these include table.h, I think that would appropriate...
138
 
 */
139
 
typedef uint64_t table_map;          /* Used for table bits in join */
140
 
#if MAX_INDEXES <= 64
141
 
typedef Bitmap<64>  key_map;          /* Used for finding keys */
142
 
#else
143
 
typedef Bitmap<((MAX_INDEXES+7)/8*8)> key_map; /* Used for finding keys */
144
 
#endif
145
 
typedef uint32_t nesting_map;  /* Used for flags of nesting constructs */
146
 
 
147
 
/*
148
 
  Used to identify NESTED_JOIN structures within a join (applicable only to
149
 
  structures that have not been simplified away and embed more the one
150
 
  element)
151
 
*/
152
 
typedef uint64_t nested_join_map; /* Needed by sql_select.h and table.h */
153
 
 
154
 
/* useful constants */#
155
 
extern const key_map key_map_empty;
156
 
extern key_map key_map_full;          /* Should be threaded as const */
157
 
extern const char *primary_key_name;
158
 
 
159
 
/**
160
 
 * @TODO Move the following into a drizzled.h header?
161
 
 *
162
 
 * I feel that global variables and functions referencing them directly
163
 
 * and that are used only in the server should be separated out into 
164
 
 * a drizzled.h header file -- JRP
165
 
 */
166
 
typedef uint64_t query_id_t;
167
 
extern query_id_t global_query_id;
168
 
 
169
 
/* increment query_id and return it.  */
170
 
inline query_id_t next_query_id() { return global_query_id++; }
171
 
 
172
 
extern const CHARSET_INFO *system_charset_info, *files_charset_info ;
173
 
extern const CHARSET_INFO *national_charset_info, *table_alias_charset;
174
 
 
175
 
/**
176
 
 * @TODO Move to a separate header?
177
 
 *
178
 
 * It's needed by item.h and field.h, which are both inter-dependent
179
 
 * and contain forward declarations of many structs/classes in the
180
 
 * other header file.
181
 
 *
182
 
 * What is needed is a separate header file that is included
183
 
 * by *both* item.h and field.h to resolve inter-dependencies
184
 
 *
185
 
 * But, probably want to hold off on this until Stew finished the UDF cleanup
186
 
 */
187
 
enum Derivation
188
 
{
189
 
  DERIVATION_IGNORABLE= 5,
190
 
  DERIVATION_COERCIBLE= 4,
191
 
  DERIVATION_SYSCONST= 3,
192
 
  DERIVATION_IMPLICIT= 2,
193
 
  DERIVATION_NONE= 1,
194
 
  DERIVATION_EXPLICIT= 0
195
 
};
196
 
 
197
 
/**
198
 
 * Opening modes for open_temporary_table and open_table_from_share
199
 
 *
200
 
 * @TODO Put this into an appropriate header. It is only needed in:
201
 
 *
202
 
 *    table.cc
203
 
 *    sql_base.cc
204
 
 */
205
 
enum open_table_mode
206
 
{
207
 
  OTM_OPEN= 0,
208
 
  OTM_CREATE= 1,
209
 
  OTM_ALTER= 2
210
 
};
211
 
 
212
 
enum enum_parsing_place
213
 
{
214
 
  NO_MATTER
215
 
  , IN_HAVING
216
 
  , SELECT_LIST
217
 
  , IN_WHERE
218
 
  , IN_ON
219
 
};
220
 
 
221
 
enum enum_mysql_completiontype {
222
 
  ROLLBACK_RELEASE= -2
223
 
  , ROLLBACK= 1
224
 
  , ROLLBACK_AND_CHAIN= 7
225
 
  , COMMIT_RELEASE= -1
226
 
  , COMMIT= 0
227
 
  , COMMIT_AND_CHAIN= 6
228
 
};
229
 
 
230
 
enum enum_check_fields
231
 
{
232
 
  CHECK_FIELD_IGNORE
233
 
  , CHECK_FIELD_WARN
234
 
  , CHECK_FIELD_ERROR_FOR_NULL
235
 
};
236
 
 
237
 
enum enum_var_type
238
 
{
239
 
  OPT_DEFAULT= 0
240
 
  , OPT_SESSION
241
 
  , OPT_GLOBAL
242
 
};
243
 
 
244
 
/* Forward declarations */
245
 
 
246
 
struct TABLE_LIST;
247
 
class String;
248
 
struct st_table;
249
 
class THD;
250
 
class user_var_entry;
251
 
class Security_context;
252
 
 
253
 
#define thd_proc_info(thd, msg)  set_thd_proc_info(thd, msg, __func__, __FILE__, __LINE__)
254
 
 
255
 
extern pthread_key(THD*, THR_THD);
256
 
inline THD *_current_thd(void)
257
 
{
258
 
  return (THD *)pthread_getspecific(THR_THD);
259
 
}
260
 
#define current_thd _current_thd()
261
 
 
262
 
/** 
263
 
  The meat of thd_proc_info(THD*, char*), a macro that packs the last
264
 
  three calling-info parameters. 
265
 
*/
266
 
extern "C"
267
 
const char *set_thd_proc_info(THD *thd, const char *info, 
268
 
                              const char *calling_func, 
269
 
                              const char *calling_file, 
270
 
                              const unsigned int calling_line);
271
 
 
272
 
/*
273
 
  External variables
274
 
*/
275
 
extern ulong server_id;
276
 
 
277
 
/* Custom C++-style String class API */
278
 
#include <drizzled/sql_string.h>
279
 
/* Custom singly-linked list lite struct and full-blown type-safe, templatized class */
280
 
#include <drizzled/sql_list.h>
281
 
#include "sql_map.h"
282
 
#include "my_decimal.h"
283
 
#include "handler.h"
284
 
#include "table.h"
285
 
#include "sql_error.h"
286
 
/* Drizzle server data type class definitions */
287
 
#include <drizzled/field.h>
288
 
#include "protocol.h"
289
 
#include "sql_udf.h"
290
 
#include "item.h"
291
 
 
292
 
extern my_decimal decimal_zero;
293
 
 
294
 
/** @TODO Find a good header to put this guy... */
295
 
void close_thread_tables(THD *thd);
296
 
 
297
 
#include <drizzled/sql_parse.h>
298
 
 
299
 
#include "sql_class.h"
300
 
#include "slave.h" // for tables_ok(), rpl_filter
301
 
#include "tztime.h"
302
 
 
303
 
void sql_perror(const char *message);
304
 
 
305
 
bool fn_format_relative_to_data_home(char * to, const char *name,
306
 
                                     const char *dir, const char *extension);
307
 
 
308
 
/**
309
 
 * @TODO
310
 
 *
311
 
 * This is much better than the previous situation of a crap-ton
312
 
 * of conditional defines all over mysql_priv.h, but this still
313
 
 * is hackish.  Put these things into a separate header?  Or fix
314
 
 * InnoDB?  Or does the InnoDB plugin already fix this stuff?
315
 
 */
316
 
#if defined DRIZZLE_SERVER || defined INNODB_COMPATIBILITY_HOOKS
317
 
bool check_global_access(THD *thd, ulong want_access);
318
 
int get_quote_char_for_identifier(THD *thd, const char *name, uint length);
319
 
extern struct system_variables global_system_variables;
320
 
extern uint mysql_data_home_len;
321
 
extern char *mysql_data_home,server_version[SERVER_VERSION_LENGTH],
322
 
            mysql_real_data_home[], mysql_unpacked_real_data_home[];
323
 
extern const CHARSET_INFO *character_set_filesystem;
324
 
extern char reg_ext[FN_EXTLEN];
325
 
extern uint reg_ext_length;
326
 
extern ulong specialflag;
327
 
extern uint lower_case_table_names;
328
 
uint strconvert(const CHARSET_INFO *from_cs, const char *from,
329
 
                const CHARSET_INFO *to_cs, char *to, uint to_length,
330
 
                uint *errors);
331
 
uint filename_to_tablename(const char *from, char *to, uint to_length);
332
 
uint tablename_to_filename(const char *from, char *to, uint to_length);
333
 
#endif /* DRIZZLE_SERVER || INNODB_COMPATIBILITY_HOOKS */
334
 
 
335
 
#endif /* DRIZZLE_SERVER_COMMON_INCLUDES_H */