Re: Re: sql关键字问题

2020-03-18 文章 Jark Wu
Hi,

你的这个问题就是 FLINK-16526 修复的问题,会在即将到来的 1.10.1 中发布。对于普通字段也是会加 ` ` 的,可以看这行代码 [1]。

Best,
Jark

[1]:
https://github.com/apache/flink/blob/master/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/plan/schema/CatalogSourceTable.scala#L116

On Wed, 18 Mar 2020 at 17:27, lucas.wu  wrote:

> 原始邮件
> 发件人:lucas.wulucas...@xiaoying.com
> 收件人:imj...@gmail.com
> 发送时间:2020年3月18日(周三) 17:21
> 主题:Re: sql关键字问题
>
>
> Hi,jark
> 看到了你修复的这个jirahttps://issues.apache.org/jira/browse/FLINK-16526
> 但是看了你的代码和描述,你只是针对SqlBasicCall这种node的字段名加了``
> ,也就是说只会对有computed_column_expression的字段加上,但是对于普通的字段并没有覆盖到,请问我理解的正确吗?
>
>
> 原始邮件
> 发件人:Kurt youngykt...@gmail.com
> 收件人:user-zhuser...@flink.apache.org
> 抄送:Yuzhao chenyuzhao....@gmail.com
> 发送时间: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 jingsongl...@gmail.com
> wrote:  Hi lucas,   赞专业的分析,看起来是Flink的bug,你可以建个Jira来跟踪。  CC: @Yuzhao Chen
> yuzhao@gmail.com   Best,  Jingsong Lee   On Wed, Mar 18, 2020 at 4:15
> PM lucas.wu lucas...@xiaoying.com 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吗?
>  原始邮件   发件人:lucas.wulucas...@xiaoying.com   收件人:
> user-zhuser...@flink.apache.org   发送时间: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`),'-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`),'-MM-ddHH:mm:ss'),
>  WATERMARK FOR event_ts AS event_ts - interval '60’ second 这两行去掉
>  ,就正常了。是我的使用方法有问题吗? --  Best, Jingsong Lee


Re: Re: sql关键字问题

2020-03-18 文章 Benchao Li
Hi lucas,

你说的问题应该在https://issues.apache.org/jira/browse/FLINK-16068里面修复了。

lucas.wu  于2020年3月18日周三 下午5:27写道:

> 原始邮件
> 发件人:lucas.wulucas...@xiaoying.com
> 收件人:imj...@gmail.com
> 发送时间:2020年3月18日(周三) 17:21
> 主题:Re: sql关键字问题
>
>
> Hi,jark
> 看到了你修复的这个jirahttps://issues.apache.org/jira/browse/FLINK-16526
> 但是看了你的代码和描述,你只是针对SqlBasicCall这种node的字段名加了``
> ,也就是说只会对有computed_column_expression的字段加上,但是对于普通的字段并没有覆盖到,请问我理解的正确吗?
>
>
> 原始邮件
> 发件人:Kurt youngykt...@gmail.com
> 收件人:user-zhuser...@flink.apache.org
> 抄送:Yuzhao chenyuzhao....@gmail.com
> 发送时间: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 jingsongl...@gmail.com
> wrote:  Hi lucas,   赞专业的分析,看起来是Flink的bug,你可以建个Jira来跟踪。  CC: @Yuzhao Chen
> yuzhao@gmail.com   Best,  Jingsong Lee   On Wed, Mar 18, 2020 at 4:15
> PM lucas.wu lucas...@xiaoying.com 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吗?
>  原始邮件   发件人:lucas.wulucas...@xiaoying.com   收件人:
> user-zhuser...@flink.apache.org   发送时间: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`),'-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`),'-MM-ddHH:mm:ss'),
>  WATERMARK FOR event_ts AS event_ts - interval '60’ second 这两行去掉
>  ,就正常了。是我的使用方法有问题吗? --  Best, Jingsong Lee



