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

comphead pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new be130b4670 Enable SortMergeJoin LeftAnti filtered fuzz tests (#11535)
be130b4670 is described below

commit be130b46709e084f969b15e7686cddb289a198ff
Author: Oleks V <[email protected]>
AuthorDate: Thu Jul 18 09:53:27 2024 -0700

    Enable SortMergeJoin LeftAnti filtered fuzz tests (#11535)
    
    * Enable LeftAnti filtered fuzz tests
    
    * Enable LeftAnti filtered fuzz tests. Add git reference
---
 datafusion/core/tests/fuzz_cases/join_fuzz.rs | 38 ++++++++++++++++++---------
 1 file changed, 25 insertions(+), 13 deletions(-)

diff --git a/datafusion/core/tests/fuzz_cases/join_fuzz.rs 
b/datafusion/core/tests/fuzz_cases/join_fuzz.rs
index 17dbf3a0ff..604c1f93e5 100644
--- a/datafusion/core/tests/fuzz_cases/join_fuzz.rs
+++ b/datafusion/core/tests/fuzz_cases/join_fuzz.rs
@@ -83,7 +83,7 @@ fn less_than_100_join_filter(schema1: Arc<Schema>, _schema2: 
Arc<Schema>) -> Joi
 }
 
 fn col_lt_col_filter(schema1: Arc<Schema>, schema2: Arc<Schema>) -> JoinFilter 
{
-    let less_than_100 = Arc::new(BinaryExpr::new(
+    let less_filter = Arc::new(BinaryExpr::new(
         Arc::new(Column::new("x", 1)),
         Operator::Lt,
         Arc::new(Column::new("x", 0)),
@@ -99,11 +99,19 @@ fn col_lt_col_filter(schema1: Arc<Schema>, schema2: 
Arc<Schema>) -> JoinFilter {
         },
     ];
     let intermediate_schema = Schema::new(vec![
-        schema1.field_with_name("x").unwrap().to_owned(),
-        schema2.field_with_name("x").unwrap().to_owned(),
+        schema1
+            .field_with_name("x")
+            .unwrap()
+            .clone()
+            .with_nullable(true),
+        schema2
+            .field_with_name("x")
+            .unwrap()
+            .clone()
+            .with_nullable(true),
     ]);
 
-    JoinFilter::new(less_than_100, column_indices, intermediate_schema)
+    JoinFilter::new(less_filter, column_indices, intermediate_schema)
 }
 
 #[tokio::test]
@@ -217,6 +225,8 @@ async fn test_semi_join_1k() {
 
 #[tokio::test]
 async fn test_semi_join_1k_filtered() {
+    // NLJ vs HJ gives wrong result
+    // Tracked in https://github.com/apache/datafusion/issues/11537
     JoinFuzzTestCase::new(
         make_staggered_batches(1000),
         make_staggered_batches(1000),
@@ -239,17 +249,17 @@ async fn test_anti_join_1k() {
     .await
 }
 
-// Test failed for now. https://github.com/apache/datafusion/issues/10872
-#[ignore]
 #[tokio::test]
 async fn test_anti_join_1k_filtered() {
+    // NLJ vs HJ gives wrong result
+    // Tracked in https://github.com/apache/datafusion/issues/11537
     JoinFuzzTestCase::new(
         make_staggered_batches(1000),
         make_staggered_batches(1000),
         JoinType::LeftAnti,
-        Some(Box::new(less_than_100_join_filter)),
+        Some(Box::new(col_lt_col_filter)),
     )
-    .run_test(&[JoinTestType::HjSmj, JoinTestType::NljHj], false)
+    .run_test(&[JoinTestType::HjSmj], false)
     .await
 }
 
@@ -422,12 +432,13 @@ impl JoinFuzzTestCase {
             let session_config = 
SessionConfig::new().with_batch_size(*batch_size);
             let ctx = SessionContext::new_with_config(session_config);
             let task_ctx = ctx.task_ctx();
-            let smj = self.sort_merge_join();
-            let smj_collected = collect(smj, task_ctx.clone()).await.unwrap();
 
             let hj = self.hash_join();
             let hj_collected = collect(hj, task_ctx.clone()).await.unwrap();
 
+            let smj = self.sort_merge_join();
+            let smj_collected = collect(smj, task_ctx.clone()).await.unwrap();
+
             let nlj = self.nested_loop_join();
             let nlj_collected = collect(nlj, task_ctx.clone()).await.unwrap();
 
@@ -437,11 +448,12 @@ impl JoinFuzzTestCase {
             let nlj_rows = nlj_collected.iter().fold(0, |acc, b| acc + 
b.num_rows());
 
             if debug {
-                println!("The debug is ON. Input data will be saved");
                 let fuzz_debug = "fuzz_test_debug";
                 std::fs::remove_dir_all(fuzz_debug).unwrap_or(());
                 std::fs::create_dir_all(fuzz_debug).unwrap();
                 let out_dir_name = 
&format!("{fuzz_debug}/batch_size_{batch_size}");
+                println!("The debug is ON. Input data will be saved to 
{out_dir_name}");
+
                 Self::save_partitioned_batches_as_parquet(
                     &self.input1,
                     out_dir_name,
@@ -562,8 +574,7 @@ impl JoinFuzzTestCase {
     ///         Some(Box::new(col_lt_col_filter)),
     ///     )
     ///     .run_test(&[JoinTestType::HjSmj], false)
-    ///     .await
-    /// }
+    ///     .await;
     ///
     ///     let ctx: SessionContext = SessionContext::new();
     ///     let df = ctx
@@ -592,6 +603,7 @@ impl JoinFuzzTestCase {
     ///         )
     ///         .run_test()
     ///         .await
+    /// }
     fn save_partitioned_batches_as_parquet(
         input: &[RecordBatch],
         output_dir: &str,


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to