Expand description
线协议契约:wp_model_core::model::DataType → Arrow 列类型,以及值层(DataRecord → 列)。
这是 wparse(sink 侧)↔ wfusion(接收侧)Arrow 列类型契约的实现,
规格表见 wp-reactor/docs/design/arrow-type-mapping.md(§3 是逐行口径表,§4 是已知差异登记)。
两层:
wp_type_to_arrow(本模块)—— 表:某类型该是什么 Arrow 列;value—— 值:值怎么写进那一列(encode_record/encode_records)。- 两层都按 Arrow 列类型说事,所以口径只有一处:先查表得到列类型,值层只认列类型。
§归属(A-2)
本模块是契约实现的目标落点。迁移前它住在 wp-connector-utils
(arrow::wp_type_to_arrow)——那是「面向 sink 的 connector 工具」crate,
把线协议契约放在那里是定位倒置:按自我声明去找权威实现的人会找到
wp-arrow(schema.rs/convert.rs 的 9 变体类型化前端),拿到的是另一套口径,
于2026-09-19 报出「wp-arrow 与 wp-connector-utils 不一致」(wp-labs/warp-fusion#102)。
迁移状态:本模块已落地(A-2 2a),值层已随 2c 迁入(value);
wp-connector-utils 的 arrow::wp_type_to_arrow / arrow::record 已改为转发到这里,
并经 wp-arrow 发布版进入生产(跨仓发布顺序见规格表 §5)。
§不要把本表与 crate::schema 混为一谈
crate::schema::WpDataType 是 9 变体的类型化前端,它的 Array → List(inner)、
BigInt → Decimal256(39,0) 是它自己的口径(保留结构化/数值语义),与线协议无关
(规格表 §1 A-0、§4 DIV-2/DIV-3)。契约口径是保守的:结构化字段一律 Utf8(JSON 文本),
任意精度整数一律十进制 Utf8。
Re-exports§
pub use value::encode_record;pub use value::encode_records;
Modules§
- value
- 线协议契约的值层:
DataRecord→ 列(按 Arrow 列类型派发)。
Functions§
- wp_
type_ to_ arrow wp_model_core::model::DataType→ Arrow 列类型(线协议契约口径)。