Dear Andrea, thank you for the answer. The only idea I have so far is the line 452 in file wrapper_functions.c sqlite3_result_text(context, metrics, strlen(metrics)+1, SQLITE_STATIC); I would change that to sqlite3_result_text(context, metrics, strlen(metrics)+1, SQLITE_TRANSIENT); but I don't have compiler to verify if this idea makes sense. Thank you Best Regards Milan
On 2015-03-11 00:15, aperi2007 wrote: > Hi Milan, > > thx for your report. > > I try to see a check, and effectively I notice the problem is in the > qgrams_distance when used the metrics option. > > As reported in the readme, the stringmetrics extension is based on the > https://github.com/jokillsya/libsimmetrics > library. > The code on the metrics is integrally take from the sample of that > library. > > I guess the problem you report is due to a static allocation (or > similar effect) that is not appropriated when in the same query the > same function is called more than one time. > > Actually I dont know if the problem is in the sqlite side of my code > or in the original code of the symmetrics library. > > I try to resolve this firstly question when and if I find a few of > time. > > However patches are welcomes. > :) > > Regards, > > Andrea Peri. > > Il 06/03/2015 17:00, Milan Roubal ha scritto: >> Dear all, >> I have some problems with >> https://github.com/aperi2007/libstringmetrics . For example: >> When I use "similarity" in qgrams_distance, I get good results. But >> when I use "metric", it works only if it is only once in the query. >> When there are 2 different usages, they somehow interfere together. Is >> this the right place where to report such problem? >> >>> sqlite3 >> SQLite version 3.8.8.3 2015-02-25 13:29:11 >> Enter ".help" for usage hints. >> Connected to a transient in-memory database. >> Use ".open FILENAME" to reopen on a persistent database. >> >> sqlite> select load_extension("libstringmetrics.dll"); >> >> sqlite> select a.firstname, b.firstname, a.lastname, b.lastname, >> ...> stringmetrics("qgrams_distance","similarity",a.firstname, >> b.firstname,"") first_dist, >> ...> stringmetrics("qgrams_distance","similarity",a.lastname, >> b.lastname,"") last_dist >> ...> from >> ...> (select "Milan" as firstname, "Roubal" as lastname ) a, >> ...> (select "Milan" as firstname, "roubal" as lastname ) b >> ...> ; >> Milan|Milan|Roubal|roubal|100.0|62.5 >> >> sqlite> select a.firstname, b.firstname, a.lastname, b.lastname, >> ...> stringmetrics("qgrams_distance","metric",a.firstname, >> b.firstname,"") first_dist, >> ...> stringmetrics("qgrams_distance","metric",a.lastname, >> b.lastname,"") last_dist >> ...> from >> ...> (select "Milan" as firstname, "Roubal" as lastname ) a, >> ...> (select "Milan" as firstname, "roubal" as lastname ) b >> ...> ; >> Milan|Milan|Roubal|roubal|6|6 >> >> sqlite> select a.firstname, b.firstname, a.lastname, b.lastname, >> ...> stringmetrics("qgrams_distance","metric",a.firstname, >> b.firstname,"") first_dist >> ...> from >> ...> (select "Milan" as firstname, "Roubal" as lastname ) a, >> ...> (select "Milan" as firstname, "roubal" as lastname ) b >> ...> ; >> Milan|Milan|Roubal|roubal|0 >> >> Thank you >> Best Regards >> Milan >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users at mailinglists.sqlite.org >> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > _______________________________________________ > sqlite-users mailing list > sqlite-users at mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users