~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to storage/myisam/mi_cache.c

  • Committer: Brian Aker
  • Date: 2009-01-21 23:38:47 UTC
  • mto: This revision was merged to the branch mainline in revision 801.
  • Revision ID: brian@tangent.org-20090121233847-jzjpp910j73ch3tw
Factor test-run for binlog removal

Show diffs side-by-side

added added

removed removed

Lines of Context:
33
33
*/
34
34
 
35
35
 
36
 
#include "myisam_priv.h"
37
 
 
38
 
#include <algorithm>
39
 
 
40
 
using namespace std;
41
 
using namespace drizzled;
42
 
 
43
 
 
44
 
int _mi_read_cache(internal::IO_CACHE *info, unsigned char *buff, internal::my_off_t pos, uint32_t length,
 
36
#include "myisamdef.h"
 
37
 
 
38
int _mi_read_cache(IO_CACHE *info, unsigned char *buff, my_off_t pos, uint32_t length,
45
39
                   int flag)
46
40
{
47
41
  uint32_t read_length,in_buff_length;
48
 
  internal::my_off_t offset;
 
42
  my_off_t offset;
49
43
  unsigned char *in_buff_pos;
50
44
 
51
45
  if (pos < info->pos_in_file)
52
46
  {
53
47
    read_length=length;
54
 
    if ((internal::my_off_t) read_length > (internal::my_off_t) (info->pos_in_file-pos))
 
48
    if ((my_off_t) read_length > (my_off_t) (info->pos_in_file-pos))
55
49
      read_length=(uint) (info->pos_in_file-pos);
56
50
    info->seek_not_done=1;
57
51
    if (my_pread(info->file,buff,read_length,pos,MYF(MY_NABP)))
62
56
    buff+=read_length;
63
57
  }
64
58
  if (pos >= info->pos_in_file &&
65
 
      (offset= (internal::my_off_t) (pos - info->pos_in_file)) <
66
 
      (internal::my_off_t) (info->read_end - info->request_pos))
 
59
      (offset= (my_off_t) (pos - info->pos_in_file)) <
 
60
      (my_off_t) (info->read_end - info->request_pos))
67
61
  {
68
62
    in_buff_pos=info->request_pos+(uint) offset;
69
 
    in_buff_length= min(length, (uint32_t) (info->read_end-in_buff_pos));
 
63
    in_buff_length= cmin(length, (size_t) (info->read_end-in_buff_pos));
70
64
    memcpy(buff,info->request_pos+(uint) offset,(size_t) in_buff_length);
71
65
    if (!(length-=in_buff_length))
72
66
      return(0);
99
93
  if (!(flag & READING_HEADER) || (int) read_length == -1 ||
100
94
      read_length+in_buff_length < 3)
101
95
  {
102
 
    if (!errno || errno == -1)
103
 
      errno=HA_ERR_WRONG_IN_RECORD;
 
96
    if (!my_errno || my_errno == -1)
 
97
      my_errno=HA_ERR_WRONG_IN_RECORD;
104
98
    return(1);
105
99
  }
106
100
  memset(buff+read_length, 0,