apache / apache/datafusion-comet

CometIcebergNativeScanExec: propagate outputOrdering from originalPlan instead of hardcoding Nil

Offen Anfängerfreundlich
#4,367 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
area:scan enhancement priority:medium
Vorherrschende Sprache
Scala
Sterne
1.3k
Forks
375
Ø Merge
2 T. 10 Std.
Gemergte PRs (30 T.)
231

Beschreibung

### What is the problem the feature request solves?

CometIcebergNativeScanExec.scala hardcodes outputOrdering to Nil:

```
override lazy val outputOrdering: Seq[SortOrder] = Nil
```

Ref https://github.com/apache/iceberg/issues/16430

We can update it to :

```
override lazy val outputOrdering: Seq[SortOrder] =
if (originalPlan != null) originalPlan.outputOrdering else Nil
```

originalPlan is the wrapped BatchScanExec. Once Iceberg implements SupportsReportOrdering, BatchScanExec.outputOrdering returns the correct sort order and Comet inherits it

This wil eliminate CometSortExec above Iceberg native scans for sort-merge joins .

### Describe the potential solution

_No response_

### Additional context

_No response_

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne in CometIcebergNativeScanExec.scala und untersuche, wie originalPlan den Iceberg BatchScanExec umschließt. Überprüfe, wie BatchScanExec.outputOrdering bereitgestellt wird, und aktualisiere anschließend das Ordering-Verhalten des Scans so, dass dieser Wert erhalten bleibt, wenn originalPlan vorhanden ist, und andernfalls weiterhin Nil verwendet wird. Erledigt ist die Aufgabe, wenn native Iceberg-Scans das ursprüngliche Ordering ohne ein unnötiges CometSortExec melden können.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
scala
Bereich
performance
Issue-Typ
Feature
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Ruhig
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
72/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.