@@ -34,9 +34,8 @@ constexpr const char* kArrowExtensionName = "ARROW:extension:name";
3434constexpr const char * kArrowExtensionMetadata = " ARROW:extension:metadata" ;
3535
3636// Convert an Iceberg type to Arrow schema. Return value is Nanoarrow error code.
37- ArrowErrorCode ConvertToArrowSchema (const Type& type, ArrowSchema* schema, bool optional,
38- std::string_view name = " " ,
39- std::optional<int32_t > field_id = std::nullopt ) {
37+ ArrowErrorCode ToArrowSchema (const Type& type, bool optional, std::string_view name,
38+ std::optional<int32_t > field_id, ArrowSchema* schema) {
4039 ArrowBuffer metadata_buffer;
4140 NANOARROW_RETURN_NOT_OK (ArrowMetadataBuilderInit (&metadata_buffer, nullptr ));
4241 if (field_id.has_value ()) {
@@ -55,32 +54,32 @@ ArrowErrorCode ConvertToArrowSchema(const Type& type, ArrowSchema* schema, bool
5554
5655 for (size_t i = 0 ; i < fields.size (); i++) {
5756 const auto & field = fields[i];
58- NANOARROW_RETURN_NOT_OK (ConvertToArrowSchema (*field.type (), schema-> children [i] ,
59- field.optional (), field.name (),
60- field. field_id () ));
57+ NANOARROW_RETURN_NOT_OK (ToArrowSchema (*field.type (), field. optional () ,
58+ field.name (), field.field_id (),
59+ schema-> children [i] ));
6160 }
6261 } break ;
6362 case TypeId::kList : {
6463 NANOARROW_RETURN_NOT_OK (ArrowSchemaInitFromType (schema, NANOARROW_TYPE_LIST));
6564
6665 const auto & list_type = static_cast <const ListType&>(type);
6766 const auto & elem_field = list_type.fields ()[0 ];
68- NANOARROW_RETURN_NOT_OK (ConvertToArrowSchema (
69- * elem_field.type (), schema-> children [ 0 ], elem_field.optional (),
70- elem_field. name (), elem_field. field_id () ));
67+ NANOARROW_RETURN_NOT_OK (ToArrowSchema (*elem_field. type (), elem_field. optional (),
68+ elem_field.name (), elem_field.field_id (),
69+ schema-> children [ 0 ] ));
7170 } break ;
7271 case TypeId::kMap : {
7372 NANOARROW_RETURN_NOT_OK (ArrowSchemaInitFromType (schema, NANOARROW_TYPE_MAP));
7473
7574 const auto & map_type = static_cast <const MapType&>(type);
7675 const auto & key_field = map_type.key ();
7776 const auto & value_field = map_type.value ();
78- NANOARROW_RETURN_NOT_OK (ConvertToArrowSchema (
79- * key_field.type (), schema-> children [ 0 ]-> children [ 0 ], key_field.optional (),
80- key_field. name (), key_field. field_id () ));
81- NANOARROW_RETURN_NOT_OK (ConvertToArrowSchema (
82- * value_field.type (), schema-> children [ 0 ]-> children [ 1 ], value_field.optional (),
83- value_field. name (), value_field. field_id () ));
77+ NANOARROW_RETURN_NOT_OK (ToArrowSchema (*key_field. type (), key_field. optional (),
78+ key_field.name (), key_field.field_id (),
79+ schema-> children [ 0 ]-> children [ 0 ] ));
80+ NANOARROW_RETURN_NOT_OK (ToArrowSchema (*value_field. type (), value_field. optional (),
81+ value_field.name (), value_field.field_id (),
82+ schema-> children [ 0 ]-> children [ 1 ] ));
8483 } break ;
8584 case TypeId::kBoolean :
8685 NANOARROW_RETURN_NOT_OK (ArrowSchemaInitFromType (schema, NANOARROW_TYPE_BOOL));
@@ -171,7 +170,8 @@ expected<void, Error> ToArrowSchema(const Schema& schema, ArrowSchema* out) {
171170 .message = " Output Arrow schema cannot be null" }};
172171 }
173172
174- if (ArrowErrorCode errorCode = ConvertToArrowSchema (schema, out, " " );
173+ if (ArrowErrorCode errorCode = ToArrowSchema (schema, /* optional=*/ false , /* name=*/ " " ,
174+ /* field_id=*/ std::nullopt , out);
175175 errorCode != NANOARROW_OK) {
176176 return unexpected<Error>{
177177 {.kind = ErrorKind::kInvalidSchema ,
0 commit comments