~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysys/hash.c

  • Committer: Brian Aker
  • Date: 2008-10-06 06:47:29 UTC
  • Revision ID: brian@tangent.org-20081006064729-2i9mhjkzyvow9xsm
RemoveĀ uint.

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
#define HIGHUSED 8
30
30
 
31
31
typedef struct st_hash_info {
32
 
  uint next;                                    /* index to next key */
 
32
  uint32_t next;                                        /* index to next key */
33
33
  unsigned char *data;                                  /* data for current entry */
34
34
} HASH_LINK;
35
35
 
36
 
static uint hash_mask(uint hashnr,uint buffmax,uint maxlength);
37
 
static void movelink(HASH_LINK *array,uint pos,uint next_link,uint newlink);
 
36
static uint32_t hash_mask(uint32_t hashnr,uint32_t buffmax,uint32_t maxlength);
 
37
static void movelink(HASH_LINK *array,uint32_t pos,uint32_t next_link,uint32_t newlink);
38
38
static int hashcmp(const HASH *hash, HASH_LINK *pos, const unsigned char *key,
39
39
                   size_t length);
40
40
 
41
 
static uint calc_hash(const HASH *hash, const unsigned char *key, size_t length)
 
41
static uint32_t calc_hash(const HASH *hash, const unsigned char *key, size_t length)
42
42
{
43
43
  uint32_t nr1=1, nr2=4;
44
44
  hash->charset->coll->hash_sort(hash->charset,(const unsigned char*) key,length,&nr1,&nr2);
46
46
}
47
47
 
48
48
bool
49
 
_hash_init(HASH *hash,uint growth_size, const CHARSET_INFO * const charset,
 
49
_hash_init(HASH *hash,uint32_t growth_size, const CHARSET_INFO * const charset,
50
50
           uint32_t size, size_t key_offset, size_t key_length,
51
51
           hash_get_key get_key,
52
 
           void (*free_element)(void*),uint flags CALLER_INFO_PROTO)
 
52
           void (*free_element)(void*),uint32_t flags CALLER_INFO_PROTO)
53
53
{
54
54
  hash->records=0;
55
55
  if (my_init_dynamic_array_ci(&hash->array, sizeof(HASH_LINK), size,
148
148
 
149
149
        /* Calculate pos according to keys */
150
150
 
151
 
static uint hash_mask(uint hashnr,uint buffmax,uint maxlength)
 
151
static uint32_t hash_mask(uint32_t hashnr,uint32_t buffmax,uint32_t maxlength)
152
152
{
153
153
  if ((hashnr & (buffmax-1)) < maxlength) return (hashnr & (buffmax-1));
154
154
  return (hashnr & ((buffmax >> 1) -1));
155
155
}
156
156
 
157
 
static uint hash_rec_mask(const HASH *hash, HASH_LINK *pos,
158
 
                          uint buffmax, uint maxlength)
 
157
static uint32_t hash_rec_mask(const HASH *hash, HASH_LINK *pos,
 
158
                          uint32_t buffmax, uint32_t maxlength)
159
159
{
160
160
  size_t length;
161
161
  unsigned char *key= (unsigned char*) hash_key(hash,pos->data,&length,0);
194
194
                HASH_SEARCH_STATE *current_record)
195
195
{
196
196
  HASH_LINK *pos;
197
 
  uint flag,idx;
 
197
  uint32_t flag,idx;
198
198
 
199
199
  flag=1;
200
200
  if (hash->records)
229
229
               HASH_SEARCH_STATE *current_record)
230
230
{
231
231
  HASH_LINK *pos;
232
 
  uint idx;
 
232
  uint32_t idx;
233
233
 
234
234
  if (*current_record != NO_RECORD)
235
235
  {
251
251
 
252
252
        /* Change link from pos to new_link */
253
253
 
254
 
static void movelink(HASH_LINK *array,uint find,uint next_link,uint newlink)
 
254
static void movelink(HASH_LINK *array,uint32_t find,uint32_t next_link,uint32_t newlink)
255
255
{
256
256
  HASH_LINK *old_link;
257
257
  do
299
299
{
300
300
  int flag;
301
301
  size_t idx;
302
 
  uint halfbuff,hash_nr,first_index;
 
302
  uint32_t halfbuff,hash_nr,first_index;
303
303
  unsigned char *ptr_to_rec=NULL,*ptr_to_rec2=NULL;
304
304
  HASH_LINK *data,*empty,*gpos=NULL,*gpos2=NULL,*pos;
305
305
 
435
435
 
436
436
bool hash_delete(HASH *hash,unsigned char *record)
437
437
{
438
 
  uint blength,pos2,pos_hashnr,lastpos_hashnr,idx,empty_index;
 
438
  uint32_t blength,pos2,pos_hashnr,lastpos_hashnr,idx,empty_index;
439
439
  HASH_LINK *data,*lastpos,*gpos,*pos,*pos3,*empty;
440
440
  if (!hash->records)
441
441
    return(1);
522
522
bool hash_update(HASH *hash, unsigned char *record, unsigned char *old_key,
523
523
                    size_t old_key_length)
524
524
{
525
 
  uint new_index,new_pos_index,blength,records,empty;
 
525
  uint32_t new_index,new_pos_index,blength,records,empty;
526
526
  size_t idx;
527
527
  HASH_LINK org_link,*data,*previous,*pos;
528
528