~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to plugin/myisam/mi_update.cc

  • Committer: Brian Aker
  • Date: 2010-01-27 18:58:12 UTC
  • Revision ID: brian@gaz-20100127185812-n62n0vwetnx8jrjy
Remove dead code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
 
16
16
/* Update an old row in a MyISAM table */
17
17
 
18
 
#include "myisamdef.h"
 
18
#include "myisam_priv.h"
 
19
#include <drizzled/util/test.h>
19
20
 
20
 
int mi_update(register MI_INFO *info, const uchar *oldrec, uchar *newrec)
 
21
int mi_update(register MI_INFO *info, const unsigned char *oldrec, unsigned char *newrec)
21
22
{
22
23
  int flag,key_changed,save_errno;
23
24
  register my_off_t pos;
24
 
  uint i;
25
 
  uchar old_key[MI_MAX_KEY_BUFF],*new_key;
 
25
  uint32_t i;
 
26
  unsigned char old_key[MI_MAX_KEY_BUFF],*new_key;
26
27
  bool auto_key_changed=0;
27
28
  uint64_t changed;
28
29
  MYISAM_SHARE *share= info->s;
30
31
 
31
32
  if (!(info->update & HA_STATE_AKTIV))
32
33
  {
33
 
    return(my_errno=HA_ERR_KEY_NOT_FOUND);
 
34
    return(errno=HA_ERR_KEY_NOT_FOUND);
34
35
  }
35
36
  if (share->options & HA_OPTION_READ_ONLY_DATA)
36
37
  {
37
 
    return(my_errno=EACCES);
 
38
    return(errno=EACCES);
38
39
  }
39
40
  if (info->state->key_file_length >= share->base.margin_key_file_length)
40
41
  {
41
 
    return(my_errno=HA_ERR_INDEX_FILE_FULL);
 
42
    return(errno=HA_ERR_INDEX_FILE_FULL);
42
43
  }
43
44
  pos=info->lastpos;
44
45
  if (_mi_readinfo(info,F_WRLCK,1))
45
 
    return(my_errno);
 
46
    return(errno);
46
47
 
47
48
  if (share->calc_checksum)
48
49
    old_checksum=info->checksum=(*share->calc_checksum)(info,oldrec);
49
50
  if ((*share->compare_record)(info,oldrec))
50
51
  {
51
 
    save_errno=my_errno;
 
52
    save_errno=errno;
52
53
    goto err_end;                       /* Record has changed */
53
54
  }
54
55
 
62
63
        mi_check_unique(info, def, newrec, mi_unique_hash(def, newrec),
63
64
                        info->lastpos))
64
65
    {
65
 
      save_errno=my_errno;
 
66
      save_errno=errno;
66
67
      goto err_end;
67
68
    }
68
69
  }
69
70
  if (_mi_mark_file_changed(info))
70
71
  {
71
 
    save_errno=my_errno;
 
72
    save_errno=errno;
72
73
    goto err_end;
73
74
  }
74
75
 
81
82
    if (mi_is_key_active(share->state.key_map, i))
82
83
    {
83
84
      {
84
 
        uint new_length=_mi_make_key(info,i,new_key,newrec,pos);
85
 
        uint old_length=_mi_make_key(info,i,old_key,oldrec,pos);
 
85
        uint32_t new_length=_mi_make_key(info,i,new_key,newrec,pos);
 
86
        uint32_t old_length=_mi_make_key(info,i,old_key,oldrec,pos);
86
87
 
87
88
        /* The above changed info->lastkey2. Inform mi_rnext_same(). */
88
89
        info->update&= ~HA_STATE_RNEXT_SAME;
153
154
    mi_update() must always pass !0 value as operation, since even if
154
155
    there is no index change there could be data change.
155
156
  */
156
 
  VOID(_mi_writeinfo(info, WRITEINFO_UPDATE_KEYFILE));
157
 
  if (info->invalidator != 0)
158
 
  {
159
 
    (*info->invalidator)(info->filename);
160
 
    info->invalidator=0;
161
 
  }
 
157
  _mi_writeinfo(info, WRITEINFO_UPDATE_KEYFILE);
162
158
  return(0);
163
159
 
164
160
err:
165
 
  save_errno=my_errno;
 
161
  save_errno=errno;
166
162
  if (changed)
167
163
    key_changed|= HA_STATE_CHANGED;
168
 
  if (my_errno == HA_ERR_FOUND_DUPP_KEY || my_errno == HA_ERR_OUT_OF_MEM ||
169
 
      my_errno == HA_ERR_RECORD_FILE_FULL)
 
164
  if (errno == HA_ERR_FOUND_DUPP_KEY || errno == HA_ERR_OUT_OF_MEM ||
 
165
      errno == HA_ERR_RECORD_FILE_FULL)
170
166
  {
171
167
    info->errkey= (int) i;
172
168
    flag=0;
175
171
      if (((uint64_t) 1 << i) & changed)
176
172
      {
177
173
        {
178
 
          uint new_length=_mi_make_key(info,i,new_key,newrec,pos);
179
 
          uint old_length= _mi_make_key(info,i,old_key,oldrec,pos);
 
174
          uint32_t new_length=_mi_make_key(info,i,new_key,newrec,pos);
 
175
          uint32_t old_length= _mi_make_key(info,i,old_key,oldrec,pos);
180
176
          if ((flag++ && _mi_ck_delete(info,i,new_key,new_length)) ||
181
177
              _mi_ck_write(info,i,old_key,old_length))
182
178
            break;
193
189
                 key_changed);
194
190
 
195
191
 err_end:
196
 
  VOID(_mi_writeinfo(info,WRITEINFO_UPDATE_KEYFILE));
 
192
  _mi_writeinfo(info,WRITEINFO_UPDATE_KEYFILE);
197
193
  if (save_errno == HA_ERR_KEY_NOT_FOUND)
198
194
  {
199
195
    mi_print_error(info->s, HA_ERR_CRASHED);
200
196
    save_errno=HA_ERR_CRASHED;
201
197
  }
202
 
  return(my_errno=save_errno);
 
198
  return(errno=save_errno);
203
199
} /* mi_update */