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

Benoît Paris commented on FLINK-16277:
--------------------------------------

I tried with the `Row.class` call; it does not seem to have an influence and 
yields the same stacktrace.
----
DECIMAL(38, 18): I followed the execution from where the ValidationException 
signaled this type.
It comes from 
org.apache.flink.table.runtime.types.LogicalTypeDataTypeConverter.LegacyTypeToPlannerTypeConverter,
 which mentions a Decimal.DECIMAL_SYSTEM_DEFAULT (which is at 38, 18), for 
BasicTypeInfo.BIG_DEC_TYPE_INFO's. I'm attaching the creation stacktrace of the 
type in the JIRA.

I trialed-and-errored on replacing LegacyTypeInformationType with this type. 
Other precision and scales values do not work.

I'll try to summarize my limited understanding: the bug seems to be that in 
toAppendStream call, the Logical types got a prior conversion from a Legacy 
Wrapper to a new Blink Type, when the physical types never got it.
----
> mixes type information and data types together

I must admit I'm a bit confused by the types. Are toAppendStream's 
TypeInformation's on the same boat as org.apache.flink.table.api.Types as well?

For now I have something that sort of works with band-aids; but I get to use 
the new planner, with my old code.

> StreamTableEnvironment.toAppendStream fails with Decimal types
> --------------------------------------------------------------
>
>                 Key: FLINK-16277
>                 URL: https://issues.apache.org/jira/browse/FLINK-16277
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Legacy Planner, Table SQL / Planner
>    Affects Versions: 1.10.0
>            Reporter: Benoît Paris
>            Priority: Major
>         Attachments: DecimalType 38 18 Logical - stacktrace.txt, 
> flink-test-schema-update.zip
>
>
> The following fails when there is a Decimal type in the underlying 
> TableSource:
>  
> {code:java}
> DataStream<Row> appendStream = tEnv.toAppendStream(
>   asTable,
>   asTable.getSchema().toRowType()
> );{code}
> Yielding the following error:
>  
> ValidationException: Type ROW<`y` DECIMAL(38, 18)> of table field 'payload' 
> does not match with the physical type ROW<`y` LEGACY('DECIMAL', 'DECIMAL')> 
> of the 'payload' field of the TableSource return type
> ----
>  
> Remarks:
>  * toAppendStream is not ready for the new type system, does not accept the 
> new DataTypes
>  * The LegacyTypeInformationType transition type hinders things. Replacing it 
> with the new DataTypes.DECIMAL type makes things work.
>  * flink-json is not ready for the new type system, does not give the new 
> DataTypes
>  
> Workaround: reprocess TypeConversions.fromLegacyInfoToDataType's output to 
> replace LegacyTypeInformationType types when they are of DECIMAL typeroot 
> with the new types.
>  
> Included is reproduction and workaround (activated by line 127) code, with 
> java + pom + stacktrace files.
>  



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

Reply via email to