1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2008 Sun Microsystems, Inc.
4
* Copyright (C) 2008 Sun Microsystems
6
6
* This program is free software; you can redistribute it and/or modify
7
7
* it under the terms of the GNU General Public License as published by
49
48
#define STRERROR_MAX 256
51
50
/* extra 4+4 bytes for slave tmp tables */
51
#define MAX_DBKEY_LENGTH (NAME_LEN*2+1+1+4+4)
52
#define MAX_ALIAS_NAME 256
52
53
#define MAX_FIELD_NAME 34 /* Max colum name length +2 */
53
54
#define MAX_SYS_VAR_LENGTH 32
54
55
#define MAX_INDEXES 64
55
const uint32_t MAX_KEY = MAX_INDEXES; /* Max used keys */
56
const uint32_t MAX_REF_PARTS = 16; /* Max parts used as ref */
57
const uint32_t MAX_KEY_LENGTH = 4096; // max possible key
58
const uint32_t MAX_KEY_LENGTH_DECIMAL_WIDTH = 4; // strlen("4096")
56
#define MAX_KEY MAX_INDEXES /* Max used keys */
57
#define MAX_REF_PARTS 16 /* Max parts used as ref */
58
#define MAX_KEY_LENGTH 4096 /* max possible key */
59
#define MAX_KEY_LENGTH_DECIMAL_WIDTH 4 /* strlen("4096") */
60
60
#if SIZEOF_OFF_T > 4
61
61
#define MAX_REFLENGTH 8 /* Max length for record ref */
63
63
#define MAX_REFLENGTH 4 /* Max length for record ref */
65
#define MAX_HOSTNAME 61 /* len+1 in mysql.user */
66
67
#define MAX_MBWIDTH 4 /* Max multibyte sequence */
67
68
#define MAX_FIELD_CHARLENGTH 255
71
72
/* Max column width +1 */
72
73
#define MAX_FIELD_WIDTH (MAX_FIELD_CHARLENGTH*MAX_MBWIDTH+1)
75
#define MAX_DATETIME_COMPRESSED_WIDTH 14 /* YYYYMMDDHHMMSS */
74
77
#define MAX_TABLES (sizeof(table_map)*8-3) /* Max tables in join */
75
78
#define PARAM_TABLE_BIT (((table_map) 1) << (sizeof(table_map)*8-3))
76
79
#define OUTER_REF_TABLE_BIT (((table_map) 1) << (sizeof(table_map)*8-2))
102
105
#define MIN_TURBOBM_PATTERN_LEN 3
108
Defines for binary logging.
109
Do not decrease the value of BIN_LOG_HEADER_SIZE.
110
Do not even increase it before checking code.
113
#define BIN_LOG_HEADER_SIZE 4
104
115
/* Below are #defines that used to be in mysql_priv.h */
105
116
/***************************************************************************
106
117
Configuration parameters
107
118
****************************************************************************/
108
119
#define MAX_FIELDS_BEFORE_HASH 32
120
#define USER_VARS_HASH_SIZE 16
109
121
#define TABLE_OPEN_CACHE_MIN 64
110
122
#define TABLE_OPEN_CACHE_DEFAULT 1024
177
189
/** Characters shown for the command in 'show processlist'. */
178
190
#define PROCESS_LIST_WIDTH 100
192
#define PRECISION_FOR_DOUBLE 53
193
#define PRECISION_FOR_FLOAT 24
195
/* The following can also be changed from the command line */
196
#define DEFAULT_CONCURRENCY 10
197
#define FLUSH_TIME 0 /**< Don't flush tables */
198
#define MAX_CONNECT_ERRORS 10 ///< errors before disabling host
200
/* Bits from testflag */
203
TEST_PRINT_CACHED_TABLES= 1,
206
TEST_KEEP_TMP_TABLES,
207
TEST_READCHECK, /**< Force use of readcheck */
209
TEST_CORE_ON_SIGNAL, /**< Give core if signal */
211
TEST_SIGINT, /**< Allow sigint on threads */
212
TEST_SYNCHRONIZATION /**< get server to do sleep in some places */
180
215
/* Bits for different SQL modes modes (including ANSI mode) */
181
216
#define MODE_NO_ZERO_DATE (2)
182
217
#define MODE_INVALID_DATES (MODE_NO_ZERO_DATE*2)
184
219
#define MY_CHARSET_BIN_MB_MAXLEN 1
186
221
// uncachable cause
187
static const uint32_t UNCACHEABLE_DEPENDENT= 1;
188
static const uint32_t UNCACHEABLE_RAND= 2;
189
static const uint32_t UNCACHEABLE_SIDEEFFECT= 3;
222
#define UNCACHEABLE_DEPENDENT 1
223
#define UNCACHEABLE_RAND 2
224
#define UNCACHEABLE_SIDEEFFECT 4
190
225
/// forcing to save JOIN for explain
191
static const uint32_t UNCACHEABLE_EXPLAIN= 4;
226
#define UNCACHEABLE_EXPLAIN 8
192
227
/** Don't evaluate subqueries in prepare even if they're not correlated */
193
static const uint32_t UNCACHEABLE_PREPARE= 5;
228
#define UNCACHEABLE_PREPARE 16
194
229
/* For uncorrelated SELECT in an UNION with some correlated SELECTs */
195
static const uint32_t UNCACHEABLE_UNITED= 6;
230
#define UNCACHEABLE_UNITED 32
197
232
/* Used to check GROUP BY list in the MODE_ONLY_FULL_GROUP_BY mode */
198
233
#define UNDEF_POS (-1)
200
235
/* Options to add_table_to_list() */
201
static const uint32_t TL_OPTION_UPDATING= 0;
202
static const uint32_t TL_OPTION_FORCE_INDEX= 1;
203
static const uint32_t TL_OPTION_IGNORE_LEAVES= 2;
204
static const uint32_t TL_OPTION_ALIAS= 3;
205
static const uint32_t NUM_OF_TABLE_OPTIONS= 4;
236
#define TL_OPTION_UPDATING 1
237
#define TL_OPTION_FORCE_INDEX 2
238
#define TL_OPTION_IGNORE_LEAVES 4
239
#define TL_OPTION_ALIAS 8
207
241
/* Some portable defines */
256
290
#define HA_KEY_SWITCH_ALL_SAVE 3
293
Note: the following includes binlog and closing 0.
294
so: innodb + bdb + ndb + binlog + myisam + myisammrg + archive +
295
example + csv + heap + blackhole + federated + 0
296
(yes, the sum is deliberately inaccurate)
297
TODO remove the limit, use dynarrays
259
302
Parameters for open() (in register form->filestat)
260
303
HA_GET_INFO does an implicit HA_ABORT_IF_LOCKED
272
315
#define HA_BLOCK_LOCK 256 /* unlock when reading some records */
273
316
#define HA_OPEN_TEMPORARY 512
318
/* For transactional LOCK Table. handler::lock_table() */
319
#define HA_LOCK_IN_SHARE_MODE F_RDLCK
320
#define HA_LOCK_IN_EXCLUSIVE_MODE F_WRLCK
275
322
/* Some key definitions */
276
323
#define HA_KEY_NULL_LENGTH 1
277
324
#define HA_KEY_BLOB_LENGTH 2
279
const uint32_t HA_MAX_REC_LENGTH = 65535;
326
#define HA_MAX_REC_LENGTH 65535
281
328
/* Options of START TRANSACTION statement (and later of SET TRANSACTION stmt) */
282
329
enum start_transaction_option_t
295
342
#define HA_CREATE_USED_AUTO (1L << 0)
296
343
#define HA_CREATE_USED_CHARSET (1L << 8)
297
344
#define HA_CREATE_USED_DEFAULT_CHARSET (1L << 9)
345
#define HA_CREATE_USED_ROW_FORMAT (1L << 15)
300
348
The below two are not used (and not handled) in this milestone of this WL
358
406
#define MY_COLL_ALLOW_CONV 3
359
407
#define MY_COLL_DISALLOW_NONE 4
360
408
#define MY_COLL_CMP_CONV 7
362
inline static void clear_timestamp_auto_bits(timestamp_auto_set_type &_target_,
363
timestamp_auto_set_type _bits_)
365
_target_= static_cast<timestamp_auto_set_type>(_target_ & ~_bits_);
409
#define clear_timestamp_auto_bits(_target_, _bits_) \
410
(_target_)= (enum timestamp_auto_set_type)((int)(_target_) & ~(int)(_bits_))
369
413
* The following are for the interface with the .frm file
372
416
#define FIELDFLAG_PACK_SHIFT 3
373
417
#define FIELDFLAG_MAX_DEC 31
376
// FIXME: T will just be drizzled::Field::utype, but that would
377
// require including field.h. Moving the function elsewhere might be a
378
// better idea. Leaving it for restructuring.
379
template <typename T>
380
T MTYP_TYPENR(const T& type)
382
return static_cast<T>(type & 127);
385
419
#define MTYP_TYPENR(type) (type & 127) /* Remove bits from type */
388
inline static uint32_t f_settype(const enum enum_field_types x)
390
return (uint32_t(x) << FIELDFLAG_PACK_SHIFT);
421
#define f_settype(x) (((int) x) << FIELDFLAG_PACK_SHIFT)
393
424
#ifdef __cplusplus
394
425
template <class T> void set_if_bigger(T &a, const T &b)
466
491
#define uint64_t2double(A) ((double) (uint64_t) (A))
469
#ifndef int64_t2double
470
#define int64_t2double(A) ((double) (int64_t) (A))
474
495
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
497
#define ulong_to_double(X) ((double) (ulong) (X))
477
499
/* From limits.h instead */
501
523
#define MY_ALIGN(A,L) (((A) + (L) - 1) & ~((L) - 1))
502
524
#define ALIGN_SIZE(A) MY_ALIGN((A),sizeof(double))
525
/* Size to make adressable obj. */
526
#define ALIGN_PTR(A, t) ((t*) MY_ALIGN((A),sizeof(t)))
527
/* Offset of field f in structure t */
528
#define OFFSET(t, f) ((size_t)(char *)&((t *)0)->f)
503
529
#ifdef __cplusplus
504
530
#define ADD_TO_PTR(ptr,size,type) (type) (reinterpret_cast<const unsigned char*>(ptr)+size)
531
#define PTR_BYTE_DIFF(A,B) (ptrdiff_t) (reinterpret_cast<const unsigned char*>(A) - reinterpret_cast<const unsigned char*>(B))
506
533
#define ADD_TO_PTR(ptr,size,type) (type) ((unsigned char*) (ptr)+size)
534
#define PTR_BYTE_DIFF(A,B) (ptrdiff_t) ((unsigned char*) (A) - (unsigned char*) (B))
509
537
#define MY_DIV_UP(A, B) (((A) + (B) - 1) / (B))
589
619
# define _DTRACE_VERSION 0
592
typedef uint64_t table_map; /* Used for table bits in join */
593
typedef uint32_t nesting_map; /* Used for flags of nesting constructs */
595
622
} /* namespace drizzled */
597
624
#endif /* DRIZZLED_DEFINITIONS_H */