转发:Re: sql关键字问题

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

转发:Re: sql关键字问题

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


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


原始邮件
发件人:Kurt [hidden email]
收件人:[hidden email]
抄送:Yuzhao [hidden email]
发送时间: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 [hidden email] wrote:  Hi lucas,   赞专业的分析,看起来是Flink的bug,你可以建个Jira来跟踪。  CC: @Yuzhao Chen [hidden email]   Best,  Jingsong Lee   On Wed, Mar 18, 2020 at 4:15 PM lucas.wu [hidden email] 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吗?   原始邮件   发件人:[hidden email]   收件人:[hidden email]   发送时间: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