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.