Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support Arrow IPC Big Endian / Cross Endian #3459

Closed
alamb opened this issue Jan 5, 2023 · 0 comments · Fixed by #5301
Closed

Support Arrow IPC Big Endian / Cross Endian #3459

alamb opened this issue Jan 5, 2023 · 0 comments · Fixed by #5301
Labels
arrow Changes to the arrow crate enhancement Any new improvement worthy of a entry in the changelog

Comments

@alamb
Copy link
Contributor

alamb commented Jan 5, 2023

Is your feature request related to a problem or challenge? Please describe what you are trying to do.

The arrow-rs Arrow IPC implementation is tested thorougly on little endian platforms and works well 👍

However, it is not clear how well it will work on big endian systems and I don't think we have automated test coverage for that yet.

After #3427, it is quite clear that the arrow-rs support will not work well when the IPC stream is a different endianness to the host platform.

However I am not sure that it actually important to test and support cross endianness given the spec says
https://arrow.apache.org/docs/format/Columnar.html#byte-order-endianness

The main use case is exchanging RecordBatches between systems with the same Endianness. At first we will return an error when trying to read a Schema with an endianness that does not match the underlying system.

Currently the arrow-rs IPC reader does not attempt to convert endianess of the ipc streams, nor does it (always) error out when that endianess is different. It will error in some cases (like dictionaries #859 and Decimal arrays)

Describe the solution you'd like
I suggest throwing an error when source/target endianess is not the same to make it clear this is not supported

Then we can plan out such support if/when we ever want

The integration tests could offer a good starting point (there are bigendian files and the CI on github runs on little endian runners x86_64).

Describe alternatives you've considered
N/A
Additional context
Found while working on #3427

@alamb alamb added the enhancement Any new improvement worthy of a entry in the changelog label Jan 5, 2023
@alamb alamb changed the title Big Endian Arrow IPC Support Arrow IPC Big Endian / Cross Endian Jan 5, 2023
@alamb alamb added the arrow Changes to the arrow crate label Jan 5, 2023
pangiole added a commit to pangiole/arrow-rs that referenced this issue Jan 13, 2024
This commit implements the Byte Order (Endianness) recommendations we
could read from the Apache Arrow official specification (quoted here):

> _"At first we will return an error when trying to read a Schema
> with an endianness that does not match the underlying system."_

Resolves: apache#3459
pangiole added a commit to pangiole/arrow-rs that referenced this issue Jan 13, 2024
This commit implements the Byte Order (Endianness) recommendations we
could read from the Apache Arrow official specification (quoted here):

> _"At first we will return an error when trying to read a Schema
> with an endianness that does not match the underlying system."_

Resolves: apache#3459
pangiole added a commit to pangiole/arrow-rs that referenced this issue Jan 14, 2024
This commit implements the Byte Order (Endianness) recommendations we
could read from the Apache Arrow official specification (quoted here):

> _"At first we will return an error when trying to read a Schema
> with an endianness that does not match the underlying system."_

Resolves: apache#3459
tustvold pushed a commit that referenced this issue Jan 15, 2024
This commit implements the Byte Order (Endianness) recommendations we
could read from the Apache Arrow official specification (quoted here):

> _"At first we will return an error when trying to read a Schema
> with an endianness that does not match the underlying system."_

Resolves: #3459
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arrow Changes to the arrow crate enhancement Any new improvement worthy of a entry in the changelog
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant