[
https://issues.apache.org/jira/browse/ARROW-17783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17622379#comment-17622379
]
Antoine Pitrou commented on ARROW-17783:
----------------------------------------
The idiomatic to work around the alignment issue is to use {{memcpy}}. We have
dedicated functions for that:
https://github.com/apache/arrow/blob/master/cpp/src/arrow/util/ubsan.h
Note that modern CPUs don't mind unaligned loads of scalar types. It's just
that it's UB in C/C++.
> [C++] Aggregate kernel should not mandate alignment
> ---------------------------------------------------
>
> Key: ARROW-17783
> URL: https://issues.apache.org/jira/browse/ARROW-17783
> Project: Apache Arrow
> Issue Type: Bug
> Components: C++
> Affects Versions: 6.0.0, 8.0.0
> Reporter: Yifei Yang
> Assignee: Weston Pace
> Priority: Major
> Attachments: flight-alignment-test.zip
>
>
> When using arrow's aggregate kernel with table transferred from arrow flight
> (DoGet), it may crash at arrow::util::CheckAlignment(). However using
> original data it works well, also if I first serialize the transferred table
> into bytes then recreate an arrow table using the bytes, it works well.
> "flight-alignment-test" attached is the minimal test that can produce the
> issue, which basically does "sum(total_revenue) group by l_suppkey" using the
> table from "DoGet()". ("DummyNode" is just used to be the producer of the
> aggregate node as the producer is required to create the aggregate node)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)