[Feature] Support writing ARRAY<BLOB> fields
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 35/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Lĩnh vực
- data-engineering, databases
Hướng nghiên cứu
Start with the ARRAY reader work from #387/#388, then trace BlobFormatWriter, schema validation, the data-evolution write path, and append/data-evolution compaction. Use the BLOB file specification as the format reference. Done means validation, null and descriptor handling, writing, compaction, round-trip tests, and Java/Python compatibility tests all pass.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Search before asking
- I searched in the issues and found nothing similar.
Motivation
Java Paimon (apache/paimon#8181) and PyPaimon can write top-level ARRAY<BLOB> columns to dedicated .blob files. #387 (PR #388) adds read-only ARRAY<BLOB> support to Paimon C++, but C++ table creation, writes, and append compaction still reject these fields. As a result, C++ users cannot write ordered collections of multimodal objects, such as the frames or images of one sample, to a Paimon table.
Solution
Add Java-compatible write support for top-level ARRAY<BLOB> fields declared with blob-field:
- Schema validation: Match Java
SchemaValidationandColumnDirectiveUtils:- allow
ARRAY<BLOB>only as a top-level field declared withblob-field; - reject it for
blob-descriptor-field, partition keys, and tables without data evolution; - reject
BLOBelements nested more deeply, such asARRAY<ARRAY<BLOB>>.
- allow
- Blob format writer: Extend
BlobFormatWriterto encode eachARRAY<BLOB>row as the nested payload defined in the BLOB file spec. The payload contains:- array magic
1094861634; - version 1;
- element count;
- concatenated element data;
- Delta-Varint element length index;
- index length.
- array magic
- Null handling: Distinguish null arrays (outer length
-1), empty arrays (element count0), null elements (element length-1), and empty elements (element length0). - Element sources: Support both inline raw bytes and
BlobDescriptorelements. Descriptor elements are materialized from their referenced storage when written, as Java does. - Write path: Route
ARRAY<BLOB>fields to dedicated blob files in the data-evolution write path, and remove the write-side rejection for them. - Compaction: Support
ARRAY<BLOB>in append and data-evolution compaction, including placeholder (-2) handling across field groups. - Tests:
- add unit tests for payload encoding, null/empty cases, and error handling;
- add round-trip tests with the C++ reader from #387;
- add Java/Python cross-compatibility tests, with C++ writing and Java/Python reading.
Anything else?
- Depends on #387 / #388 for the reader side.
MAP<K, BLOB>write support andARRAY<BLOB>in primary-key managed BLOB storage (#204) are out of scope and can be tracked separately.- No public API changes are expected. The storage format follows the existing Java spec.
Are you willing to submit a PR?
- I'm willing to submit a PR!
- Ngôn ngữ chính
- C++
- Star
- 65
- Fork
- 29
- Merge trung bình
- 2 ngày 5 giờ
- Pull request đã merge (30 ngày)
- 77
Chuẩn bị môi trường
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/paimon-cpp
-
[Feature] dictionary encoded binary supportCó thể đã có người làm @zhangweilst đã nhận 4 ngày trước. Đang mởenhancement
apache/paimon-cpp#381 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature] Bypass manifest lists on exact snapshot live-entry cache hitsCó thể đã có người làm @wangyong9999 đã nhận 4 ngày trước. Đang mở
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
apache/paimon-cpp#375 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature] Support vector and full-text search in File IndexCó thể đã có người làm @zjw1111 đã nhận 4 ngày trước. Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 45/100
apache/paimon-cpp#361 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature] Support 64-bit deletion vectors in Paimon C++Có thể đã có người làm @lszskye đã nhận 4 ngày trước. Đang mởenhancement
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 45/100
apache/paimon-cpp#325 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[Feature] Support Vortex file formatCó thể đã có người làm @zhouyc-ali đã nhận 4 ngày trước. Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
apache/paimon-cpp#319 · 1 reaction · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của apache/paimon-cpp
Issue tương tự
-
[meshoptimizer] update to 1.3Đang mởcategory:port-update
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
MicroInterpreter fails to compile with -Werror=address due to &context_ in TF_LITE_ENSURE_OKĐang mở
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 88/100
tensorflow/tflite-micro#3784 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
agentic-workflows automation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
tenstorrent/tt-metal#57946 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
aristocratos/btop#1857 ·
Maintainer thường phản hồi trong vòng 3 ngày