wp_arrow/lib.rs
1//! wp-model ↔ Apache Arrow 工具库:schema 映射、值/列转换、IPC 帧。
2//!
3//! # 定位(改映射前先读这段)
4//!
5//! **本 crate 是「wparse(sink 侧)↔ wfusion(接收侧)Arrow 列类型契约」的归属地。**
6//! 契约的单一事实来源(规格表 + 已知差异登记)在
7//! [`wp-reactor/docs/design/arrow-type-mapping.md`](https://github.com/wp-labs/wp-reactor/blob/main/docs/design/arrow-type-mapping.md),
8//! 本 crate 是它的**实现落点**。
9//!
10//! # 当前状态(2026-09,A-2 已完成 2a/2b/2c)
11//!
12//! - **契约的两层都在本 crate 的 [`contract`]**:列类型表([`contract::wp_type_to_arrow`],穷尽
13//! `wp_model_core::model::DataType` 的 37 个变体)与值层([`contract::value`],`DataRecord` → 列)。
14//! - **生产路径**:`wp-connector-utils` 的 `arrow::wp_type_to_arrow` 与 `arrow::record`
15//! 已改为**转发**到这里(公开路径与签名不变),经 `wf-runtime` 到达生产。
16//! - [`schema`] / [`convert`](9 变体的**类型化前端**,`Array` → `List`、`BigInt` → `Decimal256`)
17//! **不是契约**,仍不在生产路径上(全家族生产调用 0 处)。
18//!
19//! ⚠️ **不要用 [`schema`] / [`convert`] 的口径去判断线协议是否一致** —— 契约看 [`contract`]。
20//! 历史上 `wp-labs/warp-fusion#102` 正是「按自我声明找权威实现 → 找到类型化前端 →
21//! 报口径不一致」这一误判。
22//!
23//! 完整迁移记录见规格表 A-2 一节。
24
25pub mod contract;
26pub mod convert;
27pub mod error;
28pub mod ipc;
29pub mod schema;
30
31pub use contract::wp_type_to_arrow;