[ 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}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. was: Due to the following in [builder_union.cc|http://builder_union.cc/] (Line 67-70) {color:#172b4d}{color:#9cdcfe}type_id_to_children_{color}.{color:#dcdcaa}resize{color}({color:#9cdcfe}union_type{color}.{color:#dcdcaa}max_type_code{color}() + {color:#b5cea8}1{color}, {color:#569cd6}nullptr{color});{color} {color:#172b4d} {color:#dcdcaa}DCHECK_LT{color}({color} {color:#172b4d} {color:#9cdcfe}type_id_to_children_{color}.{color:#dcdcaa}size{color}(),{color} {color:#172b4d} {color:#569cd6}static_cast{color}<{color:#569cd6}decltype{color}(type_id_to_children_)::size_type>({color:#4ec9b0}UnionType{color}::kMaxTypeCode));{color} {color:#172b4d} {color} {color:#172b4d} and [type.cc|http://type.cc/] (Line 640-644){color} {color:#172b4d} {color:#569cd6}uint8_t{color} {color:#4ec9b0}UnionType{color}::{color:#dcdcaa}max_type_code{color}() {color:#569cd6}const{color} {{color} {color:#172b4d} {color:#c586c0}return{color} {color:#9cdcfe}type_codes_{color}.{color:#dcdcaa}size{color}() == {color:#b5cea8}0{color}{color} {color:#172b4d} ? {color:#b5cea8}0{color}{color} {color:#172b4d} : *{color:#4ec9b0}std{color}::{color:#dcdcaa}max_element{color}({color:#9cdcfe}type_codes_{color}.{color:#dcdcaa}begin{color}(), {color:#9cdcfe}type_codes_{color}.{color:#dcdcaa}end{color}());{color} {color:#172b4d} }{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}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. -- This message was sent by Atlassian Jira (v8.3.4#803005)