Lines Matching refs:keyinfo

21 static int d_search(MI_INFO *info,MI_KEYDEF *keyinfo,uint comp_flag,
23 static int del(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *key,uchar *anc_buff,
26 static int underflow(MI_INFO *info,MI_KEYDEF *keyinfo,uchar *anc_buff,
28 static uint remove_key(MI_KEYDEF *keyinfo,uint nod_flag,uchar *keypos,
31 static int _mi_ck_real_delete(register MI_INFO *info,MI_KEYDEF *keyinfo,
78 info->s->keyinfo[i].version++; in mi_delete()
79 if (info->s->keyinfo[i].flag & HA_FULLTEXT ) in mi_delete()
86 if (info->s->keyinfo[i].ck_delete(info,i,old_key, in mi_delete()
141 return _mi_ck_real_delete(info, info->s->keyinfo+keynr, key, key_length, in _mi_ck_delete()
146 static int _mi_ck_real_delete(register MI_INFO *info, MI_KEYDEF *keyinfo, in _mi_ck_real_delete() argument
160 if (!(root_buff= (uchar*) my_alloca((uint) keyinfo->block_length+ in _mi_ck_real_delete()
167 if (!_mi_fetch_keypage(info,keyinfo,old_root,DFLT_INIT_HITS,root_buff,0)) in _mi_ck_real_delete()
172 if ((error=d_search(info,keyinfo, in _mi_ck_real_delete()
173 (keyinfo->flag & HA_FULLTEXT ? in _mi_ck_real_delete()
181 error=_mi_enlarge_root(info,keyinfo,key,root); in _mi_ck_real_delete()
192 if (_mi_dispose(info,keyinfo,old_root,DFLT_INIT_HITS)) in _mi_ck_real_delete()
196 error=_mi_write_keypage(info,keyinfo,old_root, in _mi_ck_real_delete()
215 static int d_search(register MI_INFO *info, register MI_KEYDEF *keyinfo, in d_search() argument
229 flag=(*keyinfo->bin_search)(info,keyinfo,anc_buff,key, search_key_length, in d_search()
238 if (!flag && keyinfo->flag & HA_FULLTEXT) in d_search()
262 flag=(*keyinfo->bin_search)(info,keyinfo,anc_buff,key,USE_WHOLE_KEY, in d_search()
274 if (!(tmp_key_length=(*keyinfo->get_key)(keyinfo,nod_flag,&kpos,lastkey))) in d_search()
284 if (_mi_dispose(info, keyinfo, root,DFLT_INIT_HITS)) in d_search()
290 keyinfo=&info->s->ft2_keyinfo; in d_search()
291 kpos-=keyinfo->keylength+nod_flag; /* we'll modify key entry 'in vivo' */ in d_search()
300 ret_value=_mi_write_keypage(info,keyinfo,page, in d_search()
311 if (!(leaf_buff= (uchar*) my_alloca((uint) keyinfo->block_length+ in d_search()
319 if (!_mi_fetch_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff,0)) in d_search()
333 ret_value=d_search(info,keyinfo,comp_flag,key,key_length, in d_search()
340 if (!(tmp= remove_key(keyinfo,nod_flag,keypos,lastkey,anc_buff+length, in d_search()
349 if (_mi_write_keypage(info,keyinfo,page,DFLT_INIT_HITS,anc_buff)) in d_search()
356 (uint) keyinfo->underflow_block_length))); in d_search()
359 ret_value=del(info,keyinfo,key,anc_buff,leaf_page,leaf_buff,keypos, in d_search()
366 ret_value= underflow(info,keyinfo,anc_buff,leaf_page,leaf_buff,keypos); in d_search()
370 if (!_mi_get_last_key(info,keyinfo,anc_buff,lastkey,keypos,&length)) in d_search()
372 ret_value=_mi_insert(info,keyinfo,key,anc_buff,keypos,lastkey, in d_search()
376 if (ret_value == 0 && mi_getint(anc_buff) > keyinfo->block_length) in d_search()
379 ret_value=_mi_split_page(info,keyinfo,key,anc_buff,lastkey,0) | 2; in d_search()
382 ret_value|=_mi_write_keypage(info,keyinfo,page,DFLT_INIT_HITS,anc_buff); in d_search()
400 static int del(register MI_INFO *info, register MI_KEYDEF *keyinfo, uchar *key, in del() argument
418 if (!(key_start=_mi_get_last_key(info,keyinfo,leaf_buff,keybuff,endpos, in del()
425 if (!(next_buff= (uchar*) my_alloca((uint) keyinfo->block_length+ in del()
428 if (!_mi_fetch_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,next_buff,0)) in del()
433 if ((ret_value=del(info,keyinfo,key,anc_buff,next_page,next_buff, in del()
439 ret_value=underflow(info,keyinfo,leaf_buff,next_page, in del()
441 if (ret_value == 0 && mi_getint(leaf_buff) > keyinfo->block_length) in del()
443 ret_value=_mi_split_page(info,keyinfo,key,leaf_buff,ret_key,0) | 2; in del()
449 if (!_mi_get_last_key(info,keyinfo,leaf_buff,keybuff,endpos, in del()
452 ret_value=_mi_insert(info,keyinfo,key,leaf_buff,endpos,keybuff, in del()
456 if (_mi_write_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff)) in del()
466 if (_mi_write_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff)) in del()
474 !_mi_get_last_key(info,keyinfo,anc_buff,ret_key,keypos,&tmp)) in del()
478 length=(*keyinfo->pack_key)(keyinfo,share->base.key_reflength, in del()
486 (*keyinfo->store_key)(keyinfo,keypos,&s_temp); in del()
488 if (!(*keyinfo->get_key)(keyinfo,share->base.key_reflength,&keypos,ret_key)) in del()
495 (uint) keyinfo->underflow_block_length)); in del()
503 static int underflow(register MI_INFO *info, register MI_KEYDEF *keyinfo, in underflow() argument
532 if (info->s->keyinfo+info->lastinx == keyinfo) in underflow()
540 if (keyinfo->flag & HA_BINARY_PACK_KEY) in underflow()
542 if (!(next_keypos=_mi_get_key(info, keyinfo, in underflow()
550 if (!(*keyinfo->get_key)(keyinfo,key_reflength,&next_keypos, in underflow()
555 if (!_mi_fetch_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,buff,0)) in underflow()
563 if (!_mi_get_last_key(info,keyinfo,anc_buff,anc_key,next_keypos,&length) in underflow()
564 || !_mi_get_last_key(info,keyinfo,leaf_buff,leaf_key, in underflow()
570 t_length=(*keyinfo->pack_key)(keyinfo,nod_flag,buff+p_length, in underflow()
578 (*keyinfo->store_key)(keyinfo,buff+leaf_length,&s_temp); in underflow()
584 if (!(s_length=remove_key(keyinfo,key_reflength,keypos,anc_key, in underflow()
591 if (buff_length <= keyinfo->block_length) in underflow()
594 if (_mi_dispose(info,keyinfo,next_page,DFLT_INIT_HITS)) in underflow()
603 !_mi_get_last_key(info,keyinfo,anc_buff,anc_key,keypos,&length)) in underflow()
605 if (!(half_pos=_mi_find_half_pos(nod_flag, keyinfo, buff, leaf_key, in underflow()
617 t_length=(*keyinfo->pack_key)(keyinfo,key_reflength, in underflow()
627 (*keyinfo->store_key)(keyinfo,keypos,&s_temp); in underflow()
633 if (!(*keyinfo->get_key)(keyinfo,nod_flag,&half_pos,leaf_key)) in underflow()
635 t_length=(int) (*keyinfo->pack_key)(keyinfo, nod_flag, (uchar*) 0, in underflow()
641 (*keyinfo->store_key)(keyinfo,buff+p_length,&s_temp); in underflow()
644 if (_mi_write_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,buff)) in underflow()
647 if (_mi_write_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff)) in underflow()
650 (uint) keyinfo->underflow_block_length))); in underflow()
655 keypos=_mi_get_last_key(info,keyinfo,anc_buff,anc_key,keypos,&length); in underflow()
659 if (!_mi_fetch_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,buff,0)) in underflow()
669 if (!(*keyinfo->get_key)(keyinfo,key_reflength,&next_keypos, in underflow()
672 if (!_mi_get_last_key(info,keyinfo,buff,leaf_key,endpos,&length)) in underflow()
677 t_length=(*keyinfo->pack_key)(keyinfo,nod_flag, in underflow()
689 (*keyinfo->store_key)(keyinfo,endpos,&s_temp); in underflow()
694 if (!(s_length= remove_key(keyinfo,key_reflength,keypos,anc_key, in underflow()
701 if (buff_length <= keyinfo->block_length) in underflow()
703 if (_mi_dispose(info,keyinfo,leaf_page,DFLT_INIT_HITS)) in underflow()
710 else if (!_mi_get_last_key(info,keyinfo,anc_buff,anc_pos=anc_key,keypos, in underflow()
713 endpos=_mi_find_half_pos(nod_flag,keyinfo,buff,leaf_key, in underflow()
723 t_length=(*keyinfo->pack_key)(keyinfo,key_reflength, in underflow()
733 (*keyinfo->store_key)(keyinfo,keypos,&s_temp); in underflow()
739 if (!(length=(*keyinfo->get_key)(keyinfo,nod_flag,&half_pos,leaf_key))) in underflow()
742 t_length=(*keyinfo->pack_key)(keyinfo,nod_flag, (uchar*) 0, in underflow()
748 (*keyinfo->store_key)(keyinfo,leaf_buff+p_length,&s_temp); in underflow()
750 if (_mi_write_keypage(info,keyinfo,leaf_page,DFLT_INIT_HITS,leaf_buff)) in underflow()
754 if (_mi_write_keypage(info,keyinfo,next_page,DFLT_INIT_HITS,buff)) in underflow()
756 DBUG_RETURN(anc_length <= (uint) keyinfo->block_length/2); in underflow()
774 static uint remove_key(MI_KEYDEF *keyinfo, uint nod_flag, in remove_key() argument
786 if (!(keyinfo->flag & in remove_key()
790 s_length=(int) (keyinfo->keylength+nod_flag); in remove_key()
797 if (!(*keyinfo->get_key)(keyinfo,nod_flag,&keypos,lastkey)) in remove_key()
805 if (keyinfo->flag & HA_BINARY_PACK_KEY) in remove_key()
824 if ((keyinfo->seg->flag & HA_PACK_KEY) && *keypos & 128) in remove_key()
829 if (keyinfo->seg[0].length >= 127) in remove_key()
847 if (keyinfo->seg[0].flag & HA_NULL_PART) in remove_key()
877 if (keyinfo->seg[0].flag & HA_NULL_PART) in remove_key()