Skip to content

Commit d887733

Browse files
committed
some cleanup
1 parent 2ac588f commit d887733

File tree

3 files changed

+27
-89
lines changed

3 files changed

+27
-89
lines changed

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

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@
2020
use arrow_array::RecordBatch;
2121
use itertools::Itertools;
2222

23-
use crate::Result;
2423
use crate::spec::{DEFAULT_PARTITION_SPEC_ID, DataContentType, DataFile, PartitionKey, Struct};
2524
use crate::writer::file_writer::FileWriterBuilder;
2625
use crate::writer::file_writer::location_generator::{FileNameGenerator, LocationGenerator};
2726
use crate::writer::file_writer::rolling_writer::RollingFileWriter;
2827
use crate::writer::{CurrentFileStatus, IcebergWriter, IcebergWriterBuilder};
28+
use crate::{Error, ErrorKind, Result};
2929

3030
/// Builder for `DataFileWriter`.
3131
#[derive(Clone, Debug)]
@@ -83,26 +83,32 @@ impl<B: FileWriterBuilder, L: LocationGenerator, F: FileNameGenerator> IcebergWr
8383
}
8484

8585
async fn close(&mut self) -> Result<Vec<DataFile>> {
86-
let writer = self.inner_writer.take().unwrap();
87-
Ok(writer
88-
.close()
89-
.await?
90-
.into_iter()
91-
.map(|mut res| {
92-
res.content(DataContentType::Data);
93-
res.partition(
94-
self.partition_key
95-
.as_ref()
96-
.map_or(Struct::empty(), |pk| pk.data().clone()),
97-
);
98-
res.partition_spec_id(
99-
self.partition_key
100-
.as_ref()
101-
.map_or(DEFAULT_PARTITION_SPEC_ID, |pk| pk.spec().spec_id()),
102-
);
103-
res.build().expect("Guaranteed to be valid")
104-
})
105-
.collect_vec())
86+
if let Some(writer) = self.inner_writer.take() {
87+
Ok(writer
88+
.close()
89+
.await?
90+
.into_iter()
91+
.map(|mut res| {
92+
res.content(DataContentType::Data);
93+
res.partition(
94+
self.partition_key
95+
.as_ref()
96+
.map_or(Struct::empty(), |pk| pk.data().clone()),
97+
);
98+
res.partition_spec_id(
99+
self.partition_key
100+
.as_ref()
101+
.map_or(DEFAULT_PARTITION_SPEC_ID, |pk| pk.spec().spec_id()),
102+
);
103+
res.build().expect("Guaranteed to be valid")
104+
})
105+
.collect_vec())
106+
} else {
107+
Err(Error::new(
108+
ErrorKind::Unexpected,
109+
"Data file writer has been closed.",
110+
))
111+
}
106112
}
107113
}
108114

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

Lines changed: 0 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -25,64 +25,6 @@ use crate::writer::CurrentFileStatus;
2525
use crate::writer::file_writer::location_generator::{FileNameGenerator, LocationGenerator};
2626
use crate::writer::file_writer::{FileWriter, FileWriterBuilder};
2727
use crate::{Error, ErrorKind, Result};
28-
//
29-
// /// Builder for creating a `RollingFileWriter` that rolls over to a new file
30-
// /// when the data size exceeds a target threshold.
31-
// #[derive(Clone)]
32-
// pub struct RollingFileWriterBuilder<
33-
// B: FileWriterBuilder,
34-
// L: LocationGenerator,
35-
// F: FileNameGenerator,
36-
// > {
37-
// inner_builder: B,
38-
// target_file_size: usize,
39-
// file_io: FileIO,
40-
// location_generator: L,
41-
// file_name_generator: F,
42-
// }
43-
//
44-
// impl<B: FileWriterBuilder, L: LocationGenerator, F: FileNameGenerator>
45-
// RollingFileWriterBuilder<B, L, F>
46-
// {
47-
// /// Creates a new `RollingFileWriterBuilder` with the specified inner builder and target size.
48-
// ///
49-
// /// # Arguments
50-
// ///
51-
// /// * `inner_builder` - The builder for the underlying file writer
52-
// /// * `target_file_size` - The target size in bytes before rolling over to a new file
53-
// ///
54-
// /// NOTE: The `target_file_size` does not exactly reflect the final size on physical storage.
55-
// /// This is because the input size is based on the Arrow in-memory format and cannot precisely control rollover behavior.
56-
// /// The actual file size on disk is expected to be slightly larger than `target_file_size`.
57-
// pub fn new(
58-
// inner_builder: B,
59-
// target_file_size: usize,
60-
// file_io: FileIO,
61-
// location_generator: L,
62-
// file_name_generator: F,
63-
// ) -> Self {
64-
// Self {
65-
// inner_builder,
66-
// target_file_size,
67-
// file_io,
68-
// location_generator,
69-
// file_name_generator,
70-
// }
71-
// }
72-
// }
73-
74-
// impl<B: FileWriterBuilder> FileWriterBuilder for RollingFileWriterBuilder<B> {
75-
// type R = RollingFileWriter<B>;
76-
//
77-
// async fn build(self) -> Result<Self::R> {
78-
// Ok(RollingFileWriter {
79-
// inner: None,
80-
// inner_builder: self.inner_builder,
81-
// target_file_size: self.target_file_size,
82-
// data_file_builders: vec![],
83-
// })
84-
// }
85-
// }
8628

8729
/// A writer that automatically rolls over to a new file when the data size
8830
/// exceeds a target threshold.

crates/iceberg/src/writer/partitioning/mod.rs

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,6 @@ use crate::Result;
2121
use crate::spec::PartitionKey;
2222
use crate::writer::{DefaultInput, DefaultOutput};
2323

24-
#[async_trait::async_trait]
25-
pub trait PartitioningWriterBuilder<I = DefaultInput, O = DefaultOutput>:
26-
Send + Clone + 'static
27-
{
28-
/// todo doc
29-
type R: PartitioningWriter<I, O>;
30-
/// todo doc
31-
async fn build(self) -> Result<Self::R>;
32-
}
33-
3424
#[async_trait::async_trait]
3525
pub trait PartitioningWriter<I = DefaultInput, O = DefaultOutput>: Send + 'static {
3626
/// todo doc

0 commit comments

Comments
 (0)