33458 {
33459 D_ASSERT(input.GetVectorType() == VectorType::FLAT_VECTOR);
33460 auto &main_buffer = append_data.GetMainBuffer();
33461 auto &aux_buffer = append_data.GetAuxBuffer();
33462
33463 ArrowAppendData::ResizeValidity(append_data.GetValidityBuffer(), append_data.row_count + size);
33464
33465
33466 main_buffer.resize(main_buffer.size() +
sizeof(
int32_t) * (size + 1));
33467 auto data = FlatVector::GetData<string_t>(input);
33468 auto offset_data = main_buffer.GetData<
int32_t>();
33469 if (append_data.row_count == 0) {
33470
33471 offset_data[0] = 0;
33472 }
33473
33474
33475 auto last_offset = offset_data[append_data.row_count];
33476 for (idx_t i = 0; i <
size; i++) {
33477 auto offset_idx = append_data.row_count + i + 1;
33478
33479 auto string_length = GetLength(data[i]);
33480
33481
33482 auto current_offset = UnsafeNumericCast<idx_t>(last_offset) + string_length;
33483 offset_data[offset_idx] = UnsafeNumericCast<int32_t>(current_offset);
33484
33485
33486 aux_buffer.resize(current_offset);
33487 WriteData(aux_buffer.data() + last_offset, data[i]);
33488
33489 last_offset = UnsafeNumericCast<int32_t>(current_offset);
33490 }
33491 append_data.row_count +=
size;
33492 }
GOpaque< Size > size(const GMat &src)