~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/myisam/mi_rrnd.cc

  • Committer: Padraig O'Sullivan
  • Date: 2009-09-13 01:03:01 UTC
  • mto: (1126.9.2 captain-20090915-01)
  • mto: This revision was merged to the branch mainline in revision 1133.
  • Revision ID: osullivan.padraig@gmail.com-20090913010301-tcvvezipx1124acy
Added calls to the dtrace delete begin/end probes.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2000-2002, 2004 MySQL 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; version 2 of the License.
6
 
 
7
 
   This program is distributed in the hope that it will be useful,
8
 
   but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10
 
   GNU General Public License for more details.
11
 
 
12
 
   You should have received a copy of the GNU General Public License
13
 
   along with this program; if not, write to the Free Software
14
 
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
 
 
16
 
/* Read a record with random-access. The position to the record must
17
 
   get by MI_INFO. The next record can be read with pos= MI_POS_ERROR */
18
 
 
19
 
 
20
 
#include "myisam_priv.h"
21
 
 
22
 
using namespace drizzled;
23
 
 
24
 
/*
25
 
           Read a row based on position.
26
 
           If filepos= HA_OFFSET_ERROR then read next row
27
 
           Return values
28
 
           Returns one of following values:
29
 
           0 = Ok.
30
 
           HA_ERR_RECORD_DELETED = Record is deleted.
31
 
           HA_ERR_END_OF_FILE = EOF.
32
 
*/
33
 
 
34
 
int mi_rrnd(MI_INFO *info, unsigned char *buf, register internal::my_off_t filepos)
35
 
{
36
 
  bool skip_deleted_blocks;
37
 
 
38
 
  skip_deleted_blocks=0;
39
 
 
40
 
  if (filepos == HA_OFFSET_ERROR)
41
 
  {
42
 
    skip_deleted_blocks=1;
43
 
    if (info->lastpos == HA_OFFSET_ERROR)       /* First read ? */
44
 
      filepos= info->s->pack.header_length;     /* Read first record */
45
 
    else
46
 
      filepos= info->nextpos;
47
 
  }
48
 
 
49
 
  if (info->once_flags & RRND_PRESERVE_LASTINX)
50
 
    info->once_flags&= ~RRND_PRESERVE_LASTINX;
51
 
  else
52
 
    info->lastinx= -1;                          /* Can't forward or backward */
53
 
  /* Init all but update-flag */
54
 
  info->update&= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED);
55
 
 
56
 
  if (info->opt_flag & WRITE_CACHE_USED && flush_io_cache(&info->rec_cache))
57
 
    return(errno);
58
 
 
59
 
  return ((*info->s->read_rnd)(info,buf,filepos,skip_deleted_blocks));
60
 
}