This is an automated email from the ASF dual-hosted git repository.
JingsongLi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/paimon-rust.git
The following commit(s) were added to refs/heads/main by this push:
new 2b90a25 feat(spec): implement Display for DataFileMeta (#394)
2b90a25 is described below
commit 2b90a25b31ec045cf646a347b28e35bb830b47c0
Author: WenjunMin <[email protected]>
AuthorDate: Fri Jun 19 20:35:51 2026 +0800
feat(spec): implement Display for DataFileMeta (#394)
---
crates/paimon/src/spec/data_file.rs | 92 ++++++++++++++++++++++++++++++++++++-
1 file changed, 90 insertions(+), 2 deletions(-)
diff --git a/crates/paimon/src/spec/data_file.rs
b/crates/paimon/src/spec/data_file.rs
index 7fa1e8b..198a344 100644
--- a/crates/paimon/src/spec/data_file.rs
+++ b/crates/paimon/src/spec/data_file.rs
@@ -109,8 +109,35 @@ pub struct DataFileMeta {
}
impl Display for DataFileMeta {
- fn fmt(&self, _: &mut Formatter<'_>) -> std::fmt::Result {
- todo!()
+ fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
+ write!(
+ f,
+ "DataFileMeta{{fileName={}, fileSize={}, rowCount={},
embeddedIndex={:?}, \
+ minKey={:?}, maxKey={:?}, keyStats={:?}, valueStats={:?}, \
+ minSequenceNumber={}, maxSequenceNumber={}, schemaId={},
level={}, \
+ extraFiles={:?}, creationTime={:?}, deleteRowCount={:?},
fileSource={:?}, \
+ valueStatsCols={:?}, externalPath={:?}, firstRowId={:?},
writeCols={:?}}}",
+ self.file_name,
+ self.file_size,
+ self.row_count,
+ self.embedded_index,
+ self.min_key,
+ self.max_key,
+ self.key_stats,
+ self.value_stats,
+ self.min_sequence_number,
+ self.max_sequence_number,
+ self.schema_id,
+ self.level,
+ self.extra_files,
+ self.creation_time,
+ self.delete_row_count,
+ self.file_source,
+ self.value_stats_cols,
+ self.external_path,
+ self.first_row_id,
+ self.write_cols,
+ )
}
}
@@ -120,3 +147,64 @@ impl DataFileMeta {
self.first_row_id.map(|fid| (fid, fid + self.row_count - 1))
}
}
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn display_includes_all_data_file_meta_fields() {
+ let stats = BinaryTableStats::empty();
+ let file = DataFileMeta {
+ file_name: "data-1.parquet".to_string(),
+ file_size: 42,
+ row_count: 7,
+ min_key: vec![1],
+ max_key: vec![9],
+ key_stats: stats.clone(),
+ value_stats: stats,
+ min_sequence_number: 3,
+ max_sequence_number: 5,
+ schema_id: 11,
+ level: 2,
+ extra_files: vec!["extra-1".to_string()],
+ creation_time: DateTime::from_timestamp_millis(1_234),
+ delete_row_count: Some(1),
+ embedded_index: Some(vec![4, 5]),
+ file_source: Some(6),
+ value_stats_cols: Some(vec!["v".to_string()]),
+ external_path: Some("s3://bucket/data-1.parquet".to_string()),
+ first_row_id: Some(100),
+ write_cols: Some(vec!["k".to_string(), "v".to_string()]),
+ };
+
+ let display = file.to_string();
+ for expected in [
+ "DataFileMeta{fileName=data-1.parquet",
+ "fileSize=42",
+ "rowCount=7",
+ "embeddedIndex=Some([4, 5])",
+ "minKey=[1]",
+ "maxKey=[9]",
+ "keyStats=BinaryTableStats",
+ "valueStats=BinaryTableStats",
+ "minSequenceNumber=3",
+ "maxSequenceNumber=5",
+ "schemaId=11",
+ "level=2",
+ "extraFiles=[\"extra-1\"]",
+ "creationTime=Some(1970-01-01T00:00:01.234Z)",
+ "deleteRowCount=Some(1)",
+ "fileSource=Some(6)",
+ "valueStatsCols=Some([\"v\"])",
+ "externalPath=Some(\"s3://bucket/data-1.parquet\")",
+ "firstRowId=Some(100)",
+ "writeCols=Some([\"k\", \"v\"])",
+ ] {
+ assert!(
+ display.contains(expected),
+ "Display output missing `{expected}`: {display}"
+ );
+ }
+ }
+}