| 321 | namespace { |
| 322 | |
| 323 | void appendSingleColumnToBuilder( |
| 324 | TopicChunkBuilder& builder, const ColumnData& col, std::size_t offset, std::size_t batch_size) { |
| 325 | std::visit( |
| 326 | overloaded{ |
| 327 | [&](Span<const float> d) { builder.appendColumn(col.col_index, d.subspan(offset, batch_size)); }, |
| 328 | [&](Span<const double> d) { builder.appendColumn(col.col_index, d.subspan(offset, batch_size)); }, |
| 329 | [&](Span<const int32_t> d) { builder.appendColumn(col.col_index, d.subspan(offset, batch_size)); }, |
| 330 | [&](Span<const int64_t> d) { builder.appendColumn(col.col_index, d.subspan(offset, batch_size)); }, |
| 331 | [&](Span<const uint64_t> d) { builder.appendColumn(col.col_index, d.subspan(offset, batch_size)); }, |
| 332 | [&](Span<const uint8_t> d) { builder.appendColumn(col.col_index, d.subspan(offset, batch_size)); }, |
| 333 | [&](const ColumnData::StringData& s) { |
| 334 | builder.appendColumnStrings(col.col_index, s.offsets.subspan(offset, batch_size + 1), s.values); |
| 335 | }, |
| 336 | }, |
| 337 | col.data); |
| 338 | |
| 339 | // Apply validity bitmap if present |
| 340 | if (!col.validity.empty()) { |
| 341 | builder.appendColumnValidity(col.col_index, col.validity.subspan(offset, batch_size)); |
| 342 | } |
| 343 | } |
| 344 | |
| 345 | } // namespace |
| 346 |
no test coverage detected