Github user yanghua commented on the issue:

    https://github.com/apache/flink/pull/6231
  
    hi @pnowojski I did not call the 
`CompositeTypeSerializerConfigSnapshot(TypeSerializer<?>... nestedSerializers)` 
constructor explicitly, the caller is Flink itself, see 
[here](https://github.com/apache/flink/blob/master/flink-libraries/flink-table/src/main/scala/org/apache/flink/table/runtime/types/CRowSerializer.scala#L123).
 And I just fix the NPE in this case : 
    
    ```scala
    def this() = this(null)    //scala
    ```
    but it does not means : 
    
    ```
    CompositeTypeSerializerConfigSnapshot(null);    //java
    ```
    
    it seems means : 
    
    ```
    CompositeTypeSerializerConfigSnapshot(new TypeSerializer<?>[] {null})    
//java
    ```
    
    so it jumps the preconditions not null check : 
    
    ```
    Preconditions.checkNotNull(nestedSerializers);    //java
    ```
    then coursed NPE in the `for` loop 
[here](https://github.com/apache/flink/blob/master/flink-core/src/main/java/org/apache/flink/api/common/typeutils/CompositeTypeSerializerConfigSnapshot.java#L53).
    
    I think it is a defensive check, then it's OK in our inner Flink version 
(in the previous comment, I said we customized table&sql to provide stream and 
dimension table join).



---

Reply via email to