A big-endian data variable registers, then every query fails: Byte-swapped arrays not supported

Đang mở Phù hợp với người mới
#288 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
72/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
numpy, python
Lĩnh vực
backend, databases

Hướng nghiên cứu

Bắt đầu từ đoạn mã chuyển đổi các giá trị của một khối dữ liệu thành cột Arrow; issue không nêu tên tệp hay bài kiểm thử, nên hãy tìm phần chuyển đổi đó và đọc các nơi gọi nó. Tái hiện vấn đề bằng Dataset big-endian và truy vấn được cung cấp, sau đó kiểm tra các bài kiểm thử gần đó về chuyển đổi Arrow. Hoàn tất khi truy vấn chạy thành công với các giá trị đã hoán đổi byte và vẫn hoạt động với các giá trị vốn đã theo thứ tự byte của máy.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

bug

A Dataset whose data variable is big-endian, as a NetCDF file written on a big-endian machine, or some FITS or binary files, can be, registers without error, and then every query on it fails.

import numpy as np, xarray as xr, xarray_sql as xql

ds = xr.Dataset({"w": (("a",), np.zeros(3, ">f8"))}, coords={"a": np.arange(3)})
ctx = xql.Context()
ctx.from_dataset("t", ds)
ctx.sql("SELECT * FROM t").to_pandas()

On main:

DataFusion error: FFI error: Execution error: Error reading batch from stream: ArrowNotImplementedError: Byte-swapped arrays not supported

pyarrow can't make an array from a byte-swapped NumPy array. With #275, such a Dataset is read lazily, as on main, so it fails the same way.

Expected: the query works. One fix is to convert the values to the machine's byte order (values.astype(values.dtype.newbyteorder("="))) when making a block's Arrow column. That costs a copy, which an array in the machine's byte order doesn't need.

Ngôn ngữ chính
Python
Star
142
Fork
19
Merge trung bình
3 ngày 47 phút
Pull request đã merge (30 ngày)
8

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của xqlsystems/xarray-sql

Tất cả issue của xqlsystems/xarray-sql

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.