[ https://issues.apache.org/jira/browse/ARROW-13154?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ying Zhou updated ARROW-13154: ------------------------------ Description: Due to the following in builder_union.cc (Line 67-70) {color:#172b4d}{color} {code:java} type_id_to_children_.resize(union_type.max_type_code() + 1, nullptr); DCHECK_LT( type_id_to_children_.size(), static_cast<decltype(type_id_to_children_)::size_type>(UnionType::kMaxTypeCode));{code} {color:#172b4d} and type.cc (Line 640-644) {color} {code:java} uint8_t UnionType::max_type_code() const { return type_codes_.size() == 0 ? 0 : *std::max_element(type_codes_.begin(), type_codes_.end()); }{code} In practice type codes of the union type must always be below or equal to 125 which is not intended behavior. was: Due to the following in builder_union.cc (Line 67-70) {color:#172b4d}type_id_to_children_.resize(union_type.max_type_code() + 1, nullptr); DCHECK_LT( type_id_to_children_.size(), static_cast<decltype(type_id_to_children_)::size_type>(UnionType::kMaxTypeCode)); and type.cc (Line 640-644) uint8_t UnionType::max_type_code() const \{{color} return type_codes_.size() == 0 ? 0 : *std::max_element(type_codes_.begin(), type_codes_.end()); }{color} In practice type codes of the union type must always be below or equal to 125 which is not intended behavior. > [C++] Unions can not have 126 and 127 as type_codes > --------------------------------------------------- > > Key: ARROW-13154 > URL: https://issues.apache.org/jira/browse/ARROW-13154 > Project: Apache Arrow > Issue Type: Bug > Components: C++ > Reporter: Ying Zhou > Assignee: Ying Zhou > Priority: Minor > Fix For: 5.0.0 > > > Due to the following in builder_union.cc (Line 67-70) > > {color:#172b4d}{color} > {code:java} > type_id_to_children_.resize(union_type.max_type_code() + 1, nullptr); > DCHECK_LT( > type_id_to_children_.size(), > > static_cast<decltype(type_id_to_children_)::size_type>(UnionType::kMaxTypeCode));{code} > {color:#172b4d} > > and type.cc (Line 640-644) > {color} > {code:java} > uint8_t UnionType::max_type_code() const { > return type_codes_.size() == 0 > ? 0 > : *std::max_element(type_codes_.begin(), type_codes_.end()); > }{code} > > In practice type codes of the union type must always be below or equal to > 125 which is not intended behavior. -- This message was sent by Atlassian Jira (v8.3.4#803005)