33356 {
33357 UnifiedVectorFormat format;
33358 input.ToUnifiedFormat(input_size, format);
33359 idx_t
size = to - from;
33360
33361 auto &types_buffer = append_data.GetMainBuffer();
33362
33364 for (const auto &child : UnionType::CopyMemberTypes(input.GetType())) {
33365 child_vectors.emplace_back(child.second, size);
33366 }
33367
33368 for (idx_t i = 0; i <
size; i++) {
33369 auto input_idx = from + i;
33370 const auto &val = input.GetValue(input_idx);
33371
33372 idx_t tag = 0;
33373 Value resolved_value(nullptr);
33374 if (!val.IsNull()) {
33375 tag = UnionValue::GetTag(val);
33376
33377 resolved_value = UnionValue::GetValue(val);
33378 }
33379
33380 for (idx_t child_idx = 0; child_idx < child_vectors.size(); child_idx++) {
33381 child_vectors[child_idx].SetValue(i, child_idx == tag ? resolved_value : Value(nullptr));
33382 }
33383 types_buffer.push_back<
data_t>(NumericCast<data_t>(tag));
33384 }
33385
33386 for (idx_t child_idx = 0; child_idx < child_vectors.size(); child_idx++) {
33387 auto &child_buffer = append_data.child_data[child_idx];
33388 auto &child = child_vectors[child_idx];
33389 child_buffer->append_vector(*child_buffer, child, 0, size, size);
33390 }
33391 append_data.row_count +=
size;
33392}
Definition duckdb.hpp:960
GOpaque< Size > size(const GMat &src)
uint8_t data_t
data pointers
Definition duckdb.hpp:246