Thank you, Dan! It really works well as you commented!
Thank you again! 2013/2/8 Dan Kennedy <danielk1...@gmail.com> > On 02/08/2013 12:08 PM, Yongil Jang wrote: > >> Dear, >> >> I'm trying to make a mystrstr function to use it as a sub-function of >> "like". >> mystrstr function is designed to use boyer-moore algorithm to improve >> string search performance. >> (Only for simple substing search, but not a complex search pattern) >> >> But, the problem is occurred when this mystrstr function is called two >> more >> times on one query. >> >> In boyer-moore algorithm, search pattern string should be preprocessed >> before it is used. >> I used sqlite3_set_auxdata() and sqlite3_get_auxdata() function to save >> preprocessed search pattern to call preprocessing process only once. >> It works very well if I use only one mystrstr function on one query. >> >> example) >> select * from mytable where mystrstr(col1, 'test1') and mystrstr(col2, >> 'test2'); >> >> In this case, mystrstr function is called twice and there are two >> different >> search patterns. >> I can use two aux data slots and can find preprocessed patterns by string >> compare with original pattern string for each call of mystrstr(). >> But, I think it is not a good idea, because of string compare can make not >> necessary processing cost. >> > > I don't think you should have to do anything special for this to work. > > SQLite will allocate separate aux-data slots to each invocation. The > array of aux-data slots accessed by "mystrstr(col1, 'test1')" is > different to the array accessed by "mystrstr(col2, 'test2')". So if > the implementation just stores the compiled version of the search > pattern in aux-data slot 1 things should just work. > > Dan. > > > > > >> Could I get some more information of currently called function? >> For example, If I can get PC(program count of VDBE) from context, this >> value can be used to distinguish current position of my function on a >> query. >> >> Thank you. >> Yongil Jang. >> ______________________________**_________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-**bin/mailman/listinfo/sqlite-**users<http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users> >> >> > ______________________________**_________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-**bin/mailman/listinfo/sqlite-**users<http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users> > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users