MCPcopy Create free account
hub / github.com/apache/arrow / FieldToNode

Function FieldToNode

cpp/src/parquet/arrow/schema.cc:316–521  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

314}
315
316Status FieldToNode(const std::string& name, const std::shared_ptr<Field>& field,
317 const WriterProperties& properties,
318 const ArrowWriterProperties& arrow_properties, NodePtr* out) {
319 std::shared_ptr<const LogicalType> logical_type = LogicalType::None();
320 ParquetType::type type;
321 Repetition::type repetition = RepetitionFromNullable(field->nullable());
322 int field_id = FieldIdFromMetadata(field->metadata());
323
324 int length = -1;
325 int precision = -1;
326 int scale = -1;
327
328 switch (field->type()->id()) {
329 case ArrowTypeId::NA: {
330 type = ParquetType::INT32;
331 logical_type = LogicalType::Null();
332 if (repetition != Repetition::OPTIONAL) {
333 return Status::Invalid("NullType Arrow field must be nullable");
334 }
335 } break;
336 case ArrowTypeId::BOOL:
337 type = ParquetType::BOOLEAN;
338 break;
339 case ArrowTypeId::UINT8:
340 type = ParquetType::INT32;
341 logical_type = LogicalType::Int(8, false);
342 break;
343 case ArrowTypeId::INT8:
344 type = ParquetType::INT32;
345 logical_type = LogicalType::Int(8, true);
346 break;
347 case ArrowTypeId::UINT16:
348 type = ParquetType::INT32;
349 logical_type = LogicalType::Int(16, false);
350 break;
351 case ArrowTypeId::INT16:
352 type = ParquetType::INT32;
353 logical_type = LogicalType::Int(16, true);
354 break;
355 case ArrowTypeId::UINT32:
356 if (properties.version() == ::parquet::ParquetVersion::PARQUET_1_0) {
357 type = ParquetType::INT64;
358 } else {
359 type = ParquetType::INT32;
360 logical_type = LogicalType::Int(32, false);
361 }
362 break;
363 case ArrowTypeId::INT32:
364 type = ParquetType::INT32;
365 break;
366 case ArrowTypeId::UINT64:
367 type = ParquetType::INT64;
368 logical_type = LogicalType::Int(64, false);
369 break;
370 case ArrowTypeId::INT64:
371 type = ParquetType::INT64;
372 break;
373 case ArrowTypeId::FLOAT:

Callers 5

ListToNodeFunction · 0.85
MapToNodeFunction · 0.85
VariantToNodeFunction · 0.85
StructToNodeFunction · 0.85
ToParquetSchemaFunction · 0.85

Calls 15

RepetitionFromNullableFunction · 0.85
FieldIdFromMetadataFunction · 0.85
StringClass · 0.85
GetTimestampMetadataFunction · 0.85
StructToNodeFunction · 0.85
ListToNodeFunction · 0.85
JSONClass · 0.85
UUIDClass · 0.85
VariantToNodeFunction · 0.85
MapToNodeFunction · 0.85
nullableMethod · 0.80

Tested by

no test coverage detected