~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/base.h

  • Committer: Patrick Galbraith
  • Date: 2009-10-08 22:42:05 UTC
  • mto: (1166.5.3 memcached_functions)
  • mto: This revision was merged to the branch mainline in revision 1189.
  • Revision ID: patg@patrick-galbraiths-macbook-pro.local-20091008224205-gq1pehjsivvx0qo9
Starting over with a fresh tree, moved in memcached functions.

Memcached Functions for Drizzle. 

All tests pass.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 
22
22
/**
23
23
 * @TODO Name this file something better and split it out if necessary.
 
24
 * base.h isn't descriptive, especially compared to global.h
24
25
 *
25
26
 * @TODO Convert HA_XXX defines into enums and/or bitmaps
26
27
 */
27
28
 
28
 
#include "definitions.h"
29
 
 
30
 
#ifndef DRIZZLED_BASE_H
31
 
#define DRIZZLED_BASE_H
32
 
 
33
 
namespace drizzled
34
 
{
 
29
#ifndef DRIZZLE_SERVER_BASE_H
 
30
#define DRIZZLE_SERVER_BASE_H
 
31
 
 
32
#define CHSIZE_USED
35
33
 
36
34
/* The following is bits in the flag parameter to ha_open() */
37
35
 
39
37
#define HA_OPEN_WAIT_IF_LOCKED          1
40
38
#define HA_OPEN_IGNORE_IF_LOCKED        2
41
39
#define HA_OPEN_TMP_TABLE               4       /* Table is a temp table */
 
40
#define HA_OPEN_ABORT_IF_CRASHED        16
 
41
#define HA_OPEN_FOR_REPAIR              32      /* open even if crashed */
42
42
/* Internal temp table, used for temporary results */
43
43
#define HA_OPEN_INTERNAL_TABLE          512
44
44
 
84
84
enum ha_key_alg {
85
85
  HA_KEY_ALG_UNDEF=     0,              /* Not specified (old file) */
86
86
  HA_KEY_ALG_BTREE=     1,              /* B-tree, default one          */
87
 
  HA_KEY_ALG_HASH=      3               /* HASH keys (HEAP tables) */
 
87
  HA_KEY_ALG_RTREE=     2,              /* R-tree, for spatial searches */
 
88
  HA_KEY_ALG_HASH=      3,              /* HASH keys (HEAP tables) */
 
89
  HA_KEY_ALG_FULLTEXT=  4               /* FULLTEXT (MyISAM tables) */
88
90
};
89
91
 
90
92
        /* Index and table build methods */
175
177
  HA_EXTRA_PREPARE_FOR_RENAME
176
178
};
177
179
 
 
180
/* Compatible option, to be deleted in 6.0 */
 
181
#define HA_EXTRA_PREPARE_FOR_DELETE HA_EXTRA_PREPARE_FOR_DROP
 
182
 
178
183
        /* The following is parameter to ha_panic() */
179
184
 
180
185
enum ha_panic_function {
189
194
  HA_KEYTYPE_END=0,
190
195
  HA_KEYTYPE_TEXT=1,                    /* Key is sorted as letters */
191
196
  HA_KEYTYPE_BINARY=2,                  /* Key is sorted as unsigned chars */
 
197
  HA_KEYTYPE_SHORT_INT=3,
192
198
  HA_KEYTYPE_LONG_INT=4,
 
199
  HA_KEYTYPE_FLOAT=5,
193
200
  HA_KEYTYPE_DOUBLE=6,
 
201
  HA_KEYTYPE_NUM=7,                     /* Not packed num with pre-space */
 
202
  HA_KEYTYPE_USHORT_INT=8,
194
203
  HA_KEYTYPE_ULONG_INT=9,
195
204
  HA_KEYTYPE_LONGLONG=10,
196
205
  HA_KEYTYPE_ULONGLONG=11,
 
206
  HA_KEYTYPE_INT24=12,
 
207
  HA_KEYTYPE_UINT24=13,
 
208
  HA_KEYTYPE_INT8=14,
197
209
  /* Varchar (0-255 bytes) with length packed with 1 byte */
198
210
  HA_KEYTYPE_VARTEXT1=15,               /* Key is sorted as letters */
199
211
  HA_KEYTYPE_VARBINARY1=16,             /* Key is sorted as unsigned chars */
200
212
  /* Varchar (0-65535 bytes) with length packed with 2 bytes */
201
213
  HA_KEYTYPE_VARTEXT2=17,               /* Key is sorted as letters */
202
 
  HA_KEYTYPE_VARBINARY2=18              /* Key is sorted as unsigned chars */
 
214
  HA_KEYTYPE_VARBINARY2=18,             /* Key is sorted as unsigned chars */
 
215
  HA_KEYTYPE_BIT=19
203
216
};
204
217
 
 
218
#define HA_MAX_KEYTYPE  31              /* Must be log2-1 */
 
219
 
205
220
        /* These flags kan be OR:ed to key-flag */
206
221
 
207
222
#define HA_NOSAME                1      /* Set if not dupplicated records */
212
227
#define HA_NULL_ARE_EQUAL       2048    /* NULL in key are cmp as equal */
213
228
#define HA_GENERATED_KEY        8192    /* Automaticly generated key */
214
229
 
 
230
        /* The combination of the above can be used for key type comparison. */
 
231
#define HA_KEYFLAG_MASK (HA_NOSAME | HA_PACK_KEY | HA_AUTO_KEY | \
 
232
                         HA_BINARY_PACK_KEY | HA_UNIQUE_CHECK | \
 
