[ 
https://issues.apache.org/jira/browse/FLINK-14539?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16962753#comment-16962753
 ] 

Kevin Zhang commented on FLINK-14539:
-------------------------------------

[~jark] thansk, greate catch, I omitted this kind of situations. I'll close the 
PR later.

But there are some scenarios where we need preserve the unique keys. For 
example, we have a hbase table sink with rowkey of varchar (also primary key) 
and a column of bigint, we want to write the result of the following query into 
the sink  using upsert mode, currently the sql will fail the primary key check, 
do you have any suggestions about how to do this?
{code:sql}
select f0, f1 sum(f2)
from t1
group by f0, f1
{code}



> Unique key metadata should be ketp when using concat or concat_ws in some 
> cases
> -------------------------------------------------------------------------------
>
>                 Key: FLINK-14539
>                 URL: https://issues.apache.org/jira/browse/FLINK-14539
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Planner
>    Affects Versions: 1.9.0, 1.9.1
>            Reporter: Kevin Zhang
>            Assignee: Kevin Zhang
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Currently unique key metadata of a project relnode are only kept in the 
> following three situations:
> # project the child unique keys while not changing them
> # cast the child unique key when ignoring nulls and the original type of the 
> field and cast type are the same
> # rename the child unique keys
> Besides these situations, concat and concat_ws should also keep the metadata 
> if they won't break the uniqueness of the child unique keys, i.e. each 
> operands is in one of the above situations, and the operands include all the 
> child unique keys. 
> Say the f0 and f1 are the unique key fields of the child node, the following 
> sqls should keep the unique key metadata 
> {code:sql}
> select concat(f0, f1)
> -- the type of f0 and f1 are both varchar originally and ignore nulls
> select concat(cast(f0 as varchar), f1)
> select cast(concat(f0, f1) as varchar)
> {code}
> while the following sqls should discard the unique key metadata
> {code:sql}
> -- the type of f0 and f1 are both varchar originally
> select concat(cast(f0 as bigint), f1)
> select cast(concat(f0, f1) as bigint)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to