home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 January / Chip_2001-01_cd1.bin / tema / mysql / mysql-3.23.28g-win-source.exe / include / merge.h < prev    next >
C/C++ Source or Header  |  2000-08-31  |  3KB  |  95 lines

  1. /* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
  2.    
  3.    This library is free software; you can redistribute it and/or
  4.    modify it under the terms of the GNU Library General Public
  5.    License as published by the Free Software Foundation; either
  6.    version 2 of the License, or (at your option) any later version.
  7.    
  8.    This library is distributed in the hope that it will be useful,
  9.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.    Library General Public License for more details.
  12.    
  13.    You should have received a copy of the GNU Library General Public
  14.    License along with this library; if not, write to the Free
  15.    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  16.    MA 02111-1307, USA */
  17.  
  18. /* This file should be included when using merge_isam_funktions */
  19. /* Author: Michael Widenius */
  20.  
  21. #ifndef _merge_h
  22. #define _merge_h
  23. #ifdef    __cplusplus
  24. extern "C" {
  25. #endif
  26.  
  27. #ifndef _my_base_h
  28. #include <my_base.h>
  29. #endif
  30. #ifndef _nisam_h
  31. #include <nisam.h>
  32. #endif
  33.  
  34. #define MRG_NAME_EXT    ".MRG"
  35.  
  36.     /* Param to/from mrg_info */
  37.  
  38. typedef struct st_mrg_info        /* Struct from h_info */
  39. {
  40.   ulonglong records;            /* Records in database */
  41.   ulonglong deleted;            /* Deleted records in database */
  42.   ulonglong recpos;            /* Pos for last used record */
  43.   ulonglong data_file_length;
  44.   uint    reclength;            /* Recordlength */
  45.   int    errkey;                /* With key was dupplicated on err */
  46.   uint    options;            /* HA_OPTIONS_... used */
  47. } MERGE_INFO;
  48.  
  49. typedef struct st_mrg_table_info
  50. {
  51.   N_INFO *table;
  52.   ulonglong file_offset;
  53. } MRG_TABLE;
  54.  
  55. typedef struct st_merge
  56. {
  57.   MRG_TABLE *open_tables,*current_table,*end_table,*last_used_table;
  58.   ulonglong records;            /* records in tables */
  59.   ulonglong del;            /* Removed records */
  60.   ulonglong data_file_length;
  61.   uint     tables,options,reclength;
  62.   my_bool cache_in_use;
  63.   LIST    open_list;
  64. } MRG_INFO;
  65.  
  66. typedef ulong mrg_off_t;
  67.  
  68.     /* Prototypes for merge-functions */
  69.  
  70. extern int mrg_close(MRG_INFO *file);
  71. extern int mrg_delete(MRG_INFO *file,const byte *buff);
  72. extern MRG_INFO *mrg_open(const char *name,int mode,int wait_if_locked);
  73. extern int mrg_panic(enum ha_panic_function function);
  74. extern int mrg_rfirst(MRG_INFO *file,byte *buf,int inx);
  75. extern int mrg_rkey(MRG_INFO *file,byte *buf,int inx,const byte *key,
  76.                uint key_len, enum ha_rkey_function search_flag);
  77. extern int mrg_rrnd(MRG_INFO *file,byte *buf, mrg_off_t pos);
  78. extern int mrg_rsame(MRG_INFO *file,byte *record,int inx);
  79. extern int mrg_update(MRG_INFO *file,const byte *old,const byte *new_rec);
  80. extern int mrg_info(MRG_INFO *file,MERGE_INFO *x,int flag);
  81. extern int mrg_lock_database(MRG_INFO *file,int lock_type);
  82. extern int mrg_create(const char *name,const char **table_names);
  83. extern int mrg_extra(MRG_INFO *file,enum ha_extra_function function);
  84. extern ha_rows mrg_records_in_range(MRG_INFO *info,int inx,
  85.                     const byte *start_key,uint start_key_len,
  86.                     enum ha_rkey_function start_search_flag,
  87.                     const byte *end_key,uint end_key_len,
  88.                     enum ha_rkey_function end_search_flag);
  89.  
  90. extern mrg_off_t mrg_position(MRG_INFO *info);
  91. #ifdef    __cplusplus
  92. }
  93. #endif
  94. #endif
  95.