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

Function GetSchema

cpp/src/arrow/ipc/metadata_internal.cc:1441–1468  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1439// ----------------------------------------------------------------------
1440
1441Status GetSchema(const void* opaque_schema, DictionaryMemo* dictionary_memo,
1442 std::shared_ptr<Schema>* out) {
1443 auto schema = static_cast<const flatbuf::Schema*>(opaque_schema);
1444 CHECK_FLATBUFFERS_NOT_NULL(schema, "schema");
1445 CHECK_FLATBUFFERS_NOT_NULL(schema->fields(), "Schema.fields");
1446 int num_fields = static_cast<int>(schema->fields()->size());
1447
1448 FieldPosition field_pos;
1449
1450 std::vector<std::shared_ptr<Field>> fields(num_fields);
1451 for (int i = 0; i < num_fields; ++i) {
1452 const flatbuf::Field* field = schema->fields()->Get(i);
1453 // XXX I don't think this check is necessary (AP)
1454 CHECK_FLATBUFFERS_NOT_NULL(field, "DictionaryEncoding.indexType");
1455 RETURN_NOT_OK(
1456 FieldFromFlatbuffer(field, field_pos.child(i), dictionary_memo, &fields[i]));
1457 }
1458
1459 std::shared_ptr<KeyValueMetadata> metadata;
1460 ARROW_ASSIGN_OR_RAISE(metadata,
1461 internal::GetKeyValueMetadata(schema->custom_metadata()));
1462 // set endianness using the value in flatbuf schema
1463 auto endianness = schema->endianness() == flatbuf::Endianness::Endianness_Little
1464 ? Endianness::Little
1465 : Endianness::Big;
1466 *out = ::arrow::schema(std::move(fields), endianness, metadata);
1467 return Status::OK();
1468}
1469
1470Status GetTensorMetadata(const Buffer& metadata, std::shared_ptr<DataType>* type,
1471 std::vector<int64_t>* shape, std::vector<int64_t>* strides,

Callers 2

UnpackSchemaMessageFunction · 0.70
ReadSchemaFunction · 0.70

Calls 11

FieldFromFlatbufferFunction · 0.85
GetKeyValueMetadataFunction · 0.85
childMethod · 0.80
ARROW_ASSIGN_OR_RAISEFunction · 0.70
schemaFunction · 0.70
OKFunction · 0.50
fieldsMethod · 0.45
sizeMethod · 0.45
GetMethod · 0.45
custom_metadataMethod · 0.45
endiannessMethod · 0.45

Tested by

no test coverage detected