in flink-connector-hbase-base/src/main/java/org/apache/flink/connector/hbase/util/HBaseSerde.java [333:360]
private static FieldEncoder createNullableFieldEncoder(
LogicalType fieldType, final byte[] nullStringBytes) {
final FieldEncoder encoder = createFieldEncoder(fieldType);
if (fieldType.isNullable()) {
if (fieldType.is(LogicalTypeFamily.CHARACTER_STRING)) {
// special logic for null string values, because HBase can store empty bytes for
// string
return (row, pos) -> {
if (row.isNullAt(pos)) {
return nullStringBytes;
} else {
return encoder.encode(row, pos);
}
};
} else {
// encode empty bytes for null values
return (row, pos) -> {
if (row.isNullAt(pos)) {
return EMPTY_BYTES;
} else {
return encoder.encode(row, pos);
}
};
}
} else {
return encoder;
}
}