~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/myisam/mi_create.c

Merged build changes from Antony.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
/* Create a MyISAM table */
17
17
 
18
18
#include "myisamdef.h"
19
 
#include <m_ctype.h>
20
 
#include <my_tree.h>
21
 
#include <queues.h>
22
 
#include <mysql/plugin.h>
23
 
#include <my_bit.h>
 
19
#include <mysys/my_tree.h>
 
20
#include <mysys/queues.h>
 
21
#include <mysys/my_bit.h>
24
22
 
25
 
#include <m_ctype.h>
26
23
 
27
24
/*
28
25
  Old options is used when recreating database, from myisamchk
34
31
              MI_CREATE_INFO *ci,uint flags)
35
32
{
36
33
  register uint i, j;
37
 
  File dfile= 0, file;
 
34
  File dfile= 0, file= 0;
38
35
  int errpos,save_errno, create_mode= O_RDWR | O_TRUNC;
39
36
  myf create_flag;
40
37
  uint fields,length,max_key_length,packed,pointer,real_length_diff,
58
55
 
59
56
  if (!ci)
60
57
  {
61
 
    bzero((char*) &tmp_create_info,sizeof(tmp_create_info));
 
58
    memset((char*) &tmp_create_info, 0, sizeof(tmp_create_info));
62
59
    ci=&tmp_create_info;
63
60
  }
64
61
 
68
65
  }
69
66
  errpos= 0;
70
67
  options= 0;
71
 
  bzero((uchar*) &share,sizeof(share));
 
68
  memset((uchar*) &share, 0, sizeof(share));
72
69
 
73
70
  if (flags & HA_DONT_TOUCH_DATA)
74
71
  {
360
357
    block_length= max(block_length, MI_MIN_KEY_BLOCK_LENGTH);
361
358
    block_length= min(block_length, MI_MAX_KEY_BLOCK_LENGTH);
362
359
 
363
 
    keydef->block_length= (uint16) MI_BLOCK_SIZE(length-real_length_diff,
 
360
    keydef->block_length= (uint16_t) MI_BLOCK_SIZE(length-real_length_diff,
364
361
                                                 pointer,MI_MAX_KEYPTR_SIZE,
365
362
                                                 block_length);
366
363
    if (keydef->block_length > MI_MAX_KEY_BLOCK_LENGTH ||
370
367
      goto err;
371
368
    }
372
369
    set_if_bigger(max_key_block_length,keydef->block_length);
373
 
    keydef->keylength= (uint16) key_length;
374
 
    keydef->minlength= (uint16) (length-min_key_length_skip);
375
 
    keydef->maxlength= (uint16) length;
 
370
    keydef->keylength= (uint16_t) key_length;
 
371
    keydef->minlength= (uint16_t) (length-min_key_length_skip);
 
372
    keydef->maxlength= (uint16_t) length;
376
373
 
377
374
    if (length > max_key_length)
378
375
      max_key_length= length;
416
413
    goto err;
417
414
  }
418
415
 
419
 
  bmove(share.state.header.file_version,(uchar*) myisam_file_magic,4);
 
416
  memcpy(share.state.header.file_version,(uchar*) myisam_file_magic,4);
420
417
  ci->old_options=options| (ci->old_options & HA_OPTION_TEMP_COMPRESS_RECORD ?
421
418
                        HA_OPTION_COMPRESS_RECORD |
422
419
                        HA_OPTION_TEMP_COMPRESS_RECORD: 0);
616
613
  }
617
614
  /* Create extra keys for unique definitions */
618
615
  offset=reclength-uniques*MI_UNIQUE_HASH_LENGTH;
619
 
  bzero((char*) &tmp_keydef,sizeof(tmp_keydef));
620
 
  bzero((char*) &tmp_keyseg,sizeof(tmp_keyseg));
 
616
  memset((char*) &tmp_keydef, 0, sizeof(tmp_keydef));
 
617
  memset((char*) &tmp_keyseg, 0, sizeof(tmp_keyseg));
621
618
  for (i=0; i < uniques ; i++)
622
619
  {
623
620
    tmp_keydef.keysegs=1;
624
621
    tmp_keydef.flag=            HA_UNIQUE_CHECK;
625
 
    tmp_keydef.block_length=    (uint16)myisam_block_size;
 
622
    tmp_keydef.block_length=    (uint16_t)myisam_block_size;
626
623
    tmp_keydef.keylength=       MI_UNIQUE_HASH_LENGTH + pointer;
627
624
    tmp_keydef.minlength=tmp_keydef.maxlength=tmp_keydef.keylength;
628
625
    tmp_keyseg.type=            MI_UNIQUE_HASH_TYPE;