
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 <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,

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 <roberto.cornacchia@gmail.com
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