-- 

Benchao Li
School of Electronics Engineering and Computer Science, Peking University
Tel:+86-15650713730
Email: libenc...@gmail.com; libenc...@pku.edu.cn


转发:Re: sql关键字问题

2020-03-18 文章 lucas.wu
原始邮件
发件人:lucas.wulucas...@xiaoying.com
收件人:imj...@gmail.com
发送时间:2020年3月18日(周三) 17:21
主题:Re: sql关键字问题


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


原始邮件
发件人:Kurt youngykt...@gmail.com
收件人:user-zhuser...@flink.apache.org
抄送:Yuzhao chenyuzhao@gmail.com
发送时间: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 jingsongl...@gmail.com wrote:  Hi 
lucas,   赞专业的分析,看起来是Flink的bug,你可以建个Jira来跟踪。  CC: @Yuzhao Chen 
yuzhao@gmail.com   Best,  Jingsong Lee   On Wed, Mar 18, 2020 at 4:15 PM 
lucas.wu lucas...@xiaoying.com 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吗?   原始邮件   
发件人:lucas.wulucas...@xiaoying.com   收件人:user-zhuser...@flink.apache.org   
发送时间: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`),'-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`),'-MM-ddHH:mm:ss'),   
WATERMARK FOR event_ts AS event_ts - interval '60’ second 这两行去掉   
,就正常了。是我的使用方法有问题吗? --  Best, Jingsong Lee

Re: sql关键字问题

2020-03-18 文章 Kurt Young
好像已经有了,应该是这个jira:
https://issues.apache.org/jira/browse/FLINK-16526

Best,
Kurt


On Wed, Mar 18, 2020 at 4:19 PM Jingsong Li  wrote:

> Hi lucas,
>
> 赞专业的分析,看起来是Flink的bug,你可以建个Jira来跟踪。
> CC: @Yuzhao Chen 
>
> Best,
> Jingsong Lee
>
> On Wed, Mar 18, 2020 at 4:15 PM lucas.wu  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吗?
> > 原始邮件
> > 发件人:lucas.wulucas...@xiaoying.com
> > 收件人:user-zhuser...@flink.apache.org
> > 发送时间: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`),'-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`),'-MM-ddHH:mm:ss'),
> > WATERMARK FOR event_ts AS event_ts - interval '60’ second 这两行去掉
> > ,就正常了。是我的使用方法有问题吗?
>
>
>
> --
> Best, Jingsong Lee
>


Re: sql关键字问题

2020-03-18 文章 Jingsong Li
Hi lucas,

赞专业的分析,看起来是Flink的bug,你可以建个Jira来跟踪。
CC: @Yuzhao Chen 

Best,
Jingsong Lee

On Wed, Mar 18, 2020 at 4:15 PM lucas.wu  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吗?
> 原始邮件
> 发件人:lucas.wulucas...@xiaoying.com
> 收件人:user-zhuser...@flink.apache.org
> 发送时间: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`),'-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`),'-MM-ddHH:mm:ss'),
> WATERMARK FOR event_ts AS event_ts - interval '60’ second 这两行去掉
> ,就正常了。是我的使用方法有问题吗?



-- 
Best, Jingsong Lee


回复:sql关键字问题

2020-03-18 文章 lucas.wu
初步找到了原因
原来我的建表语句用了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吗?
原始邮件
发件人:lucas.wulucas...@xiaoying.com
收件人:user-zhuser...@flink.apache.org
发送时间: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`),'-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`),'-MM-ddHH:mm:ss'), 
WATERMARK FOR event_ts AS event_ts - interval '60’ second 这两行去掉 
,就正常了。是我的使用方法有问题吗?

sql关键字问题

2020-03-18 文章 lucas.wu
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`),'-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`),'-MM-ddHH:mm:ss'),
WATERMARK FOR event_ts AS event_ts - interval '60’ second
这两行去掉 ,就正常了。是我的使用方法有问题吗?