Back to Blog

Delta Kernel Rust 贡献记录:#1787 / #1727 / #1788(已提交待评审)

Open Source
Rust
Delta Lake
Issue Tracking
GitHub
AI

记录我在 delta-io/delta-kernel-rs 连续完成的 3 个 issue:committer tracing、checkpoint 示例简化、dataSkippingStringPrefixLength 支持。

Published on 2/10/2026

这篇先记录“已经完成并提交 PR”的工作,不等 merge 再写,确保过程可追踪。

🔍 分析 (Analyze)

这三单都属于“低风险、可快速评审”的改进型任务:

  • #1787:增强可观测性,不改业务语义;
  • #1727:去掉示例中的冗余/unsafe 路径,收敛到统一 API;
  • #1788:补齐协议配置项在 Kernel 写路径里的落地,属于能力对齐。

共同目标是减少维护成本、提高可调试性,并让行为更贴近 Delta 协议预期。

📍 定位 (Locate)

核心改动位置:

  • uc-catalog/src/committer.rs(提交/发布 tracing)
  • kernel/examples/checkpoint-table/src/main.rs(示例写 checkpoint 逻辑)
  • kernel/src/table_properties.rs
  • kernel/src/table_properties/deserialize.rs
  • kernel/src/transaction/mod.rs
  • kernel/src/engine/default/{mod.rs,parquet.rs,stats.rs}

🛠️ 执行 (Execute)

  • #1787:给 UCCommitter::commit/publish 增加 span 与关键字段日志,覆盖 staged commit、UC commit、publish copy 等关键步骤。
  • #1727:示例默认走 Tokio multi-thread executor,真实写 checkpoint 改用 snapshot.checkpoint(&engine),去除重复实现路径。
  • #1788:
    • 解析 delta.dataSkippingStringPrefixLength
    • 将 prefix length 从 table properties 传递到 WriteContext、Parquet 写入与 collect_stats
    • 字符串 min/max 截断逻辑改为使用传入长度;
    • 补单测覆盖解析与自定义 prefix 截断。

本地验证包含 cargo fmt --all 和针对性 cargo test -p delta_kernel ...

✅ 总结 (Summary)

这轮不是“堆功能”,而是把可维护性和协议一致性往前推了一步:

  • 诊断链路更清晰(tracing);
  • 示例更稳健、可作为推荐用法;
  • 字符串统计前缀长度支持表级配置,避免硬编码 32 的行为偏差。

后续按 reviewer 反馈继续小步迭代,优先追求高通过率和低返工。