Hi, 这是 Calcite 的一个 bug[1], 已经在 1.27.0 上修复. 不过由于 Flink 1.15.1, 1.15.2 和 1.16.1 都依赖 Calcite 1.26.0, 所以目前只能尝试如下方式绕过, 可以等 release-1.17 发布后升级到新版本上, 应该不会再有问题了.
select * from (values(case when true then map['test','123456789'] else map ['msg_code','0', 'msg_reason', cast('abc' as string)] end)); [1] https://issues.apache.org/jira/browse/CALCITE-4603 Best, Jane On Wed, Mar 22, 2023 at 11:49 AM tison <wander4...@gmail.com> wrote: > 你可以关注下发布动态,测试一下 RC > https://lists.apache.org/thread/d9o0tgnv0fl9goqsdo8wmq9121b9wolv > > Best, > tison. > > > tison <wander4...@gmail.com> 于2023年3月22日周三 11:47写道: > > > Flink master 上 calcite 的版本是 1.29,看起来会在 Flink 1.17 release 出来 > > > > Best, > > tison. > > > > > > Shuo Cheng <njucs...@gmail.com> 于2023年3月22日周三 11:42写道: > > > >> Hi, > >> > >> 如果你知道问题出现在哪儿, 可以自己提个 PR 哦. > >> > >> Sincerely, > >> Shuo > >> > >> On Wed, Mar 22, 2023 at 11:23 AM Jeff <zilong0...@126.com> wrote: > >> > >> > 复制执行我提供的两个sql就一定会复现! > >> > 不管哪个flink版本一定都会有这个问题,因为它们都是使用calcite 1.26.0。 > >> > 这个问题是这个版本calcite引起的。 > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > > >> > 在 2023-03-22 09:28:17,"Jeff" <zilong0...@126.com> 写道: > >> > >bug地址: > >> > >https://issues.apache.org/jira/browse/FLINK-31375?filter=-2 > >> > > > >> > > > >> > >bug详细内容: > >> > >the values of map<string,string> are truncated by the CASE WHEN > >> function. > >> > >// sql > >> > >create table test (a map<varchar, string>) with > ('connector'='print'); > >> > >insert into test select * from (values(case when true then > >> > map['test','123456789'] else map ['msg_code','0', 'msg_reason', 'abc'] > >> > end)); > >> > > > >> > >the result: > >> > > > >> > >+I[{test=123}] > >> > > > >> > >We hope the value of result is '123456789', but I get '123', the > length > >> > is limited by 'abc'. > >> > > >> > > >