| 202 | } |
| 203 | |
| 204 | void IcebergBufferedDeleteSink::VLogBufferedRecords() { |
| 205 | if (!VLOG_ROW_IS_ON) return; |
| 206 | stringstream ss; |
| 207 | for (auto& entry : partitions_to_file_positions_) { |
| 208 | const PartitionInfo& part_info = entry.first; |
| 209 | int32_t spec_id = part_info.first; |
| 210 | string part_encoded; |
| 211 | bool succ = kudu::Base64Decode(part_info.second, &part_encoded); |
| 212 | DCHECK(succ); |
| 213 | ss << endl; |
| 214 | ss << Substitute("Entries for (spec_id=$0, partition=$1):", spec_id, part_encoded) |
| 215 | << endl; |
| 216 | for (auto& file_and_pos : entry.second) { |
| 217 | ss << " " << file_and_pos.first << ": ["; |
| 218 | std::vector<int64_t>& positions = file_and_pos.second; |
| 219 | for (int i = 0; i < positions.size(); ++i) { |
| 220 | int64_t pos = positions[i]; |
| 221 | ss << pos; |
| 222 | if (i != positions.size() - 1) ss << ", "; |
| 223 | } |
| 224 | ss << "]" << endl; |
| 225 | } |
| 226 | } |
| 227 | VLOG_ROW << "IcebergBufferedDeleteSink's buffered entries:" << ss.str(); |
| 228 | } |
| 229 | |
| 230 | Status IcebergBufferedDeleteSink::VerifyBufferedRecords() { |
| 231 | for (auto& entry : partitions_to_file_positions_) { |
nothing calls this directly
no test coverage detected