~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/definitions.h

  • Committer: Stewart Smith
  • Date: 2010-11-07 04:22:31 UTC
  • mto: (1911.1.2 build)
  • mto: This revision was merged to the branch mainline in revision 1912.
  • Revision ID: stewart@flamingspork.com-20101107042231-ola4sl7j0qvg58tz
fix ARCHIVE storage engine calling exit (lintian warning). Was because we were linking in libinternal into libazio, which links into archive plugin. Just link libinternal into the command line utilities.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
 *  vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
3
3
 *
4
 
 *  Copyright (C) 2008 Sun Microsystems, Inc.
 
4
 *  Copyright (C) 2008 Sun Microsystems
5
5
 *
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
30
30
 
31
31
#include <stdint.h>
32
32
 
33
 
#include "common.h"
34
 
 
35
33
namespace drizzled
36
34
{
37
35
 
42
40
 
43
41
#define LANGUAGE        "english/"
44
42
#define TEMP_PREFIX     "MY"
 
43
#define LOG_PREFIX      "ML"
45
44
 
46
45
#define ER(X) ::drizzled::error_message((X))
47
46
 
49
48
#define STRERROR_MAX 256
50
49
 
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")
59
 
 
 
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 */
62
62
#else
63
63
#define MAX_REFLENGTH 4                         /* Max length for record ref */
64
64
#endif
 
65
#define MAX_HOSTNAME  61                        /* len+1 in mysql.user */
65
66
 
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)
73
74
 
 
75
#define MAX_DATETIME_COMPRESSED_WIDTH 14  /* YYYYMMDDHHMMSS */
 
76
 
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))
101
104
*/
102
105
#define MIN_TURBOBM_PATTERN_LEN 3
103
106
 
 
107
/*
 
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.
 
111
*/
 
112
 
 
113
#define BIN_LOG_HEADER_SIZE    4
 
114
 
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
111
123
 
177
189
/** Characters shown for the command in 'show processlist'. */
178
190
#define PROCESS_LIST_WIDTH 100
179
191
 
 
192
#define PRECISION_FOR_DOUBLE 53
 
193
#define PRECISION_FOR_FLOAT  24
 
194
 
 
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
 
199
 
 
200
/* Bits from testflag */
 
201
enum test_flag_bit
 
202
{
 
203
  TEST_PRINT_CACHED_TABLES= 1,
 
204
  TEST_NO_KEY_GROUP,
 
205
  TEST_MIT_THREAD,
 
206
  TEST_KEEP_TMP_TABLES,
 
207
  TEST_READCHECK, /**< Force use of readcheck */
 
208
  TEST_NO_EXTRA,
 
209
  TEST_CORE_ON_SIGNAL, /**< Give core if signal */
 
210
  TEST_NO_STACKTRACE,
 
211
  TEST_SIGINT, /**< Allow sigint on threads */
 
212
  TEST_SYNCHRONIZATION /**< get server to do sleep in some places */
 
213
};
 
214
 
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)
256
291
#define HA_KEY_SWITCH_ALL_SAVE     3
257
292
 
258
293
/*
 
294
  Note: the following includes binlog and closing 0.
 
295
  so: innodb + bdb + ndb + binlog + myisam + myisammrg + archive +
 
296
      example + csv + heap + blackhole + federated + 0
 
297
  (yes, the sum is deliberately inaccurate)
 
298
  TODO remove the limit, use dynarrays
 
299
*/
 
300
#define MAX_HA 15
 
301
 
 
302
/*
259
303
  Parameters for open() (in register form->filestat)
260
304
  HA_GET_INFO does an implicit HA_ABORT_IF_LOCKED
261
305
*/
272
316
#define HA_BLOCK_LOCK           256     /* unlock when reading some records */
273
317
#define HA_OPEN_TEMPORARY       512
274
318
 
 
319
/* For transactional LOCK Table. handler::lock_table() */
 
320
#define HA_LOCK_IN_SHARE_MODE      F_RDLCK
 
321
#define HA_LOCK_IN_EXCLUSIVE_MODE  F_WRLCK
 
322
 
275
323
/* Some key definitions */
276
324
#define HA_KEY_NULL_LENGTH      1
277
325
#define HA_KEY_BLOB_LENGTH      2
278
326
 
279
 
const uint32_t HA_MAX_REC_LENGTH = 65535;
 
327
#define HA_MAX_REC_LENGTH       65535
280
328
 
