flink-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Leonard Xu <xbjt...@gmail.com>
Subject Re: NPE in blink planner code gen
Date Mon, 16 Dec 2019 01:22:50 GMT
Hi, Benchao, thank you for your report.
It looks egacy planner and blink planner have different behavior. 
Could you create an issue in https://issues.apache.org/jira/browse/FLINK <https://issues.apache.org/jira/browse/FLINK>
?



> On Dec 15, 2019, at 16:17, Benchao Li <libenchao@gmail.com> wrote:
> 
> hi all,
> 
> We are using 1.9.0 blink planner, and find flink will throw NPE when we use
> the following SQL:
> 
> ```
> create table source {
>  age int,
>  id varchar
> };
> select *case when age < 20 then cast(id as bigint) else 0 end* from source;
> ```
> 
> After debugging the Janino generated code, I find that NPE's reason is that
> `BinaryStringUtil.toLong` returns `null`, and we assign this result to a
> `long` field.
> 
> Then a tried old planner, it throw a `java.lang.NumberFormatException` when
> casting a blank string to int.
> And also tried other illegal casting in blink, which come out to be `null`.
> 
> So, here is my question:
> Obviously, this is a bug in blink planner, and we should fix that. But we
> have two ways to fix this:
> 1, make behavior of cast behave like before, which produces `null`,
> 2, change the behavior of blink planner to align with old planner, which
> produces `NumberFormatException`.
> 
> 
> 
> Benchao Li
> School of Electronics Engineering and Computer Science, Peking University
> Tel:+86-15650713730
> Email: libenchao@gmail.com; libenchao@pku.edu.cn


Mime
View raw message