~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/myisam/mi_rprev.c

  • Committer: Monty Taylor
  • Date: 2008-08-05 19:01:20 UTC
  • mto: (266.1.1 codestyle)
  • mto: This revision was merged to the branch mainline in revision 266.
  • Revision ID: monty@inaugust.com-20080805190120-tsuziqz2mfqcw7pe
Removed libmysyslt.la, made mysys a noinst_ and made everything use it. It's
not a standalone lib, there's no reason to pretend otherwise.

Show diffs side-by-side

added added

removed removed

Lines of Context:
13
13
   along with this program; if not, write to the Free Software
14
14
   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
15
15
 
16
 
#include "myisam_priv.h"
 
16
#include "myisamdef.h"
17
17
 
18
18
        /*
19
19
           Read previous row with the same key as previous read
22
22
           based on the position of the last used key!
23
23
        */
24
24
 
25
 
int mi_rprev(MI_INFO *info, unsigned char *buf, int inx)
 
25
int mi_rprev(MI_INFO *info, uchar *buf, int inx)
26
26
{
27
27
  int error,changed;
28
 
  register uint32_t flag;
 
28
  register uint flag;
29
29
  MYISAM_SHARE *share=info->s;
30
30
 
31
31
  if ((inx = _mi_check_index(info,inx)) < 0)
32
 
    return(errno);
 
32
    return(my_errno);
33
33
  flag=SEARCH_SMALLER;                          /* Read previous */
34
34
  if (info->lastpos == HA_OFFSET_ERROR && info->update & HA_STATE_NEXT_FOUND)
35
35
    flag=0;                                     /* Read last */
36
36
 
37
37
  if (fast_mi_readinfo(info))
38
 
    return(errno);
 
38
    return(my_errno);
39
39
  changed=_mi_test_if_changed(info);
 
40
  if (share->concurrent_insert)
 
41
    rw_rdlock(&share->key_root_lock[inx]);
40
42
  if (!flag)
41
43
    error=_mi_search_last(info, share->keyinfo+inx,
42
44
                          share->state.key_root[inx]);
62
64
          break;
63
65
      }
64
66
    }
 
67
    rw_unlock(&share->key_root_lock[inx]);
65
68
  }
66
69
  info->update&= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED);
67
70
  info->update|= HA_STATE_PREV_FOUND;
68
71
  if (error)
69
72
  {
70
 
    if (errno == HA_ERR_KEY_NOT_FOUND)
71
 
      errno=HA_ERR_END_OF_FILE;
 
73
    if (my_errno == HA_ERR_KEY_NOT_FOUND)
 
74
      my_errno=HA_ERR_END_OF_FILE;
72
75
  }
73
76
  else if (!buf)
74
77
  {
75
 
    return(info->lastpos==HA_OFFSET_ERROR ? errno : 0);
 
78
    return(info->lastpos==HA_OFFSET_ERROR ? my_errno : 0);
76
79
  }
77
80
  else if (!(*info->read_record)(info,info->lastpos,buf))
78
81
  {
79
82
    info->update|= HA_STATE_AKTIV;              /* Record is read */
80
83
    return(0);
81
84
  }
82
 
  return(errno);
 
85
  return(my_errno);
83
86
} /* mi_rprev */