JingsongLi commented on issue #9185: [FLINK-13266] [table] Relocate blink 
planner classes to avoid class clashes
URL: https://github.com/apache/flink/pull/9185#issuecomment-514186392
 
 
   > > Update:
   > > @godfreyhe what is the purpose of `NullSerializer` and why has 
`ListViewTypeInfo` a `(TypeInformation<T> elementType, boolean nullSerializer)` 
constructor? The Flink code did not contain such special cases.
   > 
   > this is introduced in Blink planner, and `nullSerializer` will be always 
false in Flink planner.
   > in blink, `MapView` or `ListView` in `Accumulator` does not need to be 
serialized, like 
[MaxWithRetractAggFunction](https://github.com/apache/flink/blob/master/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/functions/aggfunctions/MaxWithRetractAggFunction.java)
   
   MapView or ListView in Accumulator can not to be serialized if it is 
`isStateBackedDataViews`.
   
   In flink-planner: If it is `isStateBackedDataViews`, the flink-planner will 
remove view field for PojoTypeInfo, the code is in: 
`UserDefinedFunctionUtils.removeStateViewFieldsFromAccTypeInfo`. (data view 
fields which are backed by state backend are not serialized.)
   
   In blink-planner: The above approach does not work in blink-planner, because 
we will convert POJO to BaseRow in blink internal(Use `PojoConverter`), if we 
discard this field, the BaseRow arity will wrong and field index will confused. 
And the real state backed data views can not set to the BaseRow. The code is 
in: `ImperativeAggCodeGen.generateAccumulatorAccess`.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to