Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Duplicate
-
1.8.0, 1.9.0
-
None
Description
JDBCUtils.getFieldFromResultSet(int index, int type, ResultSet set)
this method have a bug, ResultSet.wasNull() reports whether the last column read had a value of SQL NULL, NOT the current column , when one colums's value is null then all colums value behind it will be null , even if they are not null
bug scene:
1. I want to join a dimension table, column is
Id (INT), ProjectType(INT), Desp(VARCHAR),ProjectName(VARCHAR)
2. select from database table is
{"Id": 10, "ProjectType":100,"Desp":NULL,"ProjectName":"ProjectName"}
3. org.apache.flink.api.java.io.jdbc.JDBCLookupFunction#convertToRowFromResultSet return the row is
{"Id": 10, "ProjectType":100,"Desp":NULL,"ProjectName":NULL}
beause JDBCUtils.getFieldFromResultSet(int index, int type, ResultSet set) when index = 3, ResultSet.wasNull is true, then value of column ProjectName is null
this operator will influence next opertator , then i can not get the column ProjectName.
Bug Fix:
org.apache.flink.api.java.io.jdbc.JDBCUtils#getFieldFromResultSet can fix NULL judge to fix this bug
Attachments
Issue Links
- is duplicated by
-
FLINK-13490 Fix if one column value is null when reading JDBC, the following values are all null
- Resolved
- links to