281
329
/* Options of START TRANSACTION statement (and later of SET TRANSACTION stmt) */
282
330
enum start_transaction_option_t
295
343
#define HA_CREATE_USED_AUTO             (1L << 0)
296
344
#define HA_CREATE_USED_CHARSET          (1L << 8)
297
345
#define HA_CREATE_USED_DEFAULT_CHARSET  (1L << 9)
 
346
#define HA_CREATE_USED_ROW_FORMAT       (1L << 15)
298
347
 
299
348
/*
300
349
  The below two are not used (and not handled) in this milestone of this WL
358
407
#define MY_COLL_ALLOW_CONV            3
359
408
#define MY_COLL_DISALLOW_NONE         4
360
409
#define MY_COLL_CMP_CONV              7
361
 
 
362
 
inline static void clear_timestamp_auto_bits(timestamp_auto_set_type &_target_, 
363
 
                                             timestamp_auto_set_type _bits_)
364
 
{
365
 
  _target_= static_cast<timestamp_auto_set_type>(_target_ & ~_bits_);
366
 
}
 
410
#define clear_timestamp_auto_bits(_target_, _bits_) \
 
411
  (_target_)= (enum timestamp_auto_set_type)((int)(_target_) & ~(int)(_bits_))
367
412
 
368
413
/*
369
414
 * The following are for the interface with the .frm file
372
417
#define FIELDFLAG_PACK_SHIFT    3
373
418
#define FIELDFLAG_MAX_DEC    31
374
419
 
375
 
#ifdef __cplusplus
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)
381
 
{
382
 
  return static_cast<T>(type & 127);
383
 
}
384
 
#else
385
420
#define MTYP_TYPENR(type) (type & 127)  /* Remove bits from type */
386
 
#endif
387
 
 
388
 
inline static uint32_t f_settype(const enum enum_field_types x)
389
 
{
390
 
  return (uint32_t(x) << FIELDFLAG_PACK_SHIFT);
391
 
}
 
421
 
 
422
#define f_settype(x)    (((int) x) << FIELDFLAG_PACK_SHIFT)
 
423
 
392
424
 
393
425
#ifdef __cplusplus
394
426
template <class T> void set_if_bigger(T &a, const T &b)
402
434
  if (a > b)
403
435
    a=b;
404
436
}
405
 
 
406
 
template<class T> inline void safe_delete(T*& ptr)
407
 
{
408
 
  delete ptr;
409
 
  ptr = 0;
410
 
}
411
437
#else
412
438
#ifdef __GNUC__
413
439
#define set_if_bigger(a,b) do {                 \
466
492
#define uint64_t2double(A) ((double) (uint64_t) (A))
467
493
#endif
468
494
 
469
 
#ifndef int64_t2double
470
 
#define int64_t2double(A) ((double) (int64_t) (A))
471
 
#endif
472
 
 
473
495
#ifndef offsetof
474
496
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
475
497
#endif
 
498
#define ulong_to_double(X) ((double) (ulong) (X))
476
499
 
477
500
/* From limits.h instead */
478
501
#ifndef DBL_MIN
500
523
*/
501
524
#define MY_ALIGN(A,L)  (((A) + (L) - 1) & ~((L) - 1))
502
525
#define ALIGN_SIZE(A)  MY_ALIGN((A),sizeof(double))
 
526
/* Size to make adressable obj. */
 
527
#define ALIGN_PTR(A, t) ((t*) MY_ALIGN((A),sizeof(t)))
 
528
/* Offset of field f in structure t */
 
529
#define OFFSET(t, f)  ((size_t)(char *)&((t *)0)->f)
503
530
#ifdef __cplusplus
504
531
#define ADD_TO_PTR(ptr,size,type) (type) (reinterpret_cast<const unsigned char*>(ptr)+size)
 
532
#define PTR_BYTE_DIFF(A,B) (ptrdiff_t) (reinterpret_cast<const unsigned char*>(A) - reinterpret_cast<const unsigned char*>(B))
505
533
#else
506
534
 #define ADD_TO_PTR(ptr,size,type) (type) ((unsigned char*) (ptr)+size)
 
535
 #define PTR_BYTE_DIFF(A,B) (ptrdiff_t) ((unsigned char*) (A) - (unsigned char*) (B))
507
536
#endif
508
537
 
509
538
#define MY_DIV_UP(A, B) (((A) + (B) - 1) / (B))
539
568
#define IO_SIZE 4096
540
569
/* Max file name len */
541
570
#define FN_LEN 256
 
571
/* Max length of extension (part of FN_LEN) */
 
572
#define FN_EXTLEN 20
542
573
/* Max length of full path-name */
543
574
#define FN_REFLEN 512
544
575
/* File extension character */