233
                         HA_NULL_ARE_EQUAL | HA_GENERATED_KEY)
 
234
 
215
235
#define HA_KEY_HAS_PART_KEY_SEG 65536   /* Key contains partial segments */
216
236
 
217
237
        /* Automatic bits in key-flag */
246
266
#define HA_OPTION_COMPRESS_RECORD       4
247
267
#define HA_OPTION_TMP_TABLE             16
248
268
#define HA_OPTION_NO_PACK_KEYS          128  /* Reserved for MySQL */
 
269
#define HA_OPTION_CREATE_FROM_ENGINE    256
 
270
#define HA_OPTION_NULL_FIELDS           1024
 
271
#define HA_OPTION_PAGE_CHECKSUM         2048
249
272
#define HA_OPTION_TEMP_COMPRESS_RECORD  ((uint32_t) 16384)      /* set by isamchk */
250
273
#define HA_OPTION_READ_ONLY_DATA        ((uint32_t) 32768)      /* Set by isamchk */
251
274
 
302
325
/*
303
326
  Errorcodes given by handler functions
304
327
 
305
 
  optimizer::sum_query() assumes these codes are > 1
 
328
  opt_sum_query() assumes these codes are > 1
306
329
  Do not add error numbers before HA_ERR_FIRST.
307
330
  If necessary to add lower numbers, change HA_ERR_FIRST accordingly.
308
331
*/
387
410
 
388
411
        /* Other constants */
389
412
 
390
 
typedef unsigned long key_part_map;
 
413
#define HA_NAMELEN 64                   /* Max length of saved filename */
 
414
#define NO_SUCH_KEY (~(uint32_t)0)          /* used as a key no. */
 
415
 
 
416
typedef ulong key_part_map;
391
417
#define HA_WHOLE_KEY  (~(key_part_map)0)
392
418
 
393
419
        /* Intern constants in databases */
407
433
#define MBR_WITHIN      2048
408
434
#define MBR_DISJOINT    4096
409
435
#define MBR_EQUAL       8192
 
436
#define MBR_DATA        16384
410
437
#define SEARCH_NULL_ARE_EQUAL 32768     /* NULL in keys are equal */
411
438
#define SEARCH_NULL_ARE_NOT_EQUAL 65536 /* NULL in keys are not equal */
412
439
 
413
440
        /* bits in opt_flag */
 
441
#define QUICK_USED      1
414
442
#define READ_CACHE_USED 2
415
443
#define READ_CHECK_USED 4
416
444
#define KEY_READ_USED   8
424
452
#define HA_STATE_DELETED        8
425
453
#define HA_STATE_NEXT_FOUND     16      /* Next found record (record before) */
426
454
#define HA_STATE_PREV_FOUND     32      /* Prev found record (record after) */
 
455
#define HA_STATE_NO_KEY         64      /* Last read didn't find record */
427
456
#define HA_STATE_KEY_CHANGED    128
428
457
#define HA_STATE_WRITE_AT_END   256     /* set in _ps_find_writepos */
 
458
#define HA_STATE_BUFF_SAVED     512     /* If current keybuff is info->buff */
429
459
#define HA_STATE_ROW_CHANGED    1024    /* To invalide ROW cache */
430
460
#define HA_STATE_EXTEND_BLOCK   2048
431
461
#define HA_STATE_RNEXT_SAME     4096    /* rnext_same occupied lastkey2 */
475
505
*/
476
506
#define NULL_RANGE      64
477
507
 
478
 
class key_range
 
508
typedef struct st_key_range
479
509
{
480
 
public:
481
510
  const unsigned char *key;
482
511
  uint32_t length;
483
512
  enum ha_rkey_function flag;
484
513
  key_part_map keypart_map;
485
 
};
 
514
} key_range;
486
515
 
487
 
class KEY_MULTI_RANGE
 
516
typedef struct st_key_multi_range
488
517
{
489
 
public:
490
518
  key_range start_key;
491
519
  key_range end_key;
492
520
  char  *ptr;                 /* Free to use by caller (ptr to row etc) */
493
521
  uint32_t  range_flag;           /* key range flags see above */
494
 
};
 
522
} KEY_MULTI_RANGE;
495
523
 
496
524
 
497
525
/* For number of records */
498
526
typedef uint64_t        ha_rows;
499
 
inline static double rows2double(ha_rows rows)
500
 
{  
501
 
  return uint64_t2double(rows);
502
 
}
 
527
#define rows2double(A)  uint64_t2double(A)
503
528
 
504
 
#define HA_POS_ERROR    (~ (::drizzled::ha_rows) 0)
505
 
#define HA_OFFSET_ERROR (~ (::drizzled::internal::my_off_t) 0)
 
529
#define HA_POS_ERROR    (~ (ha_rows) 0)
 
530
#define HA_OFFSET_ERROR (~ (my_off_t) 0)
506
531
 
507
532
#if SIZEOF_OFF_T == 4
508
533
#define MAX_FILE_SIZE   INT32_MAX
510
535
#define MAX_FILE_SIZE   INT64_MAX
511
536
#endif
512
537
 
513
 
inline static uint32_t ha_varchar_packlength(uint32_t field_length)
514
 
{
515
 
  return (field_length < 256 ? 1 :2);
516
 
}
517
 
 
518
 
 
519
 
} /* namespace drizzled */
520
 
 
521
 
#endif /* DRIZZLED_BASE_H */
 
538
#define HA_VARCHAR_PACKLENGTH(field_length) ((field_length) < 256 ? 1 :2)
 
539
 
 
540
#endif /* DRIZZLE_SERVER_BASE_H */