Commit abbb5220 authored by serg@serg.mysql.com's avatar serg@serg.mysql.com
Browse files

Merge work:/home/bk/mysql-4.0

into serg.mysql.com:/usr/home/serg/Abk/mysql-4.0
parents 6a301204 392315df
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ extern "C" {
typedef struct st_ft_info FT_INFO;
struct _ft_vft {
  int       (*read_next)(FT_INFO *, char *);
  float     (*find_relevance)(FT_INFO *, my_off_t);
  float     (*find_relevance)(FT_INFO *, my_off_t, byte *);
  void      (*close_search)(FT_INFO *);
  float     (*get_relevance)(FT_INFO *);
  my_off_t  (*get_docid)(FT_INFO *);
+2 −2
Original line number Diff line number Diff line
@@ -321,9 +321,9 @@ int ft_boolean_read_next(FT_INFO *ftb, char *record)
  return my_errno=HA_ERR_END_OF_FILE;
}

float ft_boolean_find_relevance(FT_INFO *ftb, my_off_t docid)
float ft_boolean_find_relevance(FT_INFO *ftb,
    my_off_t docid __attribute__((unused)), byte *record)
{
  fprintf(stderr, "ft_boolean_find_relevance called!\n");
  return -1.0; /* to be done via str scan */
}

+2 −1
Original line number Diff line number Diff line
@@ -247,7 +247,8 @@ int ft_nlq_read_next(FT_INFO *handler, char *record)
  return my_errno;
}

float ft_nlq_find_relevance(FT_INFO *handler, my_off_t docid)
float ft_nlq_find_relevance(FT_INFO *handler, my_off_t docid,
    byte *record __attribute__((unused)))
{
  int a,b,c;
  FT_DOC  *docs=handler->doc;
+11 −17
Original line number Diff line number Diff line
@@ -164,41 +164,35 @@ int _mi_ft_update(MI_INFO *info, uint keynr, byte *keybuf,
  int error= -1;
  FT_WORD *oldlist,*newlist, *old_word, *new_word;
  uint key_length;
  int cmp;
  int cmp, cmp2;

  if (!(old_word=oldlist=_mi_ft_parserecord(info, keynr, keybuf, oldrec)))
    goto err0;
  if (!(new_word=newlist=_mi_ft_parserecord(info, keynr, keybuf, newrec)))
    goto err1;

  error=0;
  while(old_word->pos && new_word->pos)
  {
    cmp=_mi_compare_text(default_charset_info,
	                 (uchar*) old_word->pos,old_word->len,
			 (uchar*) new_word->pos,new_word->len,0);
    if (cmp==0)
      cmp=sgn(old_word->weight-new_word->weight);
    else
      cmp=sgn(cmp);
    cmp2= cmp ? 0 : (abs(old_word->weight - new_word->weight) > 1.e-5);

    switch (cmp) {
    case -1:
    if (cmp < 0 || cmp2)
    {
      key_length=_ft_make_key(info,keynr,keybuf,old_word,pos);
      if ((error=_mi_ck_delete(info,keynr,(uchar*) keybuf,key_length)))
        goto err2;
      old_word++;
      break;
    case 0:
      old_word++;
      new_word++;
      break;
    case 1:
    }
    if (cmp > 0 || cmp2)
    {
      key_length=_ft_make_key(info,keynr,keybuf,new_word,pos);
      if ((error=_mi_ck_write(info,keynr,(uchar*) keybuf,key_length)))
        goto err2;
      new_word++;
      break;
    }
    if (cmp<=0) old_word++;
    if (cmp>=0) new_word++;
 }
 if (old_word->pos)
   error=_mi_ft_erase(info,keynr,keybuf,old_word,pos);
+2 −2
Original line number Diff line number Diff line
@@ -126,7 +126,7 @@ FT_WORD * _mi_ft_parserecord(MI_INFO *, uint , byte *, const byte *);
const struct _ft_vft _ft_vft_nlq;
FT_INFO *ft_init_nlq_search(MI_INFO *, uint, byte *, uint, my_bool);
int ft_nlq_read_next(FT_INFO *, char *);
float ft_nlq_find_relevance(FT_INFO *, my_off_t );
float ft_nlq_find_relevance(FT_INFO *, my_off_t, byte *);
void ft_nlq_close_search(FT_INFO *);
float ft_nlq_get_relevance(FT_INFO *);
my_off_t ft_nlq_get_docid(FT_INFO *);
@@ -135,7 +135,7 @@ void ft_nlq_reinit_search(FT_INFO *);
const struct _ft_vft _ft_vft_boolean;
FT_INFO *ft_init_boolean_search(MI_INFO *, uint, byte *, uint, my_bool);
int ft_boolean_read_next(FT_INFO *, char *);
float ft_boolean_find_relevance(FT_INFO *, my_off_t );
float ft_boolean_find_relevance(FT_INFO *, my_off_t, byte *);
void ft_boolean_close_search(FT_INFO *);
float ft_boolean_get_relevance(FT_INFO *);
my_off_t ft_boolean_get_docid(FT_INFO *);
Loading