Hi there, I'm a bit struggling with the syntax for filter function, after it changed from Oct2014 to Jul2015. I have looked at the release notes, but they don't seem to even mention this change of syntax. This used to work in Oct2014: create filter function maxlevenshtein(s1 string, s2 string, k int) external name str."distjoin_levenshtein"; select t.name, f.name from sys.tables t, sys.functions f where t.name maxlevenshtein(2) f.name; In Jul2015, if I look at Niels' comment in https://www.monetdb.org/bugzilla/show_bug.cgi?id=3702 , it should be something similar to select t.name, f.name from sys.tables t, sys.functions f where [t.name] maxlevenshtein [f.name, 2]; But this is still not right. How should it be? And should I change the SQL / MAL / C interface of the function as well? Thanks,
UPDATE:
Looking at src/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql, it seems
that the syntax I need is indeed
where [t.name] maxlevenshtein [f.name, 2]
However, now I suspect that the problem is that my join was implemented as:
str
STRdistjoin_levenshtein(bat *r1, bat *r2, const bat *lid, const bat *rid,
const int *k)
and not as STRdistjoin_levenshtein*subjoin*
Is this needed in Jul2015? And do I need also the subselect version?
Is there any guideline to help? I find all these subjoin/subselect
implementations rather unfriendly ;)
Roberto
On 8 January 2016 at 15:01, Roberto Cornacchia wrote: Hi there, I'm a bit struggling with the syntax for filter function, after it changed
from Oct2014 to Jul2015.
I have looked at the release notes, but they don't seem to even mention
this change of syntax. This used to work in Oct2014: create filter function maxlevenshtein(s1 string, s2 string, k int)
external name str."distjoin_levenshtein"; select t.name, f.name
from sys.tables t, sys.functions f
where t.name maxlevenshtein(2) f.name; In Jul2015, if I look at Niels' comment in
https://www.monetdb.org/bugzilla/show_bug.cgi?id=3702 , it should be
something similar to select t.name, f.name
from sys.tables t, sys.functions f
where [t.name] maxlevenshtein [f.name, 2]; But this is still not right. How should it be? And should I change the SQL
/ MAL / C interface of the function as well? Thanks,
Alright.
Indeed, the syntax is now ok and if I implement the *subjoin* version then
it also works again.
On 8 January 2016 at 15:32, Roberto Cornacchia wrote: UPDATE: Looking at src/sql/backends/monet5/LSST/Tests/lsst_htmxmatch.sql, it
seems that the syntax I need is indeed where [t.name] maxlevenshtein [f.name, 2] However, now I suspect that the problem is that my join was implemented as: str
STRdistjoin_levenshtein(bat *r1, bat *r2, const bat *lid, const bat *rid,
const int *k) and not as STRdistjoin_levenshtein*subjoin* Is this needed in Jul2015? And do I need also the subselect version? Is there any guideline to help? I find all these subjoin/subselect
implementations rather unfriendly ;) Roberto On 8 January 2016 at 15:01, Roberto Cornacchia <
roberto.cornacchia@gmail.com> wrote: Hi there, I'm a bit struggling with the syntax for filter function, after it
changed from Oct2014 to Jul2015.
I have looked at the release notes, but they don't seem to even mention
this change of syntax. This used to work in Oct2014: create filter function maxlevenshtein(s1 string, s2 string, k int)
external name str."distjoin_levenshtein"; select t.name, f.name
from sys.tables t, sys.functions f
where t.name maxlevenshtein(2) f.name; In Jul2015, if I look at Niels' comment in
https://www.monetdb.org/bugzilla/show_bug.cgi?id=3702 , it should be
something similar to select t.name, f.name
from sys.tables t, sys.functions f
where [t.name] maxlevenshtein [f.name, 2]; But this is still not right. How should it be? And should I change the
SQL / MAL / C interface of the function as well? Thanks,
participants (1)
-
Roberto Cornacchia