Skip to content

Commit 4532f1e

Browse files
committed
fix test compilation, rebase
1 parent 4d6e48c commit 4532f1e

File tree

8 files changed

+80
-65
lines changed

8 files changed

+80
-65
lines changed

crates/iceberg/src/spec/partition.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,15 @@ impl PartitionKey {
194194
Self { spec, schema, data }
195195
}
196196

197+
/// Creates a new partition key from another partition key, with a new data field.
198+
pub fn copy_with_data(&self, data: Struct) -> Self {
199+
Self {
200+
spec: self.spec.clone(),
201+
schema: self.schema.clone(),
202+
data,
203+
}
204+
}
205+
197206
/// Generates a partition path based on the partition values.
198207
pub fn to_path(&self) -> String {
199208
self.spec.partition_to_path(&self.data, self.schema.clone())

crates/iceberg/src/writer/base_writer/data_file_writer.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,8 @@ mod test {
143143
use crate::Result;
144144
use crate::io::FileIOBuilder;
145145
use crate::spec::{
146-
DataContentType, DataFileFormat, Literal, NestedField,
147-
PROPERTY_WRITE_TARGET_FILE_SIZE_BYTES_DEFAULT, PartitionKey, PartitionSpec, PrimitiveType,
148-
Schema, Struct, Type,
146+
DataContentType, DataFileFormat, Literal, NestedField, PartitionKey, PartitionSpec,
147+
PrimitiveType, Schema, Struct, Type,
149148
};
150149
use crate::writer::base_writer::data_file_writer::DataFileWriterBuilder;
151150
use crate::writer::file_writer::ParquetWriterBuilder;
@@ -255,7 +254,7 @@ mod test {
255254
let partition_key = PartitionKey::new(
256255
PartitionSpec::builder(schema_ref.clone()).build()?,
257256
schema_ref.clone(),
258-
partition_value,
257+
partition_value.clone(),
259258
);
260259

261260
let parquet_writer_builder =

crates/iceberg/src/writer/base_writer/equality_delete_writer.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -425,8 +425,12 @@ mod test {
425425
// prepare writer
426426
let pb =
427427
ParquetWriterBuilder::new(WriterProperties::builder().build(), Arc::new(delete_schema));
428-
let rolling_writer =
429-
RollingFileWriter::new_with_default_file_size(pb, file_io, location_gen, file_name_gen);
428+
let rolling_writer = RollingFileWriter::new_with_default_file_size(
429+
pb,
430+
file_io.clone(),
431+
location_gen,
432+
file_name_gen,
433+
);
430434
let mut equality_delete_writer =
431435
EqualityDeleteFileWriterBuilder::new(rolling_writer, equality_config)
432436
.build()

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1624,35 +1624,31 @@ mod tests {
16241624
};
16251625
let col = Arc::new(Int64Array::from_iter_values(0..1024)) as ArrayRef;
16261626
let to_write = RecordBatch::try_new(schema.clone(), vec![col]).unwrap();
1627-
let output_file = file_io.new_output(
1628-
location_gen.generate_location(None, &file_name_gen.generate_file_name()),
1629-
)?;
1627+
let file_path = location_gen.generate_location(None, &file_name_gen.generate_file_name());
1628+
let output_file = file_io.new_output(&file_path)?;
16301629
let mut pw = ParquetWriterBuilder::new(
16311630
WriterProperties::builder().build(),
16321631
Arc::new(to_write.schema().as_ref().try_into().unwrap()),
16331632
)
16341633
.build(output_file)
16351634
.await?;
16361635
pw.write(&to_write).await?;
1637-
let file_path = output_file.location().to_string();
16381636
pw.close().await.unwrap();
1639-
assert!(file_io.exists(file_path).await.unwrap());
1637+
assert!(file_io.exists(&file_path).await.unwrap());
16401638

16411639
// Test that file will not create if no data to write
16421640
let file_name_gen =
16431641
DefaultFileNameGenerator::new("test_empty".to_string(), None, DataFileFormat::Parquet);
1644-
let output_file = file_io.new_output(
1645-
location_gen.generate_location(None, &file_name_gen.generate_file_name()),
1646-
)?;
1642+
let file_path = location_gen.generate_location(None, &file_name_gen.generate_file_name());
1643+
let output_file = file_io.new_output(&file_path)?;
16471644
let pw = ParquetWriterBuilder::new(
16481645
WriterProperties::builder().build(),
16491646
Arc::new(to_write.schema().as_ref().try_into().unwrap()),
16501647
)
16511648
.build(output_file)
16521649
.await?;
1653-
let file_path = output_file.location().to_string();
16541650
pw.close().await.unwrap();
1655-
assert!(!file_io.exists(file_path).await.unwrap());
1651+
assert!(!file_io.exists(&file_path).await.unwrap());
16561652

16571653
Ok(())
16581654
}

crates/integration_tests/tests/shared_tests/append_data_file_test.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use iceberg::writer::file_writer::ParquetWriterBuilder;
2727
use iceberg::writer::file_writer::location_generator::{
2828
DefaultFileNameGenerator, DefaultLocationGenerator,
2929
};
30+
use iceberg::writer::file_writer::rolling_writer::RollingFileWriter;
3031
use iceberg::writer::{IcebergWriter, IcebergWriterBuilder};
3132
use iceberg::{Catalog, CatalogBuilder, TableCreation};
3233
use iceberg_catalog_rest::RestCatalogBuilder;
@@ -74,12 +75,14 @@ async fn test_append_data_file() {
7475
let parquet_writer_builder = ParquetWriterBuilder::new(
7576
WriterProperties::default(),
7677
table.metadata().current_schema().clone(),
77-
None,
78+
);
79+
let rolling_file_writer = RollingFileWriter::new_with_default_file_size(
80+
parquet_writer_builder,
7881
table.file_io().clone(),
7982
location_generator.clone(),
8083
file_name_generator.clone(),
8184
);
82-
let data_file_writer_builder = DataFileWriterBuilder::new(parquet_writer_builder, None, 0);
85+
let data_file_writer_builder = DataFileWriterBuilder::new(rolling_file_writer, None);
8386
let mut data_file_writer = data_file_writer_builder.build().await.unwrap();
8487
let col1 = StringArray::from(vec![Some("foo"), Some("bar"), None, Some("baz")]);
8588
let col2 = Int32Array::from(vec![Some(1), Some(2), Some(3), Some(4)]);

crates/integration_tests/tests/shared_tests/append_partition_data_file_test.rs

Lines changed: 41 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ use iceberg::writer::file_writer::ParquetWriterBuilder;
3131
use iceberg::writer::file_writer::location_generator::{
3232
DefaultFileNameGenerator, DefaultLocationGenerator,
3333
};
34+
use iceberg::writer::file_writer::rolling_writer::RollingFileWriter;
3435
use iceberg::writer::{IcebergWriter, IcebergWriterBuilder};
3536
use iceberg::{Catalog, CatalogBuilder, TableCreation};
3637
use iceberg_catalog_rest::RestCatalogBuilder;
@@ -96,22 +97,20 @@ async fn test_append_partition_data_file() {
9697
let parquet_writer_builder = ParquetWriterBuilder::new(
9798
WriterProperties::default(),
9899
table.metadata().current_schema().clone(),
99-
Some(partition_key),
100+
);
101+
102+
let rolling_file_writer = RollingFileWriter::new_with_default_file_size(
103+
parquet_writer_builder.clone(),
100104
table.file_io().clone(),
101105
location_generator.clone(),
102106
file_name_generator.clone(),
103107
);
104108

105-
let mut data_file_writer_valid = DataFileWriterBuilder::new(
106-
parquet_writer_builder.clone(),
107-
Some(Struct::from_iter([Some(Literal::Primitive(
108-
PrimitiveLiteral::Int(first_partition_id_value),
109-
))])),
110-
0,
111-
)
112-
.build()
113-
.await
114-
.unwrap();
109+
let mut data_file_writer_valid =
110+
DataFileWriterBuilder::new(rolling_file_writer.clone(), Some(partition_key.clone()))
111+
.build()
112+
.await
113+
.unwrap();
115114

116115
let col1 = StringArray::from(vec![Some("foo1"), Some("foo2")]);
117116
let col2 = Int32Array::from(vec![
@@ -148,44 +147,53 @@ async fn test_append_partition_data_file() {
148147
assert_eq!(batches.len(), 1);
149148
assert_eq!(batches[0], batch);
150149

150+
let partition_key = partition_key.copy_with_data(Struct::from_iter([Some(
151+
Literal::Primitive(PrimitiveLiteral::Boolean(true)),
152+
)]));
151153
test_schema_incompatible_partition_type(
152-
parquet_writer_builder.clone(),
154+
rolling_file_writer.clone(),
153155
batch.clone(),
156+
partition_key.clone(),
154157
table.clone(),
155158
&rest_catalog,
156159
)
157160
.await;
158161

162+
let partition_key = partition_key.copy_with_data(Struct::from_iter([
163+
Some(Literal::Primitive(PrimitiveLiteral::Int(
164+
first_partition_id_value,
165+
))),
166+
Some(Literal::Primitive(PrimitiveLiteral::Int(
167+
first_partition_id_value,
168+
))),
169+
]));
159170
test_schema_incompatible_partition_fields(
160-
parquet_writer_builder,
171+
rolling_file_writer.clone(),
161172
batch,
173+
partition_key,
162174
table,
163175
&rest_catalog,
164-
first_partition_id_value,
165176
)
166177
.await;
167178
}
168179

169180
async fn test_schema_incompatible_partition_type(
170-
parquet_writer_builder: ParquetWriterBuilder<
181+
rolling_file_writer: RollingFileWriter<
182+
ParquetWriterBuilder,
171183
DefaultLocationGenerator,
172184
DefaultFileNameGenerator,
173185
>,
174186
batch: RecordBatch,
187+
partition_key: PartitionKey,
175188
table: Table,
176189
catalog: &dyn Catalog,
177190
) {
178191
// test writing different "type" of partition than mentioned in schema
179-
let mut data_file_writer_invalid = DataFileWriterBuilder::new(
180-
parquet_writer_builder.clone(),
181-
Some(Struct::from_iter([Some(Literal::Primitive(
182-
PrimitiveLiteral::Boolean(true),
183-
))])),
184-
0,
185-
)
186-
.build()
187-
.await
188-
.unwrap();
192+
let mut data_file_writer_invalid =
193+
DataFileWriterBuilder::new(rolling_file_writer.clone(), Some(partition_key))
194+
.build()
195+
.await
196+
.unwrap();
189197

190198
data_file_writer_invalid.write(batch.clone()).await.unwrap();
191199
let data_file_invalid = data_file_writer_invalid.close().await.unwrap();
@@ -200,32 +208,22 @@ async fn test_schema_incompatible_partition_type(
200208
}
201209

202210
async fn test_schema_incompatible_partition_fields(
203-
parquet_writer_builder: ParquetWriterBuilder<
211+
rolling_file_writer: RollingFileWriter<
212+
ParquetWriterBuilder,
204213
DefaultLocationGenerator,
205214
DefaultFileNameGenerator,
206215
>,
207216
batch: RecordBatch,
217+
partition_key: PartitionKey,
208218
table: Table,
209219
catalog: &dyn Catalog,
210-
first_partition_id_value: i32,
211220
) {
212221
// test writing different number of partition fields than mentioned in schema
213-
214-
let mut data_file_writer_invalid = DataFileWriterBuilder::new(
215-
parquet_writer_builder,
216-
Some(Struct::from_iter([
217-
Some(Literal::Primitive(PrimitiveLiteral::Int(
218-
first_partition_id_value,
219-
))),
220-
Some(Literal::Primitive(PrimitiveLiteral::Int(
221-
first_partition_id_value,
222-
))),
223-
])),
224-
0,
225-
)
226-
.build()
227-
.await
228-
.unwrap();
222+
let mut data_file_writer_invalid =
223+
DataFileWriterBuilder::new(rolling_file_writer, Some(partition_key))
224+
.build()
225+
.await
226+
.unwrap();
229227

230228
data_file_writer_invalid.write(batch.clone()).await.unwrap();
231229
let data_file_invalid = data_file_writer_invalid.close().await.unwrap();

crates/integration_tests/tests/shared_tests/conflict_commit_test.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ use iceberg::writer::file_writer::ParquetWriterBuilder;
2727
use iceberg::writer::file_writer::location_generator::{
2828
DefaultFileNameGenerator, DefaultLocationGenerator,
2929
};
30+
use iceberg::writer::file_writer::rolling_writer::RollingFileWriter;
3031
use iceberg::writer::{IcebergWriter, IcebergWriterBuilder};
3132
use iceberg::{Catalog, CatalogBuilder, TableCreation};
3233
use iceberg_catalog_rest::RestCatalogBuilder;
@@ -73,12 +74,14 @@ async fn test_append_data_file_conflict() {
7374
let parquet_writer_builder = ParquetWriterBuilder::new(
7475
WriterProperties::default(),
7576
table.metadata().current_schema().clone(),
76-
None,
77+
);
78+
let rolling_file_writer = RollingFileWriter::new_with_default_file_size(
79+
parquet_writer_builder,
7780
table.file_io().clone(),
7881
location_generator.clone(),
7982
file_name_generator.clone(),
8083
);
81-
let data_file_writer_builder = DataFileWriterBuilder::new(parquet_writer_builder, None, 0);
84+
let data_file_writer_builder = DataFileWriterBuilder::new(rolling_file_writer, None);
8285
let mut data_file_writer = data_file_writer_builder.build().await.unwrap();
8386
let col1 = StringArray::from(vec![Some("foo"), Some("bar"), None, Some("baz")]);
8487
let col2 = Int32Array::from(vec![Some(1), Some(2), Some(3), Some(4)]);

crates/integration_tests/tests/shared_tests/scan_all_type.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ use iceberg::writer::file_writer::ParquetWriterBuilder;
3939
use iceberg::writer::file_writer::location_generator::{
4040
DefaultFileNameGenerator, DefaultLocationGenerator,
4141
};
42+
use iceberg::writer::file_writer::rolling_writer::RollingFileWriter;
4243
use iceberg::writer::{IcebergWriter, IcebergWriterBuilder};
4344
use iceberg::{Catalog, CatalogBuilder, TableCreation};
4445
use iceberg_catalog_rest::RestCatalogBuilder;
@@ -155,12 +156,14 @@ async fn test_scan_all_type() {
155156
let parquet_writer_builder = ParquetWriterBuilder::new(
156157
WriterProperties::default(),
157158
table.metadata().current_schema().clone(),
158-
None,
159+
);
160+
let rolling_file_writer = RollingFileWriter::new_with_default_file_size(
161+
parquet_writer_builder,
159162
table.file_io().clone(),
160163
location_generator.clone(),
161164
file_name_generator.clone(),
162165
);
163-
let data_file_writer_builder = DataFileWriterBuilder::new(parquet_writer_builder, None, 0);
166+
let data_file_writer_builder = DataFileWriterBuilder::new(rolling_file_writer, None);
164167
let mut data_file_writer = data_file_writer_builder.build().await.unwrap();
165168

166169
// Prepare data

0 commit comments

Comments
 (0)