| 374 | |
| 375 | template<> |
| 376 | void ArrowRowBatch::templateCopyNonNullValue<LogicalTypeID::MAP>(ArrowVector* vector, |
| 377 | const Value& value, std::int64_t pos, bool fallbackExtensionTypes) { |
| 378 | // Verify all keys are not null |
| 379 | for (auto i = 0u; i < value.childrenSize; ++i) { |
| 380 | if (value.children[i]->children[0]->isNull()) { |
| 381 | throw RuntimeException{ |
| 382 | std::format("Cannot convert map with null key to Arrow: {}", value.toString())}; |
| 383 | } |
| 384 | } |
| 385 | return templateCopyNonNullValue<LogicalTypeID::LIST>(vector, value, pos, |
| 386 | fallbackExtensionTypes); |
| 387 | } |
| 388 | |
| 389 | template<> |
| 390 | void ArrowRowBatch::templateCopyNonNullValue<LogicalTypeID::STRUCT>(ArrowVector* vector, |