This is an automated email from the ASF dual-hosted git repository.

fokko pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-rust.git


The following commit(s) were added to refs/heads/main by this push:
     new 11d4221  Remove duplicate filter (#414)
11d4221 is described below

commit 11d4221ec9267743b60fcd020f808fd154c589e4
Author: Renjie Liu <[email protected]>
AuthorDate: Thu Jun 20 16:26:59 2024 +0800

    Remove duplicate filter (#414)
---
 crates/iceberg/src/scan.rs | 30 +++++++++++-------------------
 1 file changed, 11 insertions(+), 19 deletions(-)

diff --git a/crates/iceberg/src/scan.rs b/crates/iceberg/src/scan.rs
index d116170..286cf57 100644
--- a/crates/iceberg/src/scan.rs
+++ b/crates/iceberg/src/scan.rs
@@ -49,7 +49,6 @@ pub struct TableScanBuilder<'a> {
     table: &'a Table,
     // Empty column names means to select all columns
     column_names: Vec<String>,
-    predicates: Option<Predicate>,
     snapshot_id: Option<i64>,
     batch_size: Option<usize>,
     case_sensitive: bool,
@@ -61,7 +60,6 @@ impl<'a> TableScanBuilder<'a> {
         Self {
             table,
             column_names: vec![],
-            predicates: None,
             snapshot_id: None,
             batch_size: None,
             case_sensitive: true,
@@ -96,12 +94,6 @@ impl<'a> TableScanBuilder<'a> {
         self
     }
 
-    /// Add a predicate to the scan. The scan will only return rows that match 
the predicate.
-    pub fn filter(mut self, predicate: Predicate) -> Self {
-        self.predicates = Some(predicate);
-        self
-    }
-
     /// Select some columns of the table.
     pub fn select(mut self, column_names: impl IntoIterator<Item = impl 
ToString>) -> Self {
         self.column_names = column_names
@@ -161,7 +153,7 @@ impl<'a> TableScanBuilder<'a> {
             }
         }
 
-        let bound_predicates = if let Some(ref predicates) = self.predicates {
+        let bound_predicates = if let Some(ref predicates) = self.filter {
             Some(predicates.bind(schema.clone(), true)?)
         } else {
             None
@@ -904,7 +896,7 @@ mod tests {
         // Filter: y < 3
         let mut builder = fixture.table.scan();
         let predicate = Reference::new("y").less_than(Datum::long(3));
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();
@@ -930,7 +922,7 @@ mod tests {
         // Filter: y >= 5
         let mut builder = fixture.table.scan();
         let predicate = 
Reference::new("y").greater_than_or_equal_to(Datum::long(5));
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();
@@ -956,7 +948,7 @@ mod tests {
         // Filter: y is null
         let mut builder = fixture.table.scan();
         let predicate = Reference::new("y").is_null();
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();
@@ -973,7 +965,7 @@ mod tests {
         // Filter: y is not null
         let mut builder = fixture.table.scan();
         let predicate = Reference::new("y").is_not_null();
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();
@@ -992,7 +984,7 @@ mod tests {
         let predicate = Reference::new("y")
             .less_than(Datum::long(5))
             .and(Reference::new("z").greater_than_or_equal_to(Datum::long(4)));
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();
@@ -1026,7 +1018,7 @@ mod tests {
         let predicate = Reference::new("y")
             .less_than(Datum::long(5))
             .or(Reference::new("z").greater_than_or_equal_to(Datum::long(4)));
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();
@@ -1061,7 +1053,7 @@ mod tests {
         // Filter: a STARTSWITH "Ice"
         let mut builder = fixture.table.scan();
         let predicate = Reference::new("a").starts_with(Datum::string("Ice"));
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();
@@ -1083,7 +1075,7 @@ mod tests {
         // Filter: a NOT STARTSWITH "Ice"
         let mut builder = fixture.table.scan();
         let predicate = 
Reference::new("a").not_starts_with(Datum::string("Ice"));
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();
@@ -1106,7 +1098,7 @@ mod tests {
         let mut builder = fixture.table.scan();
         let predicate =
             Reference::new("a").is_in([Datum::string("Sioux"), 
Datum::string("Iceberg")]);
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();
@@ -1129,7 +1121,7 @@ mod tests {
         let mut builder = fixture.table.scan();
         let predicate =
             Reference::new("a").is_not_in([Datum::string("Sioux"), 
Datum::string("Iceberg")]);
-        builder = builder.filter(predicate);
+        builder = builder.with_filter(predicate);
         let table_scan = builder.build().unwrap();
 
         let batch_stream = table_scan.to_arrow().await.unwrap();

Reply via email to