in src/main/java/com/google/cloud/solutions/bqremoteencryptionfn/fns/dlp/DlpRequestBatchExecutor.java [191:219]
public List<Table> apply(List<String> rows) {
var requestTableBuilder = ImmutableList.<Table>builder();
var accTable = newTable();
for (var stringRow : rows) {
var tableRow = convertStringToRow(stringRow);
if (tableRow.getSerializedSize() >= requestMaxBytes) {
throw new RuntimeException(
String.format(
"Single Row size greater than DLP limit. Found %s bytes",
tableRow.getSerializedSize()));
}
if (accTable.getRowsCount() + 1 > requestCellCount
|| accTable.getSerializedSize() + tableRow.getSerializedSize() >= requestMaxBytes) {
requestTableBuilder.add(accTable);
accTable = newTable();
}
accTable = accTable.toBuilder().addRows(tableRow).build();
}
var requestTables = requestTableBuilder.add(accTable).build();
logger.atInfo().log("Created %s tables from %s rows", requestTables.size(), rows.size());
return requestTables;
}