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.

Reply via email to