原始邮件
发件人:[email protected]
收件人:[email protected]
发送时间:2020年3月18日(周三) 17:21
主题:Re: sql关键字问题


Hi,jark
看到了你修复的这个jirahttps://issues.apache.org/jira/browse/FLINK-16526
但是看了你的代码和描述,你只是针对SqlBasicCall这种node的字段名加了`` 
,也就是说只会对有computed_column_expression的字段加上,但是对于普通的字段并没有覆盖到,请问我理解的正确吗?


原始邮件
发件人:Kurt [email protected]
收件人:[email protected]
抄送:Yuzhao [email protected]
发送时间:2020年3月18日(周三) 16:41
主题:Re: sql关键字问题


好像已经有了,应该是这个jira: https://issues.apache.org/jira/browse/FLINK-16526 Best, Kurt 
On Wed, Mar 18, 2020 at 4:19 PM Jingsong Li [email protected] wrote:  Hi 
lucas,   赞专业的分析,看起来是Flink的bug,你可以建个Jira来跟踪。  CC: @Yuzhao Chen 
[email protected]   Best,  Jingsong Lee   On Wed, Mar 18, 2020 at 4:15 PM 
lucas.wu [email protected] wrote:    初步找到了原因   
原来我的建表语句用了computed_column_expression 这种语义。   然后flink内部在使用的时候其实是把它转成了select 语句   
...   if (columnExprs.nonEmpty) {   val fieldExprs = fieldNames   .map { name = 
  if (columnExprs.contains(name)) {   columnExprs(name)   } else {   name   }   
}.toArray   val rexNodes =   
toRexFactory.create(newRelTable.getRowType).convertToRexNodes(fieldExprs)   ….. 
      然后我们看看convertToRexNodes方法       public RexNode[] 
convertToRexNodes(String[] exprs) {   ….   String query = 
String.format(QUERY_FORMAT, String.join(",", exprs));   SqlNode parsed = 
planner.parser().parse(query);   }       重点就在这个QUERY_FORMAT   private static 
final String QUERY_FORMAT = "SELECT %s FROM " +   TEMPORARY_TABLE_NAME;       
这样写是有问题的,当我的字段本身是有``的时候,就被去掉了,导致后面valid的时候就报错。       所以这个是算flink的bug吗?   原始邮件   
发件人:[email protected]   收件人:[email protected]   
发送时间:2020年3月18日(周三) 15:36   主题:sql关键字问题       create table `source_table`( 
`SeqNo` varchar, `Type` varchar, `Table`   varchar, `ServerId` varchar, 
`Database` varchar, `OldData` varchar,  `GTID`   varchar, `Offset` varchar, 
`event_ts` as   
to_timestamp(from_unixtime(Data.`FuiUpdateTime`),'yyyy-MM-ddHH:mm:ss'),   
WATERMARK FOR event_ts AS event_ts - interval '60' second ) with(…) 查询语句   
Select * from source_table; 这是我的建表和查询语句,发现即使用了`` 查询的时候还是会报Table是关键字的问题。  SQL   
parse failed. Encountered "Table" at line 1,column 19. 但是一旦我把 `event_ts`  as   
to_timestamp(from_unixtime(Data.`FuiUpdateTime`),'yyyy-MM-ddHH:mm:ss'),   
WATERMARK FOR event_ts AS event_ts - interval '60’ second 这两行去掉   
,就正常了。是我的使用方法有问题吗?     --  Best, Jingsong Lee

回复