| 77 | } |
| 78 | |
| 79 | bool IsNullDenseUnion(const ArrayData& data, int64_t i) { |
| 80 | auto* union_type = checked_cast<const DenseUnionType*>(data.type.get()); |
| 81 | const auto* types = reinterpret_cast<const int8_t*>(data.buffers[1]->data()); |
| 82 | const int child_id = union_type->child_ids()[types[data.offset + i]]; |
| 83 | const auto* offsets = reinterpret_cast<const int32_t*>(data.buffers[2]->data()); |
| 84 | const int64_t child_offset = offsets[data.offset + i]; |
| 85 | return data.child_data[child_id]->IsNull(child_offset); |
| 86 | } |
| 87 | |
| 88 | bool IsNullRunEndEncoded(const ArrayData& data, int64_t i) { |
| 89 | return ArraySpan(data).IsNullRunEndEncoded(i); |