summaryrefslogtreecommitdiff
path: root/myisam/ft_nlq_search.c
diff options
context:
space:
mode:
authorunknown <serg@serg.mylan>2004-04-27 21:17:10 +0200
committerunknown <serg@serg.mylan>2004-04-27 21:17:10 +0200
commite35880e0b86ea38412b1c5e94a99aa995f071564 (patch)
tree8cf231fea089cf1204f85536f9854e2abaf2bb6f /myisam/ft_nlq_search.c
parent39ec9e1e23409b9ddb0c9b7c5baff3d4877c11b6 (diff)
downloadmariadb-git-e35880e0b86ea38412b1c5e94a99aa995f071564.tar.gz
after-merge fix: make concurrent-insert-skip code ft2-aware
mysql-test/t/func_group.test: no innodb is not an error
Diffstat (limited to 'myisam/ft_nlq_search.c')
-rw-r--r--myisam/ft_nlq_search.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/myisam/ft_nlq_search.c b/myisam/ft_nlq_search.c
index f8ca7e96564..9b42d51ab55 100644
--- a/myisam/ft_nlq_search.c
+++ b/myisam/ft_nlq_search.c
@@ -90,6 +90,7 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
/* Skip rows inserted by current inserted */
for (r=_mi_search(info, keyinfo, keybuff, keylen, SEARCH_FIND, key_root) ;
+ (subkeys=ft_sintXkorr(info->lastkey+info->lastkey_length-extra)) > 0 &&
!r && info->lastpos >= info->state->data_file_length ;
r= _mi_search_next(info, keyinfo, info->lastkey,
info->lastkey_length, SEARCH_BIGGER, key_root))
@@ -105,7 +106,6 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
info->lastkey_length-extra-1, keybuff+1,keylen-1,0,0))
break;
- subkeys=ft_sintXkorr(info->lastkey+info->lastkey_length-extra);
if (subkeys<0)
{
if (doc_cnt)
@@ -119,7 +119,7 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
key_root=info->lastpos;
keylen=0;
r=_mi_search_first(info, keyinfo, key_root);
- continue;
+ goto do_skip;
}
#if HA_FT_WTYPE == HA_KEYTYPE_FLOAT
tmp_weight=*(float*)&subkeys;
@@ -157,8 +157,9 @@ static int walk_and_match(FT_WORD *word, uint32 count, ALL_IN_ONE *aio)
else
r=_mi_search(info, keyinfo, info->lastkey, info->lastkey_length,
SEARCH_BIGGER, key_root);
-
- while (!r && info->lastpos >= info->state->data_file_length)
+do_skip:
+ while ((subkeys=ft_sintXkorr(info->lastkey+info->lastkey_length-extra)) > 0 &&
+ !r && info->lastpos >= info->state->data_file_length)
r= _mi_search_next(info, keyinfo, info->lastkey, info->lastkey_length,
SEARCH_BIGGER, key_root);