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

   ## Describe the bug
   
   Nine rows across two expression benchmark suites are labelled `Comet` but 
are measuring Spark. In each case the plan falls back to a JVM `Project` 
sitting on top of `CometColumnarToRow`, so the expression itself never runs 
natively.
   
   `runExpressionBenchmark` has always checked for this, but it reported the 
result with `println`, so the warning went to the console while the results 
table went to the `.txt`. Anyone reading the table, or a copy of it pasted into 
a PR, sees a `Comet` row with no indication that it ran on Spark. #5371 routes 
that warning into the results file, which is how these surfaced.
   
   ## Affected rows
   
   `CometStringExpressionBenchmark` (1 row):
   
   ```
   *(1) Project [translate(c1#12, 123456, aBcDeF) AS translate(c1, 123456, 
aBcDeF)#23815]
   +- *(1) CometColumnarToRow
      +- CometNativeScan parquet [c1#12] ...
   ```
   
   `CometCastNumericToNumericBenchmark` (8 rows), all casts from `ShortType`:
   
   ```
   Project [cast(c_short#19 as int) AS c_short#528]
   Project [cast(c_short#19 as bigint) AS c_short#831L]
   Project [cast(c_short#19 as tinyint) AS c_short#3765]
   Project [cast(c_short#19 as float) AS c_short#5321]
   Project [try_cast(c_short#19 as int) AS c_short#1904]
   Project [try_cast(c_short#19 as bigint) AS c_short#2218L]
   Project [try_cast(c_short#19 as tinyint) AS c_short#4308]
   Project [try_cast(c_short#19 as float) AS c_short#6690]
   ```
   
   The short cases are the surprising ones: Comet supports short-to-int and 
short-to-long casts, and the equivalent casts from other numeric types in the 
same suite do run natively. Something specific to `ShortType` in this suite is 
preventing the projection from being replaced. Worth understanding before 
assuming the benchmark is simply exercising an unsupported path.
   
   ## Steps to reproduce
   
   With #5371 applied:
   
   ```sh
   SPARK_GENERATE_BENCHMARK_FILES=1 make 
benchmark-org.apache.spark.sql.benchmark.CometCastNumericToNumericBenchmark
   SPARK_GENERATE_BENCHMARK_FILES=1 make 
benchmark-org.apache.spark.sql.benchmark.CometStringExpressionBenchmark
   ```
   
   Then grep the generated files under `spark/benchmarks/` for `First non-Comet 
operator`.
   
   Without #5371, the same warnings appear on stdout during the run.
   
   ## Expected behavior
   
   Either the expressions run natively, or the benchmark is adjusted so the row 
is not presented as a Comet measurement.
   
   ## Additional context
   
   Found while working on #5363. The fallback is the bug here; the reporting 
gap that hid it is fixed separately in #5371.
   


-- 
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