Loading include/ft_global.h +6 −5 Original line number Diff line number Diff line Loading @@ -43,8 +43,9 @@ typedef struct st_ft_doclist { int ft_init_stopwords(const char **); FT_DOCLIST * ft_init_search(void *, uint, byte *, uint, my_bool); double ft_read_next(FT_DOCLIST *, char *); int ft_read_next(FT_DOCLIST *, char *); #define ft_close_search(handler) my_free(((gptr)(handler)),MYF(0)) #define ft_get_relevance(handler) ((handler)->doc[(handler)->curdoc].weight) #ifdef __cplusplus } Loading myisam/ft_eval.c +7 −6 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ int main(int argc,char *argv[]) if (!silent) printf("- Reading rows with key\n"); for(i=1;create_record(record,qf);i++) { FT_DOCLIST *result; double w; int t; FT_DOCLIST *result; double w; int t,err; result=ft_init_search(file,0,blob_record,(uint) strlen(blob_record),1); if(!result) { Loading @@ -91,11 +91,12 @@ int main(int argc,char *argv[]) } if (!silent) printf("Query %d. Found: %d.\n",i,result->ndocs); for(j=0;(w=ft_read_next(result, read_record))>0;j++) { for(j=0;(err=ft_read_next(result, read_record))==0;j++) { t=uint2korr(read_record); w=ft_get_relevance(result); printf("%d %.*s %f\n",i,t,read_record+2,w); } if(w<0) { if(err != HA_ERR_KEY_NOT_FOUND) { printf("ft_read_next %d failed with errno %3d\n",j,my_errno); goto err; } Loading myisam/ft_search.c +9 −9 Original line number Diff line number Diff line Loading @@ -187,7 +187,7 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key, goto err; dlist->ndocs=aio.dtree.elements_in_tree; dlist->curdoc=0; dlist->curdoc=-1; dlist->info=aio.info; dptr=dlist->doc; Loading @@ -205,19 +205,19 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key, return dlist; } double ft_read_next(FT_DOCLIST *handler, char *record) int ft_read_next(FT_DOCLIST *handler, char *record) { MI_INFO *info=handler->info; if (handler->curdoc >= handler->ndocs) return 0; if (++handler->curdoc >= handler->ndocs) return HA_ERR_END_OF_FILE; info->update&= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED); if (!(*info->read_record)(info,handler->doc[handler->curdoc].dpos,record)) { info->update|= HA_STATE_AKTIV; /* Record is read */ return handler->doc[handler->curdoc++].weight; return 0; } return -my_errno; return my_errno; } myisam/ft_test1.c +10 −9 Original line number Diff line number Diff line Loading @@ -145,15 +145,16 @@ static int run_test(const char *filename) } printf("Query %d: `%s'. Found: %d. Top five documents:\n", i,query[i],result->ndocs); for(j=0;j<5;j++) { double w; w=ft_read_next(result, read_record); if(w<0) { printf("ft_read_next %d failed with errno %3d\n",j,my_errno); break; } else if (w==0) { for(j=0;j<5;j++) { double w; int err; err=ft_read_next(result, read_record); if(err==HA_ERR_KEY_NOT_FOUND) { printf("No more matches!\n"); break; } else if (err) { printf("ft_read_next %d failed with errno %3d\n",j,my_errno); break; } w=ft_get_relevance(result); if(key_field == FIELD_VARCHAR) { uint l; char *p; Loading sql/ha_myisam.cc +27 −29 Original line number Diff line number Diff line Loading @@ -904,15 +904,13 @@ int ha_myisam::ft_read(byte * buf) { int error; if (!ft_handler) return -1; thread_safe_increment(ha_read_next_count,&LOCK_status); // why ? if (ft_handler) ft_relevance=ft_read_next((FT_DOCLIST *) ft_handler,(char*) buf); else ft_relevance=0; error=((ft_relevance == 0) ? HA_ERR_END_OF_FILE : (ft_relevance > 0) ? 0 : (int) -ft_relevance); error=ft_read_next((FT_DOCLIST *) ft_handler,(char*) buf); table->status=error ? STATUS_NOT_FOUND: 0; return error; } Loading
include/ft_global.h +6 −5 Original line number Diff line number Diff line Loading @@ -43,8 +43,9 @@ typedef struct st_ft_doclist { int ft_init_stopwords(const char **); FT_DOCLIST * ft_init_search(void *, uint, byte *, uint, my_bool); double ft_read_next(FT_DOCLIST *, char *); int ft_read_next(FT_DOCLIST *, char *); #define ft_close_search(handler) my_free(((gptr)(handler)),MYF(0)) #define ft_get_relevance(handler) ((handler)->doc[(handler)->curdoc].weight) #ifdef __cplusplus } Loading
myisam/ft_eval.c +7 −6 Original line number Diff line number Diff line Loading @@ -82,7 +82,7 @@ int main(int argc,char *argv[]) if (!silent) printf("- Reading rows with key\n"); for(i=1;create_record(record,qf);i++) { FT_DOCLIST *result; double w; int t; FT_DOCLIST *result; double w; int t,err; result=ft_init_search(file,0,blob_record,(uint) strlen(blob_record),1); if(!result) { Loading @@ -91,11 +91,12 @@ int main(int argc,char *argv[]) } if (!silent) printf("Query %d. Found: %d.\n",i,result->ndocs); for(j=0;(w=ft_read_next(result, read_record))>0;j++) { for(j=0;(err=ft_read_next(result, read_record))==0;j++) { t=uint2korr(read_record); w=ft_get_relevance(result); printf("%d %.*s %f\n",i,t,read_record+2,w); } if(w<0) { if(err != HA_ERR_KEY_NOT_FOUND) { printf("ft_read_next %d failed with errno %3d\n",j,my_errno); goto err; } Loading
myisam/ft_search.c +9 −9 Original line number Diff line number Diff line Loading @@ -187,7 +187,7 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key, goto err; dlist->ndocs=aio.dtree.elements_in_tree; dlist->curdoc=0; dlist->curdoc=-1; dlist->info=aio.info; dptr=dlist->doc; Loading @@ -205,19 +205,19 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key, return dlist; } double ft_read_next(FT_DOCLIST *handler, char *record) int ft_read_next(FT_DOCLIST *handler, char *record) { MI_INFO *info=handler->info; if (handler->curdoc >= handler->ndocs) return 0; if (++handler->curdoc >= handler->ndocs) return HA_ERR_END_OF_FILE; info->update&= (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED); if (!(*info->read_record)(info,handler->doc[handler->curdoc].dpos,record)) { info->update|= HA_STATE_AKTIV; /* Record is read */ return handler->doc[handler->curdoc++].weight; return 0; } return -my_errno; return my_errno; }
myisam/ft_test1.c +10 −9 Original line number Diff line number Diff line Loading @@ -145,15 +145,16 @@ static int run_test(const char *filename) } printf("Query %d: `%s'. Found: %d. Top five documents:\n", i,query[i],result->ndocs); for(j=0;j<5;j++) { double w; w=ft_read_next(result, read_record); if(w<0) { printf("ft_read_next %d failed with errno %3d\n",j,my_errno); break; } else if (w==0) { for(j=0;j<5;j++) { double w; int err; err=ft_read_next(result, read_record); if(err==HA_ERR_KEY_NOT_FOUND) { printf("No more matches!\n"); break; } else if (err) { printf("ft_read_next %d failed with errno %3d\n",j,my_errno); break; } w=ft_get_relevance(result); if(key_field == FIELD_VARCHAR) { uint l; char *p; Loading
sql/ha_myisam.cc +27 −29 Original line number Diff line number Diff line Loading @@ -904,15 +904,13 @@ int ha_myisam::ft_read(byte * buf) { int error; if (!ft_handler) return -1; thread_safe_increment(ha_read_next_count,&LOCK_status); // why ? if (ft_handler) ft_relevance=ft_read_next((FT_DOCLIST *) ft_handler,(char*) buf); else ft_relevance=0; error=((ft_relevance == 0) ? HA_ERR_END_OF_FILE : (ft_relevance > 0) ? 0 : (int) -ft_relevance); error=ft_read_next((FT_DOCLIST *) ft_handler,(char*) buf); table->status=error ? STATUS_NOT_FOUND: 0; return error; }