Skip to content

Commit d45f451

Browse files
committed
fix: set key_metadata to Null by default
1 parent 2e0b646 commit d45f451

File tree

6 files changed

+22
-19
lines changed

6 files changed

+22
-19
lines changed

crates/iceberg/src/expr/visitors/expression_evaluator.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ mod tests {
338338
nan_value_counts: HashMap::new(),
339339
lower_bounds: HashMap::new(),
340340
upper_bounds: HashMap::new(),
341-
key_metadata: vec![],
341+
key_metadata: Some(vec![]),
342342
split_offsets: vec![],
343343
equality_ids: vec![],
344344
sort_order_id: None,
@@ -361,7 +361,7 @@ mod tests {
361361
nan_value_counts: HashMap::new(),
362362
lower_bounds: HashMap::new(),
363363
upper_bounds: HashMap::new(),
364-
key_metadata: vec![],
364+
key_metadata: Some(vec![]),
365365
split_offsets: vec![],
366366
equality_ids: vec![],
367367
sort_order_id: None,

crates/iceberg/src/expr/visitors/inclusive_metrics_evaluator.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1991,7 +1991,7 @@ mod test {
19911991
nan_value_counts: Default::default(),
19921992
lower_bounds: Default::default(),
19931993
upper_bounds: Default::default(),
1994-
key_metadata: vec![],
1994+
key_metadata: Some(vec![]),
19951995
split_offsets: vec![],
19961996
equality_ids: vec![],
19971997
sort_order_id: None,
@@ -2012,7 +2012,7 @@ mod test {
20122012
nan_value_counts: Default::default(),
20132013
lower_bounds: Default::default(),
20142014
upper_bounds: Default::default(),
2015-
key_metadata: vec![],
2015+
key_metadata: Some(vec![]),
20162016
split_offsets: vec![],
20172017
equality_ids: vec![],
20182018
sort_order_id: None,
@@ -2069,7 +2069,7 @@ mod test {
20692069
]),
20702070

20712071
column_sizes: Default::default(),
2072-
key_metadata: vec![],
2072+
key_metadata: Some(vec![]),
20732073
split_offsets: vec![],
20742074
equality_ids: vec![],
20752075
sort_order_id: None,
@@ -2095,7 +2095,7 @@ mod test {
20952095
upper_bounds: HashMap::from([(3, Datum::string("dC"))]),
20962096

20972097
column_sizes: Default::default(),
2098-
key_metadata: vec![],
2098+
key_metadata: Some(vec![]),
20992099
split_offsets: vec![],
21002100
equality_ids: vec![],
21012101
sort_order_id: None,
@@ -2122,7 +2122,7 @@ mod test {
21222122
upper_bounds: HashMap::from([(3, Datum::string("3str3"))]),
21232123

21242124
column_sizes: Default::default(),
2125-
key_metadata: vec![],
2125+
key_metadata: Some(vec![]),
21262126
split_offsets: vec![],
21272127
equality_ids: vec![],
21282128
sort_order_id: None,
@@ -2149,7 +2149,7 @@ mod test {
21492149
upper_bounds: HashMap::from([(3, Datum::string("イロハニホヘト"))]),
21502150

21512151
column_sizes: Default::default(),
2152-
key_metadata: vec![],
2152+
key_metadata: Some(vec![]),
21532153
split_offsets: vec![],
21542154
equality_ids: vec![],
21552155
sort_order_id: None,

crates/iceberg/src/io/object_cache.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,7 @@ mod tests {
278278
.file_size_in_bytes(100)
279279
.record_count(1)
280280
.partition(Struct::from_iter([Some(Literal::long(100))]))
281+
.key_metadata(None)
281282
.build()
282283
.unwrap(),
283284
)

crates/iceberg/src/scan.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1073,6 +1073,7 @@ mod tests {
10731073
.file_size_in_bytes(100)
10741074
.record_count(1)
10751075
.partition(Struct::from_iter([Some(Literal::long(100))]))
1076+
.key_metadata(None)
10761077
.build()
10771078
.unwrap(),
10781079
)

crates/iceberg/src/spec/manifest.rs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1044,7 +1044,7 @@ pub struct DataFile {
10441044
///
10451045
/// Implementation-specific key metadata for encryption
10461046
#[builder(default)]
1047-
pub(crate) key_metadata: Vec<u8>,
1047+
pub(crate) key_metadata: Option<Vec<u8>>,
10481048
/// field id: 132
10491049
/// element field id: 133
10501050
///
@@ -1134,7 +1134,7 @@ impl DataFile {
11341134
&self.upper_bounds
11351135
}
11361136
/// Get the Implementation-specific key metadata for the data file.
1137-
pub fn key_metadata(&self) -> &[u8] {
1137+
pub fn key_metadata(&self) -> &Option<Vec<u8>> {
11381138
&self.key_metadata
11391139
}
11401140
/// Get the split offsets of the data file.
@@ -1348,12 +1348,13 @@ mod _serde {
13481348
nan_value_counts: Some(to_i64_entry(value.nan_value_counts)?),
13491349
lower_bounds: Some(to_bytes_entry(value.lower_bounds)?),
13501350
upper_bounds: Some(to_bytes_entry(value.upper_bounds)?),
1351-
key_metadata: Some(serde_bytes::ByteBuf::from(value.key_metadata)),
1351+
key_metadata: value.key_metadata.map(serde_bytes::ByteBuf::from),
13521352
split_offsets: Some(value.split_offsets),
13531353
equality_ids: Some(value.equality_ids),
13541354
sort_order_id: value.sort_order_id,
13551355
})
13561356
}
1357+
13571358
pub fn try_into(
13581359
self,
13591360
partition_type: &StructType,
@@ -1411,7 +1412,7 @@ mod _serde {
14111412
.map(|v| parse_bytes_entry(v, schema))
14121413
.transpose()?
14131414
.unwrap_or_default(),
1414-
key_metadata: self.key_metadata.map(|v| v.to_vec()).unwrap_or_default(),
1415+
key_metadata: self.key_metadata.map(|v| v.to_vec()),
14151416
split_offsets: self.split_offsets.unwrap_or_default(),
14161417
equality_ids: self.equality_ids.unwrap_or_default(),
14171418
sort_order_id: self.sort_order_id,
@@ -1627,7 +1628,7 @@ mod tests {
16271628
nan_value_counts: HashMap::new(),
16281629
lower_bounds: HashMap::new(),
16291630
upper_bounds: HashMap::new(),
1630-
key_metadata: Vec::new(),
1631+
key_metadata: Some(Vec::new()),
16311632
split_offsets: vec![4],
16321633
equality_ids: Vec::new(),
16331634
sort_order_id: None,
@@ -1783,7 +1784,7 @@ mod tests {
17831784
nan_value_counts: HashMap::new(),
17841785
lower_bounds: HashMap::new(),
17851786
upper_bounds: HashMap::new(),
1786-
key_metadata: vec![],
1787+
key_metadata: Some(vec![]),
17871788
split_offsets: vec![4],
17881789
equality_ids: vec![],
17891790
sort_order_id: None,
@@ -1850,7 +1851,7 @@ mod tests {
18501851
nan_value_counts: HashMap::new(),
18511852
lower_bounds: HashMap::from([(1,Datum::int(1)),(2,Datum::string("a")),(3,Datum::string("AC/DC"))]),
18521853
upper_bounds: HashMap::from([(1,Datum::int(1)),(2,Datum::string("a")),(3,Datum::string("AC/DC"))]),
1853-
key_metadata: vec![],
1854+
key_metadata: Some(vec![]),
18541855
split_offsets: vec![4],
18551856
equality_ids: vec![],
18561857
sort_order_id: Some(0),
@@ -1930,7 +1931,7 @@ mod tests {
19301931
(2, Datum::string("a")),
19311932
(3, Datum::string("x"))
19321933
]),
1933-
key_metadata: vec![],
1934+
key_metadata: Some(vec![]),
19341935
split_offsets: vec![4],
19351936
equality_ids: vec![],
19361937
sort_order_id: Some(0),
@@ -2005,7 +2006,7 @@ mod tests {
20052006
(2, Datum::int(2)),
20062007
(3, Datum::string("x"))
20072008
]),
2008-
key_metadata: vec![],
2009+
key_metadata: Some(vec![]),
20092010
split_offsets: vec![4],
20102011
equality_ids: vec![],
20112012
sort_order_id: None,
@@ -2075,7 +2076,7 @@ mod tests {
20752076
(1, Datum::long(1)),
20762077
(2, Datum::int(2)),
20772078
]),
2078-
key_metadata: vec![],
2079+
key_metadata: Some(vec![]),
20792080
split_offsets: vec![4],
20802081
equality_ids: vec![],
20812082
sort_order_id: None,

crates/iceberg/src/writer/file_writer/parquet_writer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -381,7 +381,7 @@ impl ParquetWriter {
381381
// # TODO(#417)
382382
// - nan_value_counts
383383
// - distinct_counts
384-
.key_metadata(metadata.footer_signing_key_metadata.unwrap_or_default())
384+
.key_metadata(metadata.footer_signing_key_metadata)
385385
.split_offsets(
386386
metadata
387387
.row_groups

0 commit comments

Comments
 (0)