Skip to content

Test coverage: aarch64 (and big-endian) — alignment/endianness class is x86_64-only #242

Description

@ChronicallyJD

Gap

All testing is x86_64. There is no aarch64 (Graviton / Ampere / Apple Silicon) coverage and no big-endian coverage, in either the local matrix or CI.

This matters concretely, not theoretically:

  • The clang ASAN+UBSAN gate exists because Fuzz the Parquet decoder, and fix the first defect it found (#214) #225 was an unaligned varlena-header read that is benign on x86_64. aarch64 has stricter alignment and can fault where x86 silently tolerates, so the exact class the sanitizer gate was built for is the class only x86 is tested against.
  • The Parquet/Arrow decoders do explicit byte-order handling (native_parquet_flba.sh: big-endian FLBA, little-endian widening), and the native on-disk encoding descriptor is host-endian (columnar.h:56). An endianness bug is untestable on the current fleet.

Why this blocks a public release

aarch64 is now a mainstream deployment target (a large share of cloud Postgres). Shipping "supported" while never having run there, on the very alignment class already found once, is a real regression risk. Big-endian is lower priority (rare) and acceptable-with-caveat.

Suggested acceptance criteria

  • Run the suite matrix on an aarch64 runner (GitHub ubuntu-24.04-arm or equivalent), at minimum the assert build + core write/read/encode/parquet suites.
  • Document big-endian as untested if not covered.

Found in a release-readiness review.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions