Yang Xu created AVRO-2923: ----------------------------- Summary: GenericDatum::logicalType() API should return the logical type corresponing to one of the constituent types of the union Key: AVRO-2923 URL: https://issues.apache.org/jira/browse/AVRO-2923 Project: Apache Avro Issue Type: Bug Components: c++ Affects Versions: 1.10.0 Reporter: Yang Xu
According to the avro document, GenericDatum::logicalType() API should behave Just like GenericDatum::type() or GenericDatum::value() APIs to return the logical type corresponing to one of the constituent types of the union When it was a Union type. {code:cpp} inline Type GenericDatum::type() const { return (type_ == AVRO_UNION) ? #if __cplusplus >= 201703L std::any_cast<GenericUnion>(&value_)->datum().type() : #else boost::any_cast<GenericUnion>(&value_)->datum().type() : #endif type_; } template<typename T> T& GenericDatum::value() { return (type_ == AVRO_UNION) ? #if __cplusplus >= 201703L std::any_cast<GenericUnion>(&value_)->datum().value<T>() : *std::any_cast<T>(&value_); #else boost::any_cast<GenericUnion>(&value_)->datum().value<T>() : *boost::any_cast<T>(&value_); #endif } {code} while logicalType api was like this: {code:cpp} inline LogicalType GenericDatum::logicalType() const { return logicalType_; } {code} it should also do the GenericUnion check -- This message was sent by Atlassian Jira (v8.3.4#803005)