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

Method Deserialize

cpp/src/arrow/extension/opaque.cc:64–94  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

62}
63
64Result<std::shared_ptr<DataType>> OpaqueType::Deserialize(
65 std::shared_ptr<DataType> storage_type, const std::string& serialized_data) const {
66 rapidjson::Document document;
67 const auto& parsed = document.Parse(serialized_data.data(), serialized_data.length());
68 if (parsed.HasParseError()) {
69 return Status::Invalid("Invalid serialized JSON data for OpaqueType: ",
70 rapidjson::GetParseError_En(parsed.GetParseError()), ": ",
71 serialized_data);
72 } else if (!document.IsObject()) {
73 return Status::Invalid("Invalid serialized JSON data for OpaqueType: not an object");
74 }
75 if (!document.HasMember("type_name")) {
76 return Status::Invalid(
77 "Invalid serialized JSON data for OpaqueType: missing type_name");
78 } else if (!document.HasMember("vendor_name")) {
79 return Status::Invalid(
80 "Invalid serialized JSON data for OpaqueType: missing vendor_name");
81 }
82
83 const auto& type_name = document["type_name"];
84 const auto& vendor_name = document["vendor_name"];
85 if (!type_name.IsString()) {
86 return Status::Invalid(
87 "Invalid serialized JSON data for OpaqueType: type_name is not a string");
88 } else if (!vendor_name.IsString()) {
89 return Status::Invalid(
90 "Invalid serialized JSON data for OpaqueType: vendor_name is not a string");
91 }
92
93 return opaque(std::move(storage_type), type_name.GetString(), vendor_name.GetString());
94}
95
96std::shared_ptr<Array> OpaqueType::MakeArray(std::shared_ptr<ArrayData> data) const {
97 DCHECK_EQ(data->type->id(), Type::EXTENSION);

Callers

nothing calls this directly

Calls 6

opaqueFunction · 0.85
InvalidFunction · 0.50
ParseMethod · 0.45
dataMethod · 0.45
lengthMethod · 0.45
GetStringMethod · 0.45

Tested by

no test coverage detected