@@ -160,18 +160,18 @@ static int FTB_WORD_cmp_list(CHARSET_INFO *cs, FTB_WORD **a, FTB_WORD **b)
160160
161161typedef struct st_my_ftb_param
162162{
163- MYSQL_FTPARSER_PARAM * up ;
164163 FTB * ftb ;
165164 FTB_EXPR * ftbe ;
166165 byte * up_quot ;
167166 uint depth ;
168167} MY_FTB_PARAM ;
169168
170169
171- static int ftb_query_add_word (void * param , char * word , int word_len ,
170+ static int ftb_query_add_word (MYSQL_FTPARSER_PARAM * param ,
171+ char * word , int word_len ,
172172 MYSQL_FTPARSER_BOOLEAN_INFO * info )
173173{
174- MY_FTB_PARAM * ftb_param = ( MY_FTB_PARAM * ) param ;
174+ MY_FTB_PARAM * ftb_param = param -> mysql_ftparam ;
175175 FTB_WORD * ftbw ;
176176 FTB_EXPR * ftbe , * tmp_expr ;
177177 FT_WORD * phrase_word ;
@@ -269,9 +269,10 @@ static int ftb_query_add_word(void *param, char *word, int word_len,
269269}
270270
271271
272- static int ftb_parse_query_internal (void * param , char * query , int len )
272+ static int ftb_parse_query_internal (MYSQL_FTPARSER_PARAM * param ,
273+ char * query , int len )
273274{
274- MY_FTB_PARAM * ftb_param = ( MY_FTB_PARAM * ) param ;
275+ MY_FTB_PARAM * ftb_param = param -> mysql_ftparam ;
275276 MYSQL_FTPARSER_BOOLEAN_INFO info ;
276277 CHARSET_INFO * cs = ftb_param -> ftb -> charset ;
277278 char * * start = & query ;
@@ -281,7 +282,7 @@ static int ftb_parse_query_internal(void *param, char *query, int len)
281282 info .prev = ' ' ;
282283 info .quot = 0 ;
283284 while (ft_get_word (cs , start , end , & w , & info ))
284- ftb_param -> up -> mysql_add_word (param , w .pos , w .len , & info );
285+ param -> mysql_add_word (param , w .pos , w .len , & info );
285286 return (0 );
286287}
287288
@@ -299,7 +300,6 @@ static void _ftb_parse_query(FTB *ftb, byte *query, uint len,
299300 if (! (param = ftparser_call_initializer (ftb -> info , ftb -> keynr , 0 )))
300301 DBUG_VOID_RETURN ;
301302
302- ftb_param .up = param ;
303303 ftb_param .ftb = ftb ;
304304 ftb_param .depth = 0 ;
305305 ftb_param .ftbe = ftb -> root ;
@@ -571,7 +571,6 @@ FT_INFO * ft_init_boolean_search(MI_INFO *info, uint keynr, byte *query,
571571
572572typedef struct st_my_ftb_phrase_param
573573{
574- MYSQL_FTPARSER_PARAM * up ;
575574 LIST * phrase ;
576575 LIST * document ;
577576 CHARSET_INFO * cs ;
@@ -581,10 +580,11 @@ typedef struct st_my_ftb_phrase_param
581580} MY_FTB_PHRASE_PARAM ;
582581
583582
584- static int ftb_phrase_add_word (void * param , char * word , int word_len ,
583+ static int ftb_phrase_add_word (MYSQL_FTPARSER_PARAM * param ,
584+ char * word , int word_len ,
585585 MYSQL_FTPARSER_BOOLEAN_INFO * boolean_info __attribute__((unused )))
586586{
587- MY_FTB_PHRASE_PARAM * phrase_param = ( MY_FTB_PHRASE_PARAM * ) param ;
587+ MY_FTB_PHRASE_PARAM * phrase_param = param -> mysql_ftparam ;
588588 FT_WORD * w = (FT_WORD * )phrase_param -> document -> data ;
589589 LIST * phrase , * document ;
590590 w -> pos = word ;
@@ -611,14 +611,15 @@ static int ftb_phrase_add_word(void *param, char *word, int word_len,
611611}
612612
613613
614- static int ftb_check_phrase_internal (void * param , char * document , int len )
614+ static int ftb_check_phrase_internal (MYSQL_FTPARSER_PARAM * param ,
615+ char * document , int len )
615616{
616617 FT_WORD word ;
617- MY_FTB_PHRASE_PARAM * phrase_param = ( MY_FTB_PHRASE_PARAM * ) param ;
618+ MY_FTB_PHRASE_PARAM * phrase_param = param -> mysql_ftparam ;
618619 const char * docend = document + len ;
619620 while (ft_simple_get_word (phrase_param -> cs , & document , docend , & word , FALSE))
620621 {
621- phrase_param -> up -> mysql_add_word (param , word .pos , word .len , 0 );
622+ param -> mysql_add_word (param , word .pos , word .len , 0 );
622623 if (phrase_param -> match )
623624 return 1 ;
624625 }
@@ -651,7 +652,6 @@ static int _ftb_check_phrase(FTB *ftb, const byte *document, uint len,
651652 if (! (param = ftparser_call_initializer (ftb -> info , ftb -> keynr , 1 )))
652653 DBUG_RETURN (0 );
653654
654- ftb_param .up = param ;
655655 ftb_param .phrase = ftbe -> phrase ;
656656 ftb_param .document = ftbe -> document ;
657657 ftb_param .cs = ftb -> charset ;
@@ -820,16 +820,16 @@ int ft_boolean_read_next(FT_INFO *ftb, char *record)
820820
821821typedef struct st_my_ftb_find_param
822822{
823- MYSQL_FTPARSER_PARAM * up ;
824823 FT_INFO * ftb ;
825824 FT_SEG_ITERATOR * ftsi ;
826825} MY_FTB_FIND_PARAM ;
827826
828827
829- static int ftb_find_relevance_add_word (void * param , char * word , int len ,
828+ static int ftb_find_relevance_add_word (MYSQL_FTPARSER_PARAM * param ,
829+ char * word , int len ,
830830 MYSQL_FTPARSER_BOOLEAN_INFO * boolean_info __attribute__((unused )))
831831{
832- MY_FTB_FIND_PARAM * ftb_param = ( MY_FTB_FIND_PARAM * ) param ;
832+ MY_FTB_FIND_PARAM * ftb_param = param -> mysql_ftparam ;
833833 FT_INFO * ftb = ftb_param -> ftb ;
834834 FTB_WORD * ftbw ;
835835 int a , b , c ;
@@ -859,14 +859,15 @@ static int ftb_find_relevance_add_word(void *param, char *word, int len,
859859}
860860
861861
862- static int ftb_find_relevance_parse (void * param , char * doc , int len )
862+ static int ftb_find_relevance_parse (MYSQL_FTPARSER_PARAM * param ,
863+ char * doc , int len )
863864{
864- MY_FTB_FIND_PARAM * ftb_param = ( MY_FTB_FIND_PARAM * ) param ;
865+ MY_FTB_FIND_PARAM * ftb_param = param -> mysql_ftparam ;
865866 FT_INFO * ftb = ftb_param -> ftb ;
866867 char * end = doc + len ;
867868 FT_WORD w ;
868869 while (ft_simple_get_word (ftb -> charset , & doc , end , & w , TRUE))
869- ftb_param -> up -> mysql_add_word (param , w .pos , w .len , 0 );
870+ param -> mysql_add_word (param , w .pos , w .len , 0 );
870871 return (0 );
871872}
872873
@@ -910,7 +911,6 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
910911 _mi_ft_segiterator_init (ftb -> info , ftb -> keynr , record , & ftsi );
911912 memcpy (& ftsi2 , & ftsi , sizeof (ftsi ));
912913
913- ftb_param .up = param ;
914914 ftb_param .ftb = ftb ;
915915 ftb_param .ftsi = & ftsi2 ;
916916 param -> mysql_parse = ftb_find_relevance_parse ;
0 commit comments