~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/myisam/myisam_priv.h

Merge Monty - Updates to pandora-build to support features of gcc 4.5.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 
16
16
/* This file is included by all internal myisam files */
17
17
 
18
 
#pragma once
19
 
 
20
 
#include <config.h>
21
 
 
 
18
#ifndef PLUGIN_MYISAM_MYISAM_PRIV_H
 
19
#define PLUGIN_MYISAM_MYISAM_PRIV_H
 
20
 
 
21
#include "config.h"
22
22
#include "myisam.h"                     /* Structs & some defines */
23
23
#include "myisampack.h"                 /* packing of keys */
24
 
#include <drizzled/tree.h>
25
 
#include <drizzled/internal/my_pthread.h>
 
24
#include "drizzled/tree.h"
 
25
#include "drizzled/internal/my_pthread.h"
26
26
#include <drizzled/thr_lock.h>
27
27
#include <drizzled/common.h>
28
 
#include <drizzled/enum.h>
29
 
#include <drizzled/dynamic_array.h>
30
 
#include <drizzled/error_t.h>
31
28
 
32
29
#include <assert.h>
33
30
#include <fcntl.h>
54
51
  drizzled::internal::my_off_t key_empty;                       /* lost space in indexfile */
55
52
  drizzled::internal::my_off_t key_file_length;
56
53
  drizzled::internal::my_off_t data_file_length;
57
 
  ha_checksum checksum;
 
54
  drizzled::internal::ha_checksum checksum;
58
55
} MI_STATUS_INFO;
59
56
 
60
57
typedef struct st_mi_state_info
92
89
  ulong sec_index_changed;              /* Updated when new sec_index */
93
90
  ulong sec_index_used;                 /* which extra index are in use */
94
91
  uint64_t key_map;                     /* Which keys are in use */
95
 
  ha_checksum checksum;                 /* Table checksum */
 
92
  drizzled::internal::ha_checksum checksum;                 /* Table checksum */
96
93
  ulong version;                        /* timestamp of create */
97
94
  time_t create_time;                   /* Time when created database */
98
95
  time_t recover_time;                  /* Time for last recover */
171
168
 
172
169
#define MAX_NONMAPPED_INSERTS 1000
173
170
 
 
171
namespace drizzled { class Session; }
 
172
 
174
173
typedef struct st_mi_isam_share {       /* Shared between opens */
175
174
  MI_STATE_INFO state;
176
175
  MI_BASE_INFO base;
186
185
  char  *data_file_name,                /* Resolved path names from symlinks */
187
186
        *index_file_name;
188
187
  unsigned char *file_map;                      /* mem-map of file if possible */
 
188
private:
 
189
  drizzled::KEY_CACHE key_cache;                        /* ref to the current key cache */
 
190
public:
 
191
  drizzled::KEY_CACHE *getKeyCache()
 
192
  {
 
193
    return &key_cache;
 
194
  }
 
195
 
 
196
  void setKeyCache();
 
197
 
189
198
  MI_DECODE_TREE *decode_trees;
190
199
  uint16_t *decode_tables;
191
200
  int (*read_record)(struct st_myisam_info*, drizzled::internal::my_off_t, unsigned char*);
195
204
  int (*read_rnd)(struct st_myisam_info*, unsigned char*, drizzled::internal::my_off_t, bool);
196
205
  int (*compare_record)(struct st_myisam_info*, const unsigned char *);
197
206
  /* Function to use for a row checksum. */
198
 
  ha_checksum (*calc_checksum)(struct st_myisam_info*, const unsigned char *);
 
207
  drizzled::internal::ha_checksum (*calc_checksum)(struct st_myisam_info*, const unsigned char *);
199
208
  int (*compare_unique)(struct st_myisam_info*, MI_UNIQUEDEF *,
200
209
                        const unsigned char *record, drizzled::internal::my_off_t pos);
201
210
  size_t (*file_read)(MI_INFO *, unsigned char *, size_t, drizzled::internal::my_off_t, drizzled::myf);
272
281
  drizzled::internal::my_off_t last_keypage;            /* Last key page read */
273
282
  drizzled::internal::my_off_t last_search_keypage;             /* Last keypage when searching */
274
283
  drizzled::internal::my_off_t dupp_key_pos;
275
 
  ha_checksum checksum;                 /* Temp storage for row checksum */
 
284
  drizzled::internal::ha_checksum checksum;                 /* Temp storage for row checksum */
276
285
  /* QQ: the folloing two xxx_length fields should be removed,
277
286
     as they are not compatible with parallel repair */
278
287
  ulong packed_length,blob_length;      /* Length of found, packed record */
292
301
  uint  data_changed;                   /* Somebody has changed data */
293
302
  uint  save_update;                    /* When using KEY_READ */
294
303
  int   save_lastinx;
295
 
  drizzled::internal::io_cache_st rec_cache;                    /* When cacheing records */
 
304
  drizzled::internal::IO_CACHE rec_cache;                       /* When cacheing records */
296
305
  uint32_t  preload_buff_size;              /* When preloading indexes */
297
306
  drizzled::myf lock_wait;                      /* is 0 or MY_DONT_WAIT */
298
307
  bool was_locked;                      /* Was locked in panic */
320
329
typedef struct st_mi_sort_param
321
330
{
322
331
  pthread_t  thr;
323
 
  drizzled::internal::io_cache_st read_cache, tempfile, tempfile_for_exceptions;
 
332
  drizzled::internal::IO_CACHE read_cache, tempfile, tempfile_for_exceptions;
324
333
  drizzled::DYNAMIC_ARRAY buffpek;
325
334
  MI_BIT_BUFF   bit_buff;               /* For parallel repair of packrec. */
326
335
 
349
358
  int (*key_write)(struct st_mi_sort_param *, const void *);
350
359
  void (*lock_in_memory)(MI_CHECK *);
351
360
  int (*write_keys)(struct st_mi_sort_param *, register unsigned char **,
352
 
                     uint32_t , struct st_buffpek *, drizzled::internal::io_cache_st *);
353
 
  unsigned int (*read_to_buffer)(drizzled::internal::io_cache_st *,struct st_buffpek *, uint);
354
 
  int (*write_key)(struct st_mi_sort_param *, drizzled::internal::io_cache_st *,unsigned char *,
 
361
                     uint32_t , struct st_buffpek *, drizzled::internal::IO_CACHE *);
 
362
  unsigned int (*read_to_buffer)(drizzled::internal::IO_CACHE *,struct st_buffpek *, uint);
 
363
  int (*write_key)(struct st_mi_sort_param *, drizzled::internal::IO_CACHE *,unsigned char *,
355
364
                       uint, uint);
356
365
} MI_SORT_PARAM;
357
366
 
598
607
                         unsigned char *old, drizzled::key_part_map keypart_map,
599
608
                         HA_KEYSEG **last_used_keyseg);
