18
18
#include "myisamdef.h"
20
static int d_search(MI_INFO *info,MI_KEYDEF *keyinfo,uint comp_flag,
21
unsigned char *key,uint key_length,my_off_t page,unsigned char *anc_buff);
20
static int d_search(MI_INFO *info,MI_KEYDEF *keyinfo,uint32_t comp_flag,
21
unsigned char *key,uint32_t key_length,my_off_t page,unsigned char *anc_buff);
22
22
static int del(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *key,unsigned char *anc_buff,
23
23
my_off_t leaf_page,unsigned char *leaf_buff,unsigned char *keypos,
24
24
my_off_t next_block,unsigned char *ret_key);
25
25
static int underflow(MI_INFO *info,MI_KEYDEF *keyinfo,unsigned char *anc_buff,
26
26
my_off_t leaf_page,unsigned char *leaf_buff,unsigned char *keypos);
27
static uint remove_key(MI_KEYDEF *keyinfo,uint nod_flag,unsigned char *keypos,
27
static uint32_t remove_key(MI_KEYDEF *keyinfo,uint32_t nod_flag,unsigned char *keypos,
28
28
unsigned char *lastkey,unsigned char *page_end,
29
29
my_off_t *next_block);
30
30
static int _mi_ck_real_delete(register MI_INFO *info,MI_KEYDEF *keyinfo,
31
unsigned char *key, uint key_length, my_off_t *root);
31
unsigned char *key, uint32_t key_length, my_off_t *root);
34
34
int mi_delete(MI_INFO *info,const unsigned char *record)
37
37
unsigned char *old_key;
117
117
/* Remove a key from the btree index */
119
int _mi_ck_delete(register MI_INFO *info, uint keynr, unsigned char *key,
119
int _mi_ck_delete(register MI_INFO *info, uint32_t keynr, unsigned char *key,
122
122
return _mi_ck_real_delete(info, info->s->keyinfo+keynr, key, key_length,
123
123
&info->s->state.key_root[keynr]);
127
127
static int _mi_ck_real_delete(register MI_INFO *info, MI_KEYDEF *keyinfo,
128
unsigned char *key, uint key_length, my_off_t *root)
128
unsigned char *key, uint32_t key_length, my_off_t *root)
132
132
my_off_t old_root;
133
133
unsigned char *root_buff;
187
187
static int d_search(register MI_INFO *info, register MI_KEYDEF *keyinfo,
188
uint comp_flag, unsigned char *key, uint key_length,
188
uint32_t comp_flag, unsigned char *key, uint32_t key_length,
189
189
my_off_t page, unsigned char *anc_buff)
191
191
int flag,ret_value,save_flag;
192
uint length,nod_flag,search_key_length;
192
uint32_t length,nod_flag,search_key_length;
194
194
unsigned char *leaf_buff,*keypos;
195
195
my_off_t leaf_page= 0, next_block;
295
295
unsigned char *ret_key) /* key before keypos in anc_buff */
297
297
int ret_value,length;
298
uint a_length,nod_flag,tmp;
298
uint32_t a_length,nod_flag,tmp;
299
299
my_off_t next_page;
300
300
unsigned char keybuff[MI_MAX_KEY_BUFF],*endpos,*next_buff,*key_start, *prev_key;
301
301
MYISAM_SHARE *share=info->s;
392
392
unsigned char *keypos) /* Position to pos after key */
395
uint length,anc_length,buff_length,leaf_length,p_length,s_length,nod_flag,
395
uint32_t length,anc_length,buff_length,leaf_length,p_length,s_length,nod_flag,
396
396
key_reflength,key_length;
397
397
my_off_t next_page;
398
398
unsigned char anc_key[MI_MAX_KEY_BUFF],leaf_key[MI_MAX_KEY_BUFF],
631
631
returns how many chars was removed or 0 on error
634
static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag,
634
static uint32_t remove_key(MI_KEYDEF *keyinfo, uint32_t nod_flag,
635
635
unsigned char *keypos, /* Where key starts */
636
636
unsigned char *lastkey, /* key to be removed */
637
637
unsigned char *page_end, /* End of page */
663
663
if (keyinfo->flag & HA_BINARY_PACK_KEY)
665
665
unsigned char *old_key=start;
666
uint next_length,prev_length,prev_pack_length;
666
uint32_t next_length,prev_length,prev_pack_length;
667
667
get_key_length(next_length,keypos);
668
668
get_key_pack_length(prev_length,prev_pack_length,old_key);
669
669
if (next_length > prev_length)
682
682
if ((keyinfo->seg->flag & HA_PACK_KEY) && *keypos & 128)
684
684
/* Next key is packed against the current one */
685
uint next_length,prev_length,prev_pack_length,lastkey_length,
685
uint32_t next_length,prev_length,prev_pack_length,lastkey_length,
687
687
if (keyinfo->seg[0].length >= 127)
716
716
if (next_length >= prev_length)
717
717
{ /* Key after is based on deleted key */
718
uint pack_length,tmp;
718
uint32_t pack_length,tmp;
719
719
bmove_upp(keypos, (lastkey+next_length),
720
720
tmp=(next_length-prev_length));
721
721
rest_length+=tmp;