Lines Matching refs:keyinfo

28 static int d_search(MI_INFO *info,MI_KEYDEF *keyinfo,uint comp_flag,
30 static int del(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,uchar *anc_buff,
33 static int underflow(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *anc_buff,
35 static uint remove_key(MI_KEYDEF *keyinfo,uint nod_flag,uchar *keypos,
38 static int _mi_ck_real_delete(MI_INFO *info,MI_KEYDEF *keyinfo,
89 info->s->keyinfo[i].version++; in mi_delete()
90 if (info->s->keyinfo[i].flag & HA_FULLTEXT ) in mi_delete()
97 if (info->s->keyinfo[i].ck_delete(info,i,old_key, in mi_delete()
150 return _mi_ck_real_delete(info, info->s->keyinfo+keynr, key, key_length, in _mi_ck_delete()
155 static int _mi_ck_real_delete(MI_INFO *info, MI_KEYDEF *keyinfo, in _mi_ck_real_delete() argument
170 if (!(root_buff= (uchar*) my_alloca((uint) keyinfo->block_length+ in _mi_ck_real_delete()
178 if (!_mi_fetch_keypage(info,keyinfo,old_root,DFLT_INIT_HITS,root_buff,0)) in _mi_ck_real_delete()
183 if ((error=d_search(info,keyinfo, in _mi_ck_real_delete()
184 (keyinfo->flag & HA_FULLTEXT ? SEARCH_FIND | SEARCH_UPDATE in _mi_ck_real_delete()
191 error=_mi_enlarge_root(info,keyinfo,key,root); in _mi_ck_real_delete()
202 if (_mi_dispose(info,keyinfo,old_root,DFLT_INIT_HITS)) in _mi_ck_real_delete()
206 error=_mi_write_keypage(info,keyinfo,old_root, in _mi_ck_real_delete()
224 static int d_search(MI_INFO *info, MI_KEYDEF *keyinfo, in d_search() argument
238 flag=(*keyinfo->bin_search)(info,keyinfo,anc_buff,key, search_key_length, in d_search()
247 if (!flag && keyinfo->flag & HA_FULLTEXT) in d_search()
271 flag=(*keyinfo->bin_search)(info,keyinfo,anc_buff,key,USE_WHOLE_KEY, in d_search()
283 if (!(tmp_key_length=(*keyinfo->get_key)(keyinfo,nod_flag,&kpos,lastkey))) in d_search()
293 if (_mi_dispose(info, keyinfo, root,DFLT_INIT_HITS)) in d_search()
299 keyinfo=&info->s->ft2_keyinfo; in d_search()
300 kpos-=keyinfo->keylength+nod_flag; /* we'll modify key entry 'in vivo' */ in d_search()
309 ret_value=_mi_write_keypage(info,keyinfo,page, in d_search()
321 if (!(leaf_buff= (uchar*) my_alloca((uint) keyinfo->block_length+ in d_search()
329 if (!_mi_fetch_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff,0)) in d_search()
343 ret_value=d_search(info,keyinfo,comp_flag,key,key_length, in d_search()
350 if (!(tmp= remove_key(keyinfo,nod_flag,keypos,lastkey,anc_buff+length, in d_search()
359 if (_mi_write_keypage(info,keyinfo,page,DFLT_INIT_HITS,anc_buff)) in d_search()
366 (uint) keyinfo->underflow_block_length))); in d_search()
369 ret_value=del(info,keyinfo,key,anc_buff,leaf_page,leaf_buff,keypos, in d_search()
376 ret_value= underflow(info,keyinfo,anc_buff,leaf_page,leaf_buff,keypos); in d_search()
380 if (!_mi_get_last_key(info,keyinfo,anc_buff,lastkey,keypos,&length)) in d_search()
384 ret_value=_mi_insert(info,keyinfo,key,anc_buff,keypos,lastkey, in d_search()
388 if (ret_value == 0 && mi_getint(anc_buff) > keyinfo->block_length) in d_search()
391 ret_value=_mi_split_page(info,keyinfo,key,anc_buff,lastkey,0) | 2; in d_search()
394 ret_value|=_mi_write_keypage(info,keyinfo,page,DFLT_INIT_HITS,anc_buff); in d_search()
410 static int del(MI_INFO *info, MI_KEYDEF *keyinfo, uchar *key, in del() argument
428 if (!(key_start=_mi_get_last_key(info,keyinfo,leaf_buff,keybuff,endpos, in del()
435 if (!(next_buff= (uchar*) my_alloca((uint) keyinfo->block_length+ in del()
438 if (!_mi_fetch_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,next_buff,0)) in del()
443 if ((ret_value=del(info,keyinfo,key,anc_buff,next_page,next_buff, in del()
449 ret_value=underflow(info,keyinfo,leaf_buff,next_page, in del()
451 if (ret_value == 0 && mi_getint(leaf_buff) > keyinfo->block_length) in del()
453 ret_value=_mi_split_page(info,keyinfo,key,leaf_buff,ret_key,0) | 2; in del()
459 if (!_mi_get_last_key(info,keyinfo,leaf_buff,keybuff,endpos, in del()
462 ret_value=_mi_insert(info,keyinfo,key,leaf_buff,endpos,keybuff, in del()
466 if (_mi_write_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff)) in del()
475 if (_mi_write_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff)) in del()
483 !_mi_get_last_key(info,keyinfo,anc_buff,ret_key,keypos,&tmp)) in del()
487 length=(*keyinfo->pack_key)(keyinfo,share->base.key_reflength, in del()
495 (*keyinfo->store_key)(keyinfo,keypos,&s_temp); in del()
497 if (!(*keyinfo->get_key)(keyinfo,share->base.key_reflength,&keypos,ret_key)) in del()
504 (uint) keyinfo->underflow_block_length)); in del()
512 static int underflow(MI_INFO *info, MI_KEYDEF *keyinfo, in underflow() argument
541 if (info->s->keyinfo+info->lastinx == keyinfo) in underflow()
549 if (keyinfo->flag & HA_BINARY_PACK_KEY) in underflow()
551 if (!(next_keypos=_mi_get_key(info, keyinfo, in underflow()
559 if (!(*keyinfo->get_key)(keyinfo,key_reflength,&next_keypos, in underflow()
564 if (!_mi_fetch_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,buff,0)) in underflow()
572 if (!_mi_get_last_key(info,keyinfo,anc_buff,anc_key,next_keypos,&length) in underflow()
573 || !_mi_get_last_key(info,keyinfo,leaf_buff,leaf_key, in underflow()
579 t_length=(*keyinfo->pack_key)(keyinfo,nod_flag,buff+p_length, in underflow()
587 (*keyinfo->store_key)(keyinfo,buff+leaf_length,&s_temp); in underflow()
593 if (!(s_length=remove_key(keyinfo,key_reflength,keypos,anc_key, in underflow()
600 if (buff_length <= keyinfo->block_length) in underflow()
603 if (_mi_dispose(info,keyinfo,next_page,DFLT_INIT_HITS)) in underflow()
612 !_mi_get_last_key(info,keyinfo,anc_buff,anc_key,keypos,&length)) in underflow()
614 if (!(half_pos=_mi_find_half_pos(nod_flag, keyinfo, buff, leaf_key, in underflow()
626 t_length=(*keyinfo->pack_key)(keyinfo,key_reflength, in underflow()
635 (*keyinfo->store_key)(keyinfo,keypos,&s_temp); in underflow()
641 if (!(*keyinfo->get_key)(keyinfo,nod_flag,&half_pos,leaf_key)) in underflow()
643 t_length=(int) (*keyinfo->pack_key)(keyinfo, nod_flag, (uchar*) 0, in underflow()
649 (*keyinfo->store_key)(keyinfo,buff+p_length,&s_temp); in underflow()
652 if (_mi_write_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,buff)) in underflow()
655 if (_mi_write_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff)) in underflow()
658 (uint) keyinfo->underflow_block_length))); in underflow()
663 keypos=_mi_get_last_key(info,keyinfo,anc_buff,anc_key,keypos,&length); in underflow()
667 if (!_mi_fetch_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,buff,0)) in underflow()
677 if (!(*keyinfo->get_key)(keyinfo,key_reflength,&next_keypos, in underflow()
680 if (!_mi_get_last_key(info,keyinfo,buff,leaf_key,endpos,&length)) in underflow()
685 t_length=(*keyinfo->pack_key)(keyinfo,nod_flag, in underflow()
697 (*keyinfo->store_key)(keyinfo,endpos,&s_temp); in underflow()
702 if (!(s_length= remove_key(keyinfo,key_reflength,keypos,anc_key, in underflow()
709 if (buff_length <= keyinfo->block_length) in underflow()
711 if (_mi_dispose(info,keyinfo,leaf_page,DFLT_INIT_HITS)) in underflow()
718 else if (!_mi_get_last_key(info,keyinfo,anc_buff,anc_pos=anc_key,keypos, in underflow()
721 endpos=_mi_find_half_pos(nod_flag,keyinfo,buff,leaf_key, in underflow()
731 t_length=(*keyinfo->pack_key)(keyinfo,key_reflength, in underflow()
741 (*keyinfo->store_key)(keyinfo,keypos,&s_temp); in underflow()
748 if (!(length=(*keyinfo->get_key)(keyinfo,nod_flag,&half_pos,leaf_key))) in underflow()
751 t_length=(*keyinfo->pack_key)(keyinfo,nod_flag, (uchar*) 0, in underflow()
757 (*keyinfo->store_key)(keyinfo,leaf_buff+p_length,&s_temp); in underflow()
759 if (_mi_write_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff)) in underflow()
763 if (_mi_write_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,buff)) in underflow()
765 DBUG_RETURN(anc_length <= (uint) keyinfo->block_length/2); in underflow()
779 static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag, in remove_key() argument
791 if (!(keyinfo->flag & in remove_key()
795 s_length=(int) (keyinfo->keylength+nod_flag); in remove_key()
802 if (!(*keyinfo->get_key)(keyinfo,nod_flag,&keypos,lastkey)) in remove_key()
810 if (keyinfo->flag & HA_BINARY_PACK_KEY) in remove_key()
829 if ((keyinfo->seg->flag & HA_PACK_KEY) && *keypos & 128) in remove_key()
834 if (keyinfo->seg[0].length >= 127) in remove_key()
852 if (keyinfo->seg[0].flag & HA_NULL_PART) in remove_key()
882 if (keyinfo->seg[0].flag & HA_NULL_PART) in remove_key()