DBZ-4276 Improve map initialization
This commit is contained in:
parent
ca17352221
commit
d1453eb954
@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -142,7 +143,7 @@ private void processRowLCR(RowLCR row) throws InterruptedException {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Since the row has no chunk data, it can be dispatched immediately.
|
// Since the row has no chunk data, it can be dispatched immediately.
|
||||||
dispatchDataChangeEvent(row, new HashMap<>());
|
dispatchDataChangeEvent(row, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -189,6 +190,12 @@ private void dispatchDataChangeEvent(RowLCR lcr, Map<String, Object> chunkValues
|
|||||||
// marker object so its transformed correctly by the value converters.
|
// marker object so its transformed correctly by the value converters.
|
||||||
if (connectorConfig.isLobEnabled()) {
|
if (connectorConfig.isLobEnabled()) {
|
||||||
LOGGER.trace("Inspecting table '{}' LOB columns for unavailable value sets.", table.id());
|
LOGGER.trace("Inspecting table '{}' LOB columns for unavailable value sets.", table.id());
|
||||||
|
if (chunkValues == null) {
|
||||||
|
// Happens when dispatching an LCR without any chunk data.
|
||||||
|
// Initializing the chunk values map with 1 entries as a baseline.
|
||||||
|
// todo: would be useful in the future to track some type of "has-lob" flag on Table
|
||||||
|
chunkValues = new HashMap<>(0);
|
||||||
|
}
|
||||||
for (Column column : table.columns()) {
|
for (Column column : table.columns()) {
|
||||||
if (isLobColumn(column) && !chunkValues.containsKey(column.name())) {
|
if (isLobColumn(column) && !chunkValues.containsKey(column.name())) {
|
||||||
// Column not supplied, initialize with unavailable value marker
|
// Column not supplied, initialize with unavailable value marker
|
||||||
@ -197,6 +204,10 @@ private void dispatchDataChangeEvent(RowLCR lcr, Map<String, Object> chunkValues
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (chunkValues == null) {
|
||||||
|
// it's safe to initialize as an empty map if LOB support is disabled
|
||||||
|
chunkValues = Collections.emptyMap();
|
||||||
|
}
|
||||||
|
|
||||||
dispatcher.dispatchDataChangeEvent(
|
dispatcher.dispatchDataChangeEvent(
|
||||||
tableId,
|
tableId,
|
||||||
|
Loading…
Reference in New Issue
Block a user