~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/base.h

  • Committer: Stewart Smith
  • Date: 2010-02-15 03:55:09 UTC
  • mto: (1273.13.96 build)
  • mto: This revision was merged to the branch mainline in revision 1308.
  • Revision ID: stewart@flamingspork.com-20100215035509-y6sry4q4yymph2by
move SUBSTR, SUBSTRING and SUBSTR_INDEX to plugins. add parser hooks for substr being a plugin now.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
 * @TODO Convert HA_XXX defines into enums and/or bitmaps
26
26
 */
27
27
 
28
 
#include "definitions.h"
29
 
 
30
28
#ifndef DRIZZLED_BASE_H
31
29
#define DRIZZLED_BASE_H
32
30
 
194
192
  HA_KEYTYPE_ULONG_INT=9,
195
193
  HA_KEYTYPE_LONGLONG=10,
196
194
  HA_KEYTYPE_ULONGLONG=11,
 
195
  HA_KEYTYPE_UINT24=13,
197
196
  /* Varchar (0-255 bytes) with length packed with 1 byte */
198
197
  HA_KEYTYPE_VARTEXT1=15,               /* Key is sorted as letters */
199
198
  HA_KEYTYPE_VARBINARY1=16,             /* Key is sorted as unsigned chars */
202
201
  HA_KEYTYPE_VARBINARY2=18              /* Key is sorted as unsigned chars */
203
202
};
204
203
 
 
204
#define HA_MAX_KEYTYPE  31              /* Must be log2-1 */
 
205
 
205
206
        /* These flags kan be OR:ed to key-flag */
206
207
 
207
208
#define HA_NOSAME                1      /* Set if not dupplicated records */
212
213
#define HA_NULL_ARE_EQUAL       2048    /* NULL in key are cmp as equal */
213
214
#define HA_GENERATED_KEY        8192    /* Automaticly generated key */
214
215
 
 
216
        /* The combination of the above can be used for key type comparison. */
 
217
#define HA_KEYFLAG_MASK (HA_NOSAME | HA_PACK_KEY | HA_AUTO_KEY | \
 
218
                         HA_BINARY_PACK_KEY | HA_UNIQUE_CHECK | \
 
219
                         HA_NULL_ARE_EQUAL | HA_GENERATED_KEY)
 
220
 
215
221
#define HA_KEY_HAS_PART_KEY_SEG 65536   /* Key contains partial segments */
216
222
 
217
223
        /* Automatic bits in key-flag */
407
413
#define MBR_WITHIN      2048
408
414
#define MBR_DISJOINT    4096
409
415
#define MBR_EQUAL       8192
 
416
#define MBR_DATA        16384
410
417
#define SEARCH_NULL_ARE_EQUAL 32768     /* NULL in keys are equal */
411
418
#define SEARCH_NULL_ARE_NOT_EQUAL 65536 /* NULL in keys are not equal */
412
419
 
413
420
        /* bits in opt_flag */
 
421
#define QUICK_USED      1
414
422
#define READ_CACHE_USED 2
415
423
#define READ_CHECK_USED 4
416
424
#define KEY_READ_USED   8
424
432
#define HA_STATE_DELETED        8
425
433
#define HA_STATE_NEXT_FOUND     16      /* Next found record (record before) */
426
434
#define HA_STATE_PREV_FOUND     32      /* Prev found record (record after) */
 
435
#define HA_STATE_NO_KEY         64      /* Last read didn't find record */
427
436
#define HA_STATE_KEY_CHANGED    128
428
437
#define HA_STATE_WRITE_AT_END   256     /* set in _ps_find_writepos */
 
438
#define HA_STATE_BUFF_SAVED     512     /* If current keybuff is info->buff */
429
439
#define HA_STATE_ROW_CHANGED    1024    /* To invalide ROW cache */
430
440
#define HA_STATE_EXTEND_BLOCK   2048
431
441
#define HA_STATE_RNEXT_SAME     4096    /* rnext_same occupied lastkey2 */
475
485
*/
476
486
#define NULL_RANGE      64
477
487
 
478
 
class key_range
 
488
typedef struct st_key_range
479
489
{
480
 
public:
481
490
  const unsigned char *key;
482
491
  uint32_t length;
483
492
  enum ha_rkey_function flag;
484
493
  key_part_map keypart_map;
485
 
};
 
494
} key_range;
486
495
 
487
 
class KEY_MULTI_RANGE
 
496
typedef struct st_key_multi_range
488
497
{
489
 
public:
490
498
  key_range start_key;
491
499
  key_range end_key;
492
500
  char  *ptr;                 /* Free to use by caller (ptr to row etc) */
493
501
  uint32_t  range_flag;           /* key range flags see above */
494
 
};
 
502
} KEY_MULTI_RANGE;
495
503
 
496
504
 
497
505
/* For number of records */
498
506
typedef uint64_t        ha_rows;
499
 
inline static double rows2double(ha_rows rows)
500
 
{  
501
 
  return uint64_t2double(rows);
502
 
}
 
507
#define rows2double(A)  uint64_t2double(A)
503
508
 
504
509
#define HA_POS_ERROR    (~ (::drizzled::ha_rows) 0)
505
510
#define HA_OFFSET_ERROR (~ (::drizzled::internal::my_off_t) 0)
510
515
#define MAX_FILE_SIZE   INT64_MAX
511
516
#endif
512
517
 
513
 
inline static uint32_t ha_varchar_packlength(uint32_t field_length)
514
 
{
515
 
  return (field_length < 256 ? 1 :2);
516
 
}
517
 
 
 
518
#define HA_VARCHAR_PACKLENGTH(field_length) ((field_length) < 256 ? 1 :2)
518
519
 
519
520
} /* namespace drizzled */
520
521