flink-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Danny Chan <yuzhao....@gmail.com>
Subject Re: Flink upgrade to 1.10: function
Date Tue, 21 Apr 2020 08:23:49 GMT
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

Danny Chan
在 2020年4月17日 +0800 PM9:00,Till Rohrmann <trohrmann@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 <seeksst@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
> > > Thansk.

View raw message