in adb3client/src/main/java/com/alibaba/cloud/analyticdb/adb3client/impl/collector/RecordCollector.java [54:97]
public boolean append(Record record) {
if (startTimeMs == -1) {
startTimeMs = System.currentTimeMillis();
}
Map<RecordKey, Record> recordMap = records;
Map<RecordKey, Record> deleteMap = deleteRecords;
RecordKey key = new RecordKey(record);
Record origin = recordMap.get(key);
if (origin != null) {
switch (mode) {
case INSERT_OR_IGNORE:
origin.addAttachmentList(record.getAttachmentList());
break;
case INSERT_OR_REPLACE:
record.cover(origin);
byteSize -= origin.getByteSize();
byteSize += record.getByteSize();
recordMap.put(key, record);
break;
}
} else {
Record baseRecord;
byteSize += record.getByteSize();
recordMap.put(key, record);
if (mode == WriteMode.INSERT_OR_REPLACE) {
baseRecord = deleteMap.get(key);
if (baseRecord == null) {
size += 1;
} else {
byteSize -= baseRecord.getByteSize();
record.cover(baseRecord);
deleteMap.remove(key);
}
} else {
++size;
}
}
BatchState bs = getBatchState();
if (bs != BatchState.NotEnough) {
return true;
}
return false;
}