info.c
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  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. #include "mrgdef.h"
  17. ulong mrg_position(MRG_INFO *info)
  18. {
  19.   MRG_TABLE *current_table;
  20.   if (!(current_table = info->current_table) &&
  21.       info->open_tables != info->end_table)
  22.     current_table = info->open_tables;
  23.   return  (current_table ?
  24.    (ulong) (current_table->table->lastpos +
  25.     current_table->file_offset) :
  26.    ~(ulong) 0);
  27. }
  28. /* If flag != 0 one only gets pos of last record */
  29. int mrg_info(MRG_INFO *info,register MERGE_INFO *x,int flag)
  30. {
  31.   MRG_TABLE *current_table;
  32.   DBUG_ENTER("mrg_info");
  33.   if (!(current_table = info->current_table) &&
  34.       info->open_tables != info->end_table)
  35.     current_table = info->open_tables;
  36.   x->recpos  = info->current_table ?
  37.     info->current_table->table->lastpos + info->current_table->file_offset :
  38.       (ulong) -1L;
  39.   if (flag != HA_STATUS_POS)
  40.   {
  41.     x->records  = info->records;
  42.     x->deleted  = info->del;
  43.     x->data_file_length = info->data_file_length;
  44.     x->reclength  = info->reclength;
  45.     if (current_table)
  46.       x->errkey  = current_table->table->errkey;
  47.     else
  48.     { /* No tables in MRG */
  49.       x->errkey=0;
  50.     }
  51.     x->options  = info->options;
  52.   }
  53.   DBUG_RETURN(0);
  54. }