[ 
https://issues.apache.org/jira/browse/FLINK-14549?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Leonard Xu updated FLINK-14549:
-------------------------------
    Description: 
We use DataType‘s conversionClass name in validating the query result's field 
type and sink table schema which is no precise when the DataType has  variable 
parameters like  DECIMAL(p,s)、TIMESTAMP(p).
{code:java}
Exception in thread "main" org.apache.flink.table.api.ValidationException: 
Field types of query result and registered TableSink 
`default_catalog`.`default_database`.`q2_sinkTable` do not match.
Query result schema: [d_week_seq1: Long, EXPR$1: BigDecimal, EXPR$2: BigDecimal]
TableSink schema:    [d_week_seq1: Long, EXPR$1: BigDecimal, EXPR$2: BigDecimal]
at 
org.apache.flink.table.planner.sinks.TableSinkUtils$.validateSink(TableSinkUtils.scala:68)
at 
org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:179)
at 
org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:178)
{code}
Using logicalType will be more precise and clear to user as following:
{code:java}
Exception in thread "main" org.apache.flink.table.api.ValidationException: 
Field types of query result and registered TableSink 
`default_catalog`.`default_database`.`q2_sinkTable` do not match.
Query result schema: [d_week_seq1: BIGINT, EXPR$1: DECIMAL(35, 2), EXPR$2: 
DECIMAL(35, 2)]
TableSink schema:    [d_week_seq1: BIGINT, EXPR$1: DECIMAL(35, 3), EXPR$2: 
DECIMAL(35, 3)]
at 
org.apache.flink.table.planner.sinks.TableSinkUtils$.validateSink(TableSinkUtils.scala:68)
at 
org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:179)
at 
org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:178)
{code}
 

 

  was:
We use DataType‘s conversionClass name in validating the query result's field 
type and sink table schema which is no precise when the DataType has  variable 
parameters like  DECIMAL(p,s)、TIMESTAMP(p).

Exception in thread "main" org.apache.flink.table.api.ValidationException: 
Field types of query result and registered TableSink 
`default_catalog`.`default_database`.`q2_sinkTable` do not match.Exception in 
thread "main" org.apache.flink.table.api.ValidationException: Field types of 
query result and registered TableSink 
`default_catalog`.`default_database`.`q2_sinkTable` do not match.Query result 
schema: [d_week_seq1: Long, EXPR$1: BigDecimal, EXPR$2: BigDecimal, EXPR$3: 
BigDecimal]TableSink schema:    [d_week_seq1: Long, EXPR$1: BigDecimal, EXPR$2: 
BigDecimal, EXPR$3: BigDecimal] at 
org.apache.flink.table.planner.sinks.TableSinkUtils$.validateSink(TableSinkUtils.scala:68)
 at 
org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:179)
 at 
org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:178)

 

 


> Bring more detail by using logicalType rather than conversionClass  in 
> exception msg
> ------------------------------------------------------------------------------------
>
>                 Key: FLINK-14549
>                 URL: https://issues.apache.org/jira/browse/FLINK-14549
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Planner
>    Affects Versions: 1.9.1
>            Reporter: Leonard Xu
>            Assignee: Leonard Xu
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 1.10.0
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> We use DataType‘s conversionClass name in validating the query result's field 
> type and sink table schema which is no precise when the DataType has  
> variable parameters like  DECIMAL(p,s)、TIMESTAMP(p).
> {code:java}
> Exception in thread "main" org.apache.flink.table.api.ValidationException: 
> Field types of query result and registered TableSink 
> `default_catalog`.`default_database`.`q2_sinkTable` do not match.
> Query result schema: [d_week_seq1: Long, EXPR$1: BigDecimal, EXPR$2: 
> BigDecimal]
> TableSink schema:    [d_week_seq1: Long, EXPR$1: BigDecimal, EXPR$2: 
> BigDecimal]
> at 
> org.apache.flink.table.planner.sinks.TableSinkUtils$.validateSink(TableSinkUtils.scala:68)
> at 
> org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:179)
> at 
> org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:178)
> {code}
> Using logicalType will be more precise and clear to user as following:
> {code:java}
> Exception in thread "main" org.apache.flink.table.api.ValidationException: 
> Field types of query result and registered TableSink 
> `default_catalog`.`default_database`.`q2_sinkTable` do not match.
> Query result schema: [d_week_seq1: BIGINT, EXPR$1: DECIMAL(35, 2), EXPR$2: 
> DECIMAL(35, 2)]
> TableSink schema:    [d_week_seq1: BIGINT, EXPR$1: DECIMAL(35, 3), EXPR$2: 
> DECIMAL(35, 3)]
> at 
> org.apache.flink.table.planner.sinks.TableSinkUtils$.validateSink(TableSinkUtils.scala:68)
> at 
> org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:179)
> at 
> org.apache.flink.table.planner.delegation.PlannerBase$$anonfun$2.apply(PlannerBase.scala:178)
> {code}
>  
>  



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

Reply via email to