~mordred/drizzle/fix-bell-bugs

« back to all changes in this revision

Viewing changes to plugin/myisam/mi_write.cc

Merge Monty

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
 
18
18
#include "myisam_priv.h"
19
19
 
20
 
#include <mystrings/m_string.h>
 
20
#include "drizzled/internal/m_string.h"
21
21
#include <drizzled/util/test.h>
22
22
 
23
23
 
54
54
 
55
55
  if (share->options & HA_OPTION_READ_ONLY_DATA)
56
56
  {
57
 
    return(my_errno=EACCES);
 
57
    return(errno=EACCES);
58
58
  }
59
59
  if (_mi_readinfo(info,F_WRLCK,1))
60
 
    return(my_errno);
 
60
    return(errno);
61
61
  filepos= ((share->state.dellink != HA_OFFSET_ERROR &&
62
62
             !info->append_insert_at_end) ?
63
63
            share->state.dellink :
67
67
      share->base.records == (ha_rows) 1 &&
68
68
      info->state->records == (ha_rows) 1)
69
69
  {                                             /* System file */
70
 
    my_errno=HA_ERR_RECORD_FILE_FULL;
 
70
    errno=HA_ERR_RECORD_FILE_FULL;
71
71
    goto err2;
72
72
  }
73
73
  if (info->state->key_file_length >= share->base.margin_key_file_length)
74
74
  {
75
 
    my_errno=HA_ERR_INDEX_FILE_FULL;
 
75
    errno=HA_ERR_INDEX_FILE_FULL;
76
76
    goto err2;
77
77
  }
78
78
  if (_mi_mark_file_changed(info))
150
150
  return(0);
151
151
 
152
152
err:
153
 
  save_errno=my_errno;
154
 
  if (my_errno == HA_ERR_FOUND_DUPP_KEY || my_errno == HA_ERR_RECORD_FILE_FULL ||
155
 
      my_errno == HA_ERR_NULL_IN_SPATIAL || my_errno == HA_ERR_OUT_OF_MEM)
 
153
  save_errno=errno;
 
154
  if (errno == HA_ERR_FOUND_DUPP_KEY || errno == HA_ERR_RECORD_FILE_FULL ||
 
155
      errno == HA_ERR_NULL_IN_SPATIAL || errno == HA_ERR_OUT_OF_MEM)
156
156
  {
157
157
    if (info->bulk_insert)
158
158
    {
190
190
    mi_mark_crashed(info);
191
191
  }
192
192
  info->update= (HA_STATE_CHANGED | HA_STATE_WRITTEN | HA_STATE_ROW_CHANGED);
193
 
  my_errno=save_errno;
 
193
  errno=save_errno;
194
194
err2:
195
 
  save_errno=my_errno;
 
195
  save_errno=errno;
196
196
  _mi_writeinfo(info,WRITEINFO_UPDATE_KEYFILE);
197
 
  return(my_errno=save_errno);
 
197
  return(errno=save_errno);
198
198
} /* mi_write */
199
199
 
200
200
 
320
320
    {
321
321
      info->dupp_key_pos= dupp_key_pos;
322
322
      free(temp_buff);
323
 
      my_errno=HA_ERR_FOUND_DUPP_KEY;
 
323
      errno=HA_ERR_FOUND_DUPP_KEY;
324
324
      return(-1);
325
325
    }
326
326
  }
395
395
    if (t_length >= keyinfo->maxlength*2+MAX_POINTER_LENGTH)
396
396
    {
397
397
      mi_print_error(info->s, HA_ERR_CRASHED);
398
 
      my_errno=HA_ERR_CRASHED;
 
398
      errno=HA_ERR_CRASHED;
399
399
      return(-1);
400
400
    }
401
401
    bmove_upp((unsigned char*) endpos+t_length,(unsigned char*) endpos,(uint) (endpos-key_pos));
405
405
    if (-t_length >= keyinfo->maxlength*2+MAX_POINTER_LENGTH)
406
406
    {
407
407
      mi_print_error(info->s, HA_ERR_CRASHED);
408
 
      my_errno=HA_ERR_CRASHED;
 
408
      errno=HA_ERR_CRASHED;
409
409
      return(-1);
410
410
    }
411
411
    memmove(key_pos, key_pos - t_length, endpos - key_pos + t_length);
575
575
    if (!(length=(*keyinfo->get_key)(keyinfo,0,&page,key_buff)))
576
576
    {
577
577
      mi_print_error(keyinfo->share, HA_ERR_CRASHED);
578
 
      my_errno=HA_ERR_CRASHED;
 
578
      errno=HA_ERR_CRASHED;
579
579
      return(0);
580
580
    }
581
581
  }