Conversation
spark/src/test/scala/org/apache/comet/exec/CometNativeReaderSuite.scala
Outdated
Show resolved
Hide resolved
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1456 +/- ##
============================================
+ Coverage 56.12% 58.33% +2.20%
- Complexity 976 977 +1
============================================
Files 119 122 +3
Lines 11743 12212 +469
Branches 2251 2286 +35
============================================
+ Hits 6591 7124 +533
+ Misses 4012 3949 -63
+ Partials 1140 1139 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
Some tests are failing due to #1289 I think the root cause is that we are trying to shuffle with arrays and Comet shuffle does not support arrays yet. We need to fall back to Spark for these shuffles. |
|
In @comphead Do you want to update these checks as part of this PR and see if it resolves the issue? case class CometExecRule(session: SparkSession) extends Rule[SparkPlan] {
private def applyCometShuffle(plan: SparkPlan): SparkPlan = {
plan.transformUp {
case s: ShuffleExchangeExec
if isCometPlan(s.child) && isCometNativeShuffleMode(conf) &&
QueryPlanSerde.supportPartitioning(s.child.output, s.outputPartitioning)._1 =>
...
case s: ShuffleExchangeExec
if (!s.child.supportsColumnar || isCometPlan(s.child)) && isCometJVMShuffleMode(
conf) &&
QueryPlanSerde.supportPartitioningTypes(s.child.output, s.outputPartitioning)._1 &&
!isShuffleOperator(s.child) =>
... |
Thanks @andygrove I'll check that, you saving me hours of debugging |
| case s: StructType if allowComplex => | ||
| s.fields.map(_.dataType).forall(supportedDataType(_, allowComplex)) | ||
| case a: ArrayType if allowComplex => | ||
| supportedDataType(a.elementType) |
There was a problem hiding this comment.
Do we need to pass allowComplex recursively here like supportedDataType(a.elementType, allowComplex)?
|
I think the last merge brought up a new test which fails now on schema mismatch, checking this |
|
I'd quite like to merge #1479 before this one so that we can be sure that no additional test failures are introduced for |
|
@andygrove @kazuyukitanimura please have a second look |
| lazy_static = "1.4" | ||
| assertables = "7" | ||
| hex = "0.4.3" | ||
| datafusion-functions-nested = "46.0.0" |
There was a problem hiding this comment.
can we make it to workspace = true so that we do not forget to update here when we upgrade DF
There was a problem hiding this comment.
I'm not sure if it is possible to make it workspace = true, this package is optional for test only and optional packages are not allowed on workspace level.
I can include it in workspace as non optional but it will be compiled into the target binary which is probably not expected
| } | ||
| }); | ||
|
|
||
| runtime.block_on(async move { |
There was a problem hiding this comment.
It's nice to see an end-to-end test like this in the Rust project
|
|
||
| case Literal(value, dataType) if supportedDataType(dataType, allowStruct = value == null) => | ||
| case Literal(value, dataType) | ||
| if supportedDataType(dataType, allowComplex = value == null) => |
There was a problem hiding this comment.
nit: would be nice to have a comment here explaining why allowComplex = value == null
|
Thanks everyone |
* feat: add read array support
Which issue does this PR close?
Part of #1454 .
Rationale for this change
What changes are included in this PR?
How are these changes tested?