[hotfix](jdbc catalog) fix realColumnNames serialize npe (#27280)
In the previous PR #27124, we used `objectMapper.readValue` for deserialization. However, this method does not handle null fields, which can lead to issues when upgrading from older versions. Specifically, if a required field is missing in the persistent data, `String realColumnNamesJson = serializeMap.get(REAL_COLUMNS);` will return null, resulting in deserialization errors and frontend startup failure. This issue is likely to occur when upgrading from an older version that uses Jdbc Catalog to a new version including PR #27124. As this represents a specific upgrade scenario involving compatibility with old version data structures, it was not covered in the regular PR test cases. Given the specificity and difficulty in replicating such a scenario, no special test cases were added for this PR.
This commit is contained in:
@ -244,8 +244,12 @@ public class JdbcTable extends Table {
|
||||
realDatabaseName = serializeMap.get(REAL_DATABASE);
|
||||
realTableName = serializeMap.get(REAL_TABLE);
|
||||
String realColumnNamesJson = serializeMap.get(REAL_COLUMNS);
|
||||
realColumnNames = objectMapper.readValue(realColumnNamesJson, new TypeReference<Map<String, String>>() {
|
||||
});
|
||||
if (realColumnNamesJson != null) {
|
||||
realColumnNames = objectMapper.readValue(realColumnNamesJson, new TypeReference<Map<String, String>>() {
|
||||
});
|
||||
} else {
|
||||
realColumnNames = Maps.newHashMap();
|
||||
}
|
||||
}
|
||||
|
||||
public String getResourceName() {
|
||||
|
||||
Reference in New Issue
Block a user