600
609
extern int _mi_read_key_record(MI_INFO *info,drizzled::internal::my_off_t filepos,unsigned char *buf);
601
 
extern int _mi_read_cache(drizzled::internal::io_cache_st *info,unsigned char *buff,drizzled::internal::my_off_t pos,
 
610
extern int _mi_read_cache(drizzled::internal::IO_CACHE *info,unsigned char *buff,drizzled::internal::my_off_t pos,
602
611
                          uint32_t length,int re_read_if_possibly);
603
612
extern uint64_t retrieve_auto_increment(MI_INFO *info,const unsigned char *record);
604
613
 
677
686
                                    int file, drizzled::internal::my_off_t filepos);
678
687
extern void _my_store_blob_length(unsigned char *pos,uint32_t pack_length,uint32_t length);
679
688
extern void mi_report_error(int errcode, const char *file_name);
680
 
extern void mi_report_error(drizzled::error_t errcode, const char *file_name);
681
689
extern size_t mi_mmap_pread(MI_INFO *info, unsigned char *Buffer,
682
690
                            size_t Count, drizzled::internal::my_off_t offset, drizzled::myf MyFlags);
683
691
extern size_t mi_mmap_pwrite(MI_INFO *info, const unsigned char *Buffer,
698
706
extern int mi_enable_indexes(MI_INFO *info);
699
707
extern int mi_indexes_are_disabled(MI_INFO *info);
700
708
ulong _my_calc_total_blob_length(MI_INFO *info, const unsigned char *record);
701
 
ha_checksum mi_checksum(MI_INFO *info, const unsigned char *buf);
702
 
ha_checksum mi_static_checksum(MI_INFO *info, const unsigned char *buf);
 
709
drizzled::internal::ha_checksum mi_checksum(MI_INFO *info, const unsigned char *buf);
 
710
drizzled::internal::ha_checksum mi_static_checksum(MI_INFO *info, const unsigned char *buf);
703
711
bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, unsigned char *record,
704
 
                     ha_checksum unique_hash, drizzled::internal::my_off_t pos);
705
 
ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const unsigned char *buf);
 
712
                     drizzled::internal::ha_checksum unique_hash, drizzled::internal::my_off_t pos);
 
713
drizzled::internal::ha_checksum mi_unique_hash(MI_UNIQUEDEF *def, const unsigned char *buf);
706
714
int _mi_cmp_static_unique(MI_INFO *info, MI_UNIQUEDEF *def,
707
715
                           const unsigned char *record, drizzled::internal::my_off_t pos);
708
716
int _mi_cmp_dynamic_unique(MI_INFO *info, MI_UNIQUEDEF *def,
727
735
void mi_check_print_info(MI_CHECK *param, const char *fmt,...);
728
736
int flush_pending_blocks(MI_SORT_PARAM *param);
729
737
int thr_write_keys(MI_SORT_PARAM *sort_param);
 
738
int flush_blocks(MI_CHECK *param, drizzled::KEY_CACHE *key_cache, int file);
730
739
 
731
740
int sort_write_record(MI_SORT_PARAM *sort_param);
732
741
int _create_index_by_sort(MI_SORT_PARAM *info,bool no_messages, size_t);
744
753
void _mi_report_crashed(MI_INFO *file, const char *message, const char *sfile,
745
754
                        uint32_t sline);
746
755
 
747
 
 
748
 
#define DFLT_INIT_HITS  3
 
756
#endif /* PLUGIN_MYISAM_MYISAM_PRIV_H */