1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2008 Sun Microsystems
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.
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.
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
1
/* Copyright (C) 2000-2003 MySQL AB
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.
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.
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 */
23
19
* Contains #includes and definitions that apply to ALL server-related
24
20
* executables, including storage engine plugins.
35
31
#ifndef DRIZZLE_SERVER_COMMON_INCLUDES_H
36
32
#define DRIZZLE_SERVER_COMMON_INCLUDES_H
39
34
/* Cross-platform portability code and standard includes */
40
#include <drizzled/global.h>
41
/* Lots of system-wide struct definitions like IO_CACHE,
42
prototypes for all my_* functions */
43
#include <mysys/my_sys.h>
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, prototypes for all my_* functions */
39
#include <mysys/my_sys.h>
40
/* Convenience functions for working with times */
41
#include <mysys/my_time.h>
44
42
/* Custom C string functions */
45
43
#include <mystrings/m_string.h>
45
#include <mysys/hash.h>
46
/* Standard signals API */
48
/* Deadlock-free table-list lock API */
49
#include <mysys/thr_lock.h>
50
/* Custom error API */
51
#include <drizzled/error.h>
46
52
/* Defines for the storage engine handler -- i.e. HA_XXX defines */
47
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
/* Array of pointers to Elem that uses memory from MEM_ROOT */
59
#include "sql_array.h"
48
60
/* The <strong>INTERNAL</strong> plugin API - not the external, or public, server plugin API */
49
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...*/
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>
50
70
/* Contains system-wide constants and #defines */
51
71
#include <drizzled/definitions.h>
52
72
/* System-wide common data structures */
53
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
/* Definition of the MY_LOCALE struct and some convenience functions */
79
#include <drizzled/sql_locale.h>
82
#define _DTRACE_VERSION 1
89
QT_ORDINARY -- ordinary SQL query.
90
QT_IS -- SQL query to be shown in INFORMATION_SCHEMA (in utf8 and without
91
character set introducers).
95
Move this out of here once Stew's done with UDF breakout. The following headers need it:
97
sql_lex.h --> included by sql_class.h
114
* @TODO convert all these three maps to Bitmap classes
116
* @TODO Move these to a more appropriate header file (maps.h?). The following files use them:
124
* unireg.h (going bye bye?)
135
* Since most of these include table.h, I think that would appropriate...
137
typedef uint64_t table_map; /* Used for table bits in join */
138
#if MAX_INDEXES <= 64
139
typedef Bitmap<64> key_map; /* Used for finding keys */
141
typedef Bitmap<((MAX_INDEXES+7)/8*8)> key_map; /* Used for finding keys */
143
typedef uint32_t nesting_map; /* Used for flags of nesting constructs */
146
Used to identify NESTED_JOIN structures within a join (applicable only to
147
structures that have not been simplified away and embed more the one
150
typedef uint64_t nested_join_map; /* Needed by sql_select.h and table.h */
152
/* useful constants */#
153
extern const key_map key_map_empty;
154
extern key_map key_map_full; /* Should be threaded as const */
155
extern const char *primary_key_name;
57
158
* @TODO Move the following into a drizzled.h header?
60
161
* and that are used only in the server should be separated out into
61
162
* a drizzled.h header file -- JRP
164
typedef uint64_t query_id_t;
165
extern query_id_t global_query_id;
167
/* increment query_id and return it. */
168
inline query_id_t next_query_id() { return global_query_id++; }
65
170
extern const CHARSET_INFO *system_charset_info, *files_charset_info ;
66
171
extern const CHARSET_INFO *national_charset_info, *table_alias_charset;
68
extern pthread_key_t THR_Session;
69
inline Session *_current_session(void)
71
return (Session *)pthread_getspecific(THR_Session);
174
* @TODO Move to a separate header?
176
* It's needed by item.h and field.h, which are both inter-dependent
177
* and contain forward declarations of many structs/classes in the
180
* What is needed is a separate header file that is included
181
* by *both* item.h and field.h to resolve inter-dependencies
183
* But, probably want to hold off on this until Stew finished the UDF cleanup
187
DERIVATION_IGNORABLE= 5,
188
DERIVATION_COERCIBLE= 4,
189
DERIVATION_SYSCONST= 3,
190
DERIVATION_IMPLICIT= 2,
192
DERIVATION_EXPLICIT= 0
196
* Opening modes for open_temporary_table and open_table_from_share
198
* @TODO Put this into an appropriate header. It is only needed in:
210
enum enum_parsing_place
219
enum enum_mysql_completiontype {
222
, ROLLBACK_AND_CHAIN= 7
225
, COMMIT_AND_CHAIN= 6
228
enum enum_check_fields
232
, CHECK_FIELD_ERROR_FOR_NULL
242
/* Forward declarations */
248
class user_var_entry;
249
class Security_context;
251
#define thd_proc_info(thd, msg) set_thd_proc_info(thd, msg, __func__, __FILE__, __LINE__)
253
extern pthread_key(THD*, THR_THD);
254
inline THD *_current_thd(void)
256
return (THD *)pthread_getspecific(THR_THD);
73
#define current_session _current_session()
258
#define current_thd _current_thd()
261
The meat of thd_proc_info(THD*, char*), a macro that packs the last
262
three calling-info parameters.
265
const char *set_thd_proc_info(THD *thd, const char *info,
266
const char *calling_func,
267
const char *calling_file,
268
const unsigned int calling_line);
273
extern ulong server_id;
275
/* Custom C++-style String class API */
276
#include <drizzled/sql_string.h>
277
/* Custom singly-linked list lite struct and full-blown type-safe, templatized class */
278
#include <drizzled/sql_list.h>
279
#include "my_decimal.h"
76
281
#include <drizzled/table_list.h>
282
#include "sql_error.h"
77
283
/* Drizzle server data type class definitions */
78
284
#include <drizzled/field.h>
79
#include <drizzled/item.h>
82
#include <drizzled/sql_class.h>
285
#include "protocol.h"
289
extern my_decimal decimal_zero;
291
/** @TODO Find a good header to put this guy... */
292
void close_thread_tables(THD *thd);
294
#include <drizzled/sql_parse.h>
296
#include "sql_class.h"
297
#include "slave.h" // for tables_ok(), rpl_filter
300
void sql_perror(const char *message);
302
bool fn_format_relative_to_data_home(char * to, const char *name,
303
const char *dir, const char *extension);
308
* This is much better than the previous situation of a crap-ton
309
* of conditional defines all over mysql_priv.h, but this still
310
* is hackish. Put these things into a separate header? Or fix
311
* InnoDB? Or does the InnoDB plugin already fix this stuff?
313
#if defined DRIZZLE_SERVER || defined INNODB_COMPATIBILITY_HOOKS
314
bool check_global_access(THD *thd, ulong want_access);
315
int get_quote_char_for_identifier(THD *thd, const char *name, uint length);
316
extern struct system_variables global_system_variables;
317
extern uint mysql_data_home_len;
318
extern char *mysql_data_home,server_version[SERVER_VERSION_LENGTH],
319
mysql_real_data_home[], mysql_unpacked_real_data_home[];
320
extern const CHARSET_INFO *character_set_filesystem;
321
extern char reg_ext[FN_EXTLEN];
322
extern uint reg_ext_length;
323
extern ulong specialflag;
324
extern uint lower_case_table_names;
325
uint strconvert(const CHARSET_INFO *from_cs, const char *from,
326
const CHARSET_INFO *to_cs, char *to, uint to_length,
328
uint filename_to_tablename(const char *from, char *to, uint to_length);
329
uint tablename_to_filename(const char *from, char *to, uint to_length);
330
#endif /* DRIZZLE_SERVER || INNODB_COMPATIBILITY_HOOKS */
85
332
#endif /* DRIZZLE_SERVER_COMMON_INCLUDES_H */