~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/archive/ha_archive.cc

  • Committer: Stewart Smith
  • Date: 2009-01-12 05:08:05 UTC
  • mto: (779.1.22 devel) (784.1.3 for-brian)
  • mto: This revision was merged to the branch mainline in revision 785.
  • Revision ID: stewart@flamingspork.com-20090112050805-3sqh0e3yafqunz1j
fix ARCHIVE table creation and archive test

Show diffs side-by-side

added added

removed removed

Lines of Context:
506
506
  File frm_file;                   /* File handler for readers */
507
507
  struct stat file_stat;
508
508
  unsigned char *frm_ptr;
 
509
  int r;
509
510
 
510
511
  stats.auto_increment_value= create_info->auto_increment_value;
511
512
 
548
549
    There is a chance that the file was "discovered". In this case
549
550
    just use whatever file is there.
550
551
  */
551
 
  if (!stat(name_buff, &file_stat))
552
 
  {
553
 
    my_errno= 0;
554
 
    if (!(azopen(&create_stream, name_buff, O_CREAT|O_RDWR,
555
 
                 AZ_METHOD_BLOCK)))
556
 
    {
557
 
      error= errno;
558
 
      goto error2;
559
 
    }
560
 
 
561
 
    if (linkname[0])
562
 
      my_symlink(name_buff, linkname, MYF(0));
563
 
    fn_format(name_buff, name, "", ".frm",
564
 
              MY_REPLACE_EXT | MY_UNPACK_FILENAME);
565
 
 
566
 
    /*
567
 
      Here is where we open up the frm and pass it to archive to store
568
 
    */
569
 
    if ((frm_file= my_open(name_buff, O_RDONLY, MYF(0))) > 0)
570
 
    {
571
 
      if (fstat(frm_file, &file_stat))
 
552
  r= stat(name_buff, &file_stat);
 
553
  if (r == -1 && errno!=ENOENT)
 
554
  {
 
555
    return errno;
 
556
  }
 
557
  if (!r)
 
558
    return HA_ERR_TABLE_EXIST;
 
559
 
 
560
  my_errno= 0;
 
561
  if (!(azopen(&create_stream, name_buff, O_CREAT|O_RDWR,
 
562
               AZ_METHOD_BLOCK)))
 
563
  {
 
564
    error= errno;
 
565
    goto error2;
 
566
  }
 
567
 
 
568
  if (linkname[0])
 
569
    my_symlink(name_buff, linkname, MYF(0));
 
570
  fn_format(name_buff, name, "", ".frm",
 
571
            MY_REPLACE_EXT | MY_UNPACK_FILENAME);
 
572
 
 
573
  /*
 
574
    Here is where we open up the frm and pass it to archive to store
 
575
  */
 
576
  if ((frm_file= my_open(name_buff, O_RDONLY, MYF(0))) > 0)
 
577
  {
 
578
    if (fstat(frm_file, &file_stat))
 
579
    {
 
580
      frm_ptr= (unsigned char *)malloc(sizeof(unsigned char) *
 
581
                                       file_stat.st_size);
 
582
      if (frm_ptr)
572
583
      {
573
 
        frm_ptr= (unsigned char *)malloc(sizeof(unsigned char) *
574
 
                                         file_stat.st_size);
575
 
        if (frm_ptr)
576
 
        {
577
 
          my_read(frm_file, frm_ptr, file_stat.st_size, MYF(0));
578
 
          azwrite_frm(&create_stream, (char *)frm_ptr, file_stat.st_size);
579
 
          free((unsigned char*)frm_ptr);
580
 
        }
 
584
        my_read(frm_file, frm_ptr, file_stat.st_size, MYF(0));
 
585
        azwrite_frm(&create_stream, (char *)frm_ptr, file_stat.st_size);
 
586
        free((unsigned char*)frm_ptr);
581
587
      }
582
 
      my_close(frm_file, MYF(0));
583
 
    }
584
 
 
585
 
    if (create_info->comment.str)
586
 
      azwrite_comment(&create_stream, create_info->comment.str,
587
 
                      (unsigned int)create_info->comment.length);
588
 
 
589
 
    /*
590
 
      Yes you need to do this, because the starting value
591
 
      for the autoincrement may not be zero.
592
 
    */
593
 
    create_stream.auto_increment= stats.auto_increment_value ?
594
 
                                    stats.auto_increment_value - 1 : 0;
595
 
    if (azclose(&create_stream))
596
 
    {
597
 
      error= errno;
598
 
      goto error2;
599
 
    }
600
 
  }
601
 
  else
602
 
    my_errno= 0;
 
588
    }
 
589
    my_close(frm_file, MYF(0));
 
590
  }
 
591
 
 
592
  if (create_info->comment.str)
 
593
    azwrite_comment(&create_stream, create_info->comment.str,
 
594
                    (unsigned int)create_info->comment.length);
 
595
 
 
596
  /*
 
597
    Yes you need to do this, because the starting value
 
598
    for the autoincrement may not be zero.
 
599
  */
 
600
  create_stream.auto_increment= stats.auto_increment_value ?
 
601
    stats.auto_increment_value - 1 : 0;
 
602
  if (azclose(&create_stream))
 
603
  {
 
604
    error= errno;
 
605
    goto error2;
 
606
  }
603
607
 
604
608
  return(0);
605
609