Skip to main content

Module contract

Module contract 

Source
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-utilsarrow::wp_type_to_arrow)——那是「面向 sink 的 connector 工具」crate, 把线协议契约放在那里是定位倒置:按自我声明去找权威实现的人会找到 wp-arrowschema.rs/convert.rs 的 9 变体类型化前端),拿到的是另一套口径, 于2026-09-19 报出「wp-arrowwp-connector-utils 不一致」(wp-labs/warp-fusion#102)。

迁移状态:本模块已落地(A-2 2a),值层已随 2c 迁入(value); wp-connector-utilsarrow::wp_type_to_arrow / arrow::record 已改为转发到这里, 并经 wp-arrow 发布版进入生产(跨仓发布顺序见规格表 §5)。

§不要把本表与 crate::schema 混为一谈

crate::schema::WpDataType 是 9 变体的类型化前端,它的 ArrayList(inner)BigIntDecimal256(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 列类型(线协议契约口径)。