Thanks Danny! On Tue, 21 Apr 2020 at 16:24, Danny Chan <yuzhao....@gmail.com> wrote:
> The JSON_VALUE was coded into the parser, which is always parsed as the > builtin operator, so there is no change to override it yet. > > I have fired an issue[1] to track this and hope we can resolve it in the > next Calcite release. > > [1] https://issues.apache.org/jira/browse/CALCITE-3943 > > Best, > Danny Chan > 在 2020年4月17日 +0800 PM9:00,Till Rohrmann <trohrm...@apache.org>,写道: > > Hi, > > thanks for reporting these problems. I'm pulling in Timo and Jark who are > working on the SQL component. They might be able to help you with your > problem. > > Cheers, > Till > > On Thu, Apr 16, 2020 at 11:10 AM seeksst <seek...@163.com> wrote: > >> Hi, All >> >> >> Recently, I try to upgrade flink from 1.8.2 to 1.10, but i meet some >> problem about function. In 1.8.2, there are just Built-In function and >> User-defined Functions, but in 1.10, there are 4 categories of funtions. >> >> I defined a function which named JSON_VALUE in my system, it doesn’t >> exist in 1.8.2, but present to 1.10.0. of course i use it in sql, something >> like 'select JSON_VALUE(string, string) from table1’, no category or >> database. the problem is in 1.10.0, my function will be recognized as >> SqlJsonValueFunction, and args not match, so my sql is wrong. >> >> I read document about Ambiguous Function Reference, In my >> understanding, my function will be registered as temporary system function, >> and it should be chosen first. isn’t it? I try to debug it, and find some >> information: >> >> First, sql will be parsed by ParseImpl, and JSON_VALUE will be parsed as >> SqlBasicCall, operator is SqlJsonValueFunction, it’s belonged to SYSTEM >> catalog and the kind is OTHER_FUNCTION. Then, SqlUtil.lookupRoutine will >> not find this SqlFunction, because it not in BasicOperatorTable. my >> function in FunctionCatalog, but SqlJsonValueFunction belonged to >> SYSTEM, not belong to USER_DEFINED, so program will not search it in >> FunctionCatalog. >> >> How can i solve this problem without modifying sql and function name? my >> program can choose flink version and have many sql jobs, so i don’t wish to >> modify sql and function name. >> >> Thansk. >> >