~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/myisam/mi_cache.cc

  • Committer: Daniel Nichter
  • Date: 2011-10-23 16:01:37 UTC
  • mto: This revision was merged to the branch mainline in revision 2448.
  • Revision ID: daniel@percona.com-20111023160137-7ac3blgz8z4tf8za
Add Administration Getting Started and Logging.  Capitalize SQL clause keywords.

Show diffs side-by-side

added added

removed removed

Lines of Context:
11
11
 
12
12
   You should have received a copy of the GNU General Public License
13
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 */
 
14
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA */
15
15
 
16
16
/*
17
17
  Functions for read record cacheing with myisam
28
28
  Allows "partial read" errors in the record header (when READING_HEADER flag
29
29
  is set) - unread part is zero'ed
30
30
 
31
 
  Note: out-of-cache reads are enabled for shared IO_CACHE's too,
 
31
  Note: out-of-cache reads are enabled for shared io_cache_st's too,
32
32
  as these reads will be cached by OS cache (and my_pread is always atomic)
33
33
*/
34
34
 
35
35
 
36
 
#include "myisamdef.h"
37
 
 
38
 
int _mi_read_cache(IO_CACHE *info, unsigned char *buff, my_off_t pos, uint32_t length,
 
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_st *info, unsigned char *buff, internal::my_off_t pos, uint32_t length,
39
45
                   int flag)
40
46
{
41
47
  uint32_t read_length,in_buff_length;
42
 
  my_off_t offset;
 
48
  internal::my_off_t offset;
43
49
  unsigned char *in_buff_pos;
44
50
 
45
51
  if (pos < info->pos_in_file)
46
52
  {
47
53
    read_length=length;
48
 
    if ((my_off_t) read_length > (my_off_t) (info->pos_in_file-pos))
 
54
    if ((internal::my_off_t) read_length > (internal::my_off_t) (info->pos_in_file-pos))
49
55
      read_length=(uint) (info->pos_in_file-pos);
50
56
    info->seek_not_done=1;
51
57
    if (my_pread(info->file,buff,read_length,pos,MYF(MY_NABP)))
56
62
    buff+=read_length;
57
63
  }
58
64
  if (pos >= info->pos_in_file &&
59
 
      (offset= (my_off_t) (pos - info->pos_in_file)) <
60
 
      (my_off_t) (info->read_end - info->request_pos))
 
65
      (offset= (internal::my_off_t) (pos - info->pos_in_file)) <
 
66
      (internal::my_off_t) (info->read_end - info->request_pos))
61
67
  {
62
68
    in_buff_pos=info->request_pos+(uint) offset;
63
 
    in_buff_length= cmin(length, (size_t) (info->read_end-in_buff_pos));
 
69
    in_buff_length= min(length, (uint32_t) (info->read_end-in_buff_pos));
64
70
    memcpy(buff,info->request_pos+(uint) offset,(size_t) in_buff_length);
65
71
    if (!(length-=in_buff_length))
66
72
      return(0);
93
99
  if (!(flag & READING_HEADER) || (int) read_length == -1 ||
94
100
      read_length+in_buff_length < 3)
95
101
  {
96
 
    if (!my_errno || my_errno == -1)
97
 
      my_errno=HA_ERR_WRONG_IN_RECORD;
 
102
    if (!errno || errno == -1)
 
103
      errno=HA_ERR_WRONG_IN_RECORD;
98
104
    return(1);
99
105
  }
100
106
  memset(buff+read_length, 0,