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

  1. /* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
  2.    
  3.    This program is free software; you can redistribute it and/or modify
  4.    it under the terms of the GNU General Public License as published by
  5.    the Free Software Foundation; either version 2 of the License, or
  6.    (at your option) any later version.
  7.    
  8.    This program 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
  11.    GNU General Public License for more details.
  12.    
  13.    You should have received a copy of the GNU General Public License
  14.    along with this program; if not, write to the Free Software
  15.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  16.  
  17. #include "mrgdef.h"
  18.  
  19. ulong mrg_position(MRG_INFO *info)
  20. {
  21.   MRG_TABLE *current_table;
  22.  
  23.   if (!(current_table = info->current_table) &&
  24.       info->open_tables != info->end_table)
  25.     current_table = info->open_tables;
  26.   return  (current_table ?
  27.        (ulong) (current_table->table->lastpos +
  28.             current_table->file_offset) :
  29.        ~(ulong) 0);
  30. }
  31.  
  32.     /* If flag != 0 one only gets pos of last record */
  33.  
  34. int mrg_info(MRG_INFO *info,register MERGE_INFO *x,int flag)
  35. {
  36.   MRG_TABLE *current_table;
  37.   DBUG_ENTER("mrg_info");
  38.  
  39.   if (!(current_table = info->current_table) &&
  40.       info->open_tables != info->end_table)
  41.     current_table = info->open_tables;
  42.   x->recpos  = info->current_table ?
  43.     info->current_table->table->lastpos + info->current_table->file_offset :
  44.       (ulong) -1L;
  45.   if (flag != HA_STATUS_POS)
  46.   {
  47.     x->records     = info->records;
  48.     x->deleted     = info->del;
  49.     x->data_file_length = info->data_file_length;
  50.     x->reclength  = info->reclength;
  51.     if (current_table)
  52.       x->errkey  = current_table->table->errkey;
  53.     else
  54.     {                        /* No tables in MRG */
  55.       x->errkey=0;
  56.     }
  57.     x->options     = info->options;
  58.   }
  59.   DBUG_RETURN(0);
  60. }
  61.