andygrove opened a new issue, #6424:
URL: https://github.com/apache/datafusion-comet/issues/6424

   ### Describe the bug
   
   Since #5692, Comet routes the `Invoke` and `StaticInvoke` expressions it 
doesn't otherwise support through the JVM codegen dispatcher, instead of 
falling back to Spark. The predicate of a typed `Dataset.filter(lambda)` is one 
of these `Invoke`s. So a typed filter over a native operator now runs in 
`CometFilter`, through the dispatcher.
   
   The dispatcher reads sliced boolean input wrong (#6288). Once the batches 
reaching the filter are sliced, it keeps or drops the wrong rows. In 1.0.0 the 
filter ran in Spark and returned the right rows, so this is a regression in 
1.1.0.
   
   ### Steps to reproduce
   
   ```scala
   // In a suite extending CometTestBase, default configs
   import testImplicits._
   withSQLConf(
     SQLConf.SHUFFLE_PARTITIONS.key -> "1",
     SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "false") {
     withTempPath { dir =>
       spark.range(0, 30000).selectExpr("id", "id % 3 = 0 AS 
flag").write.parquet(dir.getAbsolutePath)
       checkSparkAnswer(
         spark.read.parquet(dir.getAbsolutePath)
           .groupBy("id", "flag").count()
           .as[(Long, Boolean, Long)]
           .filter(_._2)
           .toDF())
     }
   }
   ```
   
   The aggregate emits more groups than `spark.comet.batchSize`, and its sliced 
output batches carry boolean arrays with a non-zero offset into the filter.
   
   ### Expected behavior
   
   Spark and Comet 1.0.0 return 10,000 rows. Comet 1.1.0-rc1 returns 10,001, 
with rows misclassified in both directions.
   
   ### Additional context
   
   #6339 fixes #6288 and is on `main`, which returns the right rows. #6339 is 
not on `branch-1.1`. I cherry-picked it onto 1.1.0-rc1: it applies cleanly and 
the reproducer passes, with the predicate still dispatched. The fix for 1.1.0 
is to backport #6339.
   
   Found by the 1.1.0 regression audit (#6399) and tracked in #6402.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


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

Reply via email to