Commit a5f061c7 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi

Merge

parents 87fd219d ea4516d5
Administrator@co3064164-a.
Administrator@co3064164-a.rochd1.qld.optushome.com.au
Administrator@fred.
Miguel@light.local
Sinisa@sinisa.nasamreza.org
ahlentz@co3064164-a.rochd1.qld.optusnet.com.au
arjen@co3064164-a.bitbike.com
davida@isil.mysql.com
heikki@donna.mysql.fi
jani@hynda.mysql.fi
jani@janikt.pp.saunalahti.fi
jcole@abel.spaceapes.com
jcole@main.burghcom.com
jcole@tetra.spaceapes.com
miguel@light.local
monty@bitch.mysql.fi
monty@donna.mysql.fi
monty@hundin.mysql.fi
monty@tik.mysql.fi
monty@tramp.mysql.fi
monty@work.mysql.com
mwagner@evoq.mwagner.org
paul@central.snake.net
paul@teton.kitebird.com
root@x3.internalnet
sasha@mysql.sashanet.com
serg@serg.mysql.com
tfr@sarvik.tfr.cafe.ee
tim@bitch.mysql.fi
tim@black.box
tim@hundin.mysql.fi
tim@threads.polyesthetic.msg
tim@white.box
tim@work.mysql.com
tonu@hundin.mysql.fi
tonu@volk.internalnet
tonu@x153.internalnet
tonu@x3.internalnet
jcole@sarvik.tfr.cafe.ee
This diff is collapsed.
...@@ -359,10 +359,11 @@ int ft_boolean_read_next(FT_INFO *ftb, char *record) ...@@ -359,10 +359,11 @@ int ft_boolean_read_next(FT_INFO *ftb, char *record)
float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length) float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
{ {
TREE ptree;
FT_WORD word; FT_WORD word;
FTB_WORD *ftbw; FTB_WORD *ftbw;
FTB_EXPR *ftbe; FTB_EXPR *ftbe;
FT_SEG_ITERATOR ftsi;
const byte *end;
uint i; uint i;
my_off_t docid=ftb->info->lastpos; my_off_t docid=ftb->info->lastpos;
...@@ -393,33 +394,43 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length) ...@@ -393,33 +394,43 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
else if (ftb->state != SCAN) else if (ftb->state != SCAN)
return -3.0; return -3.0;
bzero(&ptree, sizeof(ptree)); if (ftb->keynr==NO_SUCH_KEY)
if ((ftb->keynr==NO_SUCH_KEY) _mi_ft_segiterator_dummy_init(record, length, &ftsi);
? ft_parse(& ptree, record, length) else
: _mi_ft_parse(& ptree, ftb->info, ftb->keynr, record)) _mi_ft_segiterator_init(ftb->info, ftb->keynr, record, &ftsi);
return -4.0;
for (i=1; i<=ftb->queue.elements; i++) while (_mi_ft_segiterator(&ftsi))
{ {
ftbw=(FTB_WORD *)(ftb->queue.root[i]); if (!ftsi.pos)
ftbw->docid=docid; continue;
ptree.custom_arg=(void *)(ftbw->trunc);
word.pos=ftbw->word+1; end=ftsi.pos+ftsi.len;
word.len=ftbw->len-1; while (ft_simple_get_word((byte **)&ftsi.pos,(byte *)end,&word))
if (tree_search(& ptree, & word)) {
{ /* found! */ uint a, b, c;
_ftb_climb_the_tree(ftbw); for (a=1, b=ftb->queue.elements+1, c=(a+b)/2; b-a>1; c=(a+b)/2)
} {
ftbw=(FTB_WORD *)(ftb->queue.root[c]);
if (_mi_compare_text(default_charset_info, word.pos,word.len,
(uchar*) ftbw->word+1,ftbw->len-1,ftbw->trunc) >0)
b=c;
else else
{ /* not found! */ a=c;
if (ftbw->yesno>0 && ftbw->up->up==0) }
{ /* but this word MUST BE present in every document matched, for (; c; c--)
so we can stop the search right now */ {
ftbw=(FTB_WORD *)(ftb->queue.root[c]);
if (_mi_compare_text(default_charset_info, word.pos,word.len,
(uchar*) ftbw->word+1,ftbw->len-1,ftbw->trunc))
break; break;
if (ftbw->docid == docid)
continue;
ftbw->docid=docid;
_ftb_climb_the_tree(ftbw);
} }
} }
} }
delete_tree(& ptree);
ftbe=ftb->root; ftbe=ftb->root;
if (ftbe->docid==docid && ftbe->cur_weight>0 && if (ftbe->docid==docid && ftbe->cur_weight>0 &&
ftbe->yesses>=ftbe->ythresh && !ftbe->nos) ftbe->yesses>=ftbe->ythresh && !ftbe->nos)
......
...@@ -55,12 +55,9 @@ void _mi_ft_segiterator_dummy_init(const byte *record, uint len, ...@@ -55,12 +55,9 @@ void _mi_ft_segiterator_dummy_init(const byte *record, uint len,
uint _mi_ft_segiterator(register FT_SEG_ITERATOR *ftsi) uint _mi_ft_segiterator(register FT_SEG_ITERATOR *ftsi)
{ {
if(!ftsi->num) if (!ftsi->num) return 0; else ftsi->num--;
return 0; if (!ftsi->seg) return 1; else ftsi->seg--;
if (!ftsi->seg)
return 1;
ftsi->seg--; ftsi->num--;
if (ftsi->seg->null_bit && if (ftsi->seg->null_bit &&
(ftsi->rec[ftsi->seg->null_pos] & ftsi->seg->null_bit)) (ftsi->rec[ftsi->seg->null_pos] & ftsi->seg->null_bit))
{ {
......
...@@ -263,10 +263,9 @@ while test $# -gt 0; do ...@@ -263,10 +263,9 @@ while test $# -gt 0; do
$ECHO "Note: you will get more meaningful output on a source distribution compiled with debugging option when running tests with --gdb option" $ECHO "Note: you will get more meaningful output on a source distribution compiled with debugging option when running tests with --gdb option"
fi fi
DO_GDB=1 DO_GDB=1
# We must use manager, as things doesn't work on Linux without it
# This needs to be checked properly # This needs to be checked properly
# USE_MANAGER=1 # USE_MANAGER=1
# USE_RUNNING_SERVER="" USE_RUNNING_SERVER=""
;; ;;
--client-gdb ) --client-gdb )
if [ x$BINARY_DIST = x1 ] ; then if [ x$BINARY_DIST = x1 ] ; then
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment