You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gluten.apache.org by ta...@apache.org on 2026/07/01 11:31:06 UTC

(gluten) 35/38: Share carrier row transitions under backends-core

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

taiyang-li pushed a commit to branch fake_add_bolt_backend
in repository https://gitbox.apache.org/repos/asf/gluten.git

commit a938159153b63221b91ff8bc19cb571ce7747c10
Author: liyang.127 <li...@bytedance.com>
AuthorDate: Wed Jul 1 16:15:31 2026 +0800

    Share carrier row transitions under backends-core
    
    Move the common carrier-row transition glue into backends-core so the velox backend can keep only thin wrappers and future backend alignment can reuse the same shared implementation.
---
 .../gluten/execution/SharedCarrierRowType.scala    | 15 +++++++++-----
 .../execution/SharedColumnarToCarrierRowExec.scala | 24 ++++++++++++----------
 .../backendsapi/velox/VeloxCarrierRowType.scala    | 12 +++++------
 .../execution/VeloxColumnarToCarrierRowExec.scala  | 12 +++++------
 4 files changed, 34 insertions(+), 29 deletions(-)

diff --git a/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxCarrierRowType.scala b/backends-core/src/main/scala/org/apache/gluten/execution/SharedCarrierRowType.scala
similarity index 67%
copy from backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxCarrierRowType.scala
copy to backends-core/src/main/scala/org/apache/gluten/execution/SharedCarrierRowType.scala
index 79d350e90a..58ce6531bd 100644
--- a/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxCarrierRowType.scala
+++ b/backends-core/src/main/scala/org/apache/gluten/execution/SharedCarrierRowType.scala
@@ -14,13 +14,18 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.gluten.backendsapi.velox
+package org.apache.gluten.execution
 
-import org.apache.gluten.execution.VeloxColumnarToCarrierRowExec
-import org.apache.gluten.extension.columnar.transition.Convention
+import org.apache.gluten.extension.columnar.transition.{Convention, Transition}
+
+/** Shared implementation for backend-specific carrier row types. */
+abstract class SharedCarrierRowType extends Convention.RowType {
+
+  protected def backendBatchType: Convention.BatchType
+
+  protected def toCarrierRowTransition: Transition
 
-object VeloxCarrierRowType extends Convention.RowType {
   override protected[this] def registerTransitions(): Unit = {
-    fromBatch(VeloxBatchType, VeloxColumnarToCarrierRowExec.apply)
+    fromBatch(backendBatchType, toCarrierRowTransition)
   }
 }
diff --git a/backends-velox/src/main/scala/org/apache/gluten/execution/VeloxColumnarToCarrierRowExec.scala b/backends-core/src/main/scala/org/apache/gluten/execution/SharedColumnarToCarrierRowExec.scala
similarity index 66%
copy from backends-velox/src/main/scala/org/apache/gluten/execution/VeloxColumnarToCarrierRowExec.scala
copy to backends-core/src/main/scala/org/apache/gluten/execution/SharedColumnarToCarrierRowExec.scala
index 65ce184861..0ca2a505d2 100644
--- a/backends-velox/src/main/scala/org/apache/gluten/execution/VeloxColumnarToCarrierRowExec.scala
+++ b/backends-core/src/main/scala/org/apache/gluten/execution/SharedColumnarToCarrierRowExec.scala
@@ -16,23 +16,25 @@
  */
 package org.apache.gluten.execution
 
-import org.apache.gluten.backendsapi.velox.{VeloxBatchType, VeloxCarrierRowType}
 import org.apache.gluten.extension.columnar.transition.{Convention, ConventionReq, Transitions}
 
 import org.apache.spark.sql.execution.SparkPlan
 
-case class VeloxColumnarToCarrierRowExec(override val child: SparkPlan)
+/** Shared implementation for backend-specific `ColumnarToCarrierRowExec` wrappers. */
+abstract class SharedColumnarToCarrierRowExec(child: SparkPlan)
   extends ColumnarToCarrierRowExecBase {
-  override protected def fromBatchType(): Convention.BatchType = VeloxBatchType
-  override def rowType(): Convention.RowType = VeloxCarrierRowType
-  override protected def withNewChildInternal(newChild: SparkPlan): SparkPlan =
-    copy(child = newChild)
+
+  protected def backendBatchType: Convention.BatchType
+
+  protected def backendRowType: Convention.RowType
+
+  override protected def fromBatchType(): Convention.BatchType = backendBatchType
+
+  override def rowType(): Convention.RowType = backendRowType
 }
 
-object VeloxColumnarToCarrierRowExec {
-  def enforce(child: SparkPlan): SparkPlan = {
-    Transitions.enforceReq(
-      child,
-      ConventionReq.ofRow(ConventionReq.RowType.Is(VeloxCarrierRowType)))
+object SharedColumnarToCarrierRowExec {
+  def enforce(child: SparkPlan, rowType: Convention.RowType): SparkPlan = {
+    Transitions.enforceReq(child, ConventionReq.ofRow(ConventionReq.RowType.Is(rowType)))
   }
 }
diff --git a/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxCarrierRowType.scala b/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxCarrierRowType.scala
index 79d350e90a..dc0514a60e 100644
--- a/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxCarrierRowType.scala
+++ b/backends-velox/src/main/scala/org/apache/gluten/backendsapi/velox/VeloxCarrierRowType.scala
@@ -16,11 +16,11 @@
  */
 package org.apache.gluten.backendsapi.velox
 
-import org.apache.gluten.execution.VeloxColumnarToCarrierRowExec
-import org.apache.gluten.extension.columnar.transition.Convention
+import org.apache.gluten.execution.{SharedCarrierRowType, VeloxColumnarToCarrierRowExec}
+import org.apache.gluten.extension.columnar.transition.{Convention, Transition}
 
-object VeloxCarrierRowType extends Convention.RowType {
-  override protected[this] def registerTransitions(): Unit = {
-    fromBatch(VeloxBatchType, VeloxColumnarToCarrierRowExec.apply)
-  }
+object VeloxCarrierRowType extends SharedCarrierRowType {
+  override protected def backendBatchType: Convention.BatchType = VeloxBatchType
+
+  override protected def toCarrierRowTransition: Transition = VeloxColumnarToCarrierRowExec.apply
 }
diff --git a/backends-velox/src/main/scala/org/apache/gluten/execution/VeloxColumnarToCarrierRowExec.scala b/backends-velox/src/main/scala/org/apache/gluten/execution/VeloxColumnarToCarrierRowExec.scala
index 65ce184861..b1038cb5bf 100644
--- a/backends-velox/src/main/scala/org/apache/gluten/execution/VeloxColumnarToCarrierRowExec.scala
+++ b/backends-velox/src/main/scala/org/apache/gluten/execution/VeloxColumnarToCarrierRowExec.scala
@@ -17,22 +17,20 @@
 package org.apache.gluten.execution
 
 import org.apache.gluten.backendsapi.velox.{VeloxBatchType, VeloxCarrierRowType}
-import org.apache.gluten.extension.columnar.transition.{Convention, ConventionReq, Transitions}
+import org.apache.gluten.extension.columnar.transition.Convention
 
 import org.apache.spark.sql.execution.SparkPlan
 
 case class VeloxColumnarToCarrierRowExec(override val child: SparkPlan)
-  extends ColumnarToCarrierRowExecBase {
-  override protected def fromBatchType(): Convention.BatchType = VeloxBatchType
-  override def rowType(): Convention.RowType = VeloxCarrierRowType
+  extends SharedColumnarToCarrierRowExec(child) {
+  override protected def backendBatchType: Convention.BatchType = VeloxBatchType
+  override protected def backendRowType: Convention.RowType = VeloxCarrierRowType
   override protected def withNewChildInternal(newChild: SparkPlan): SparkPlan =
     copy(child = newChild)
 }
 
 object VeloxColumnarToCarrierRowExec {
   def enforce(child: SparkPlan): SparkPlan = {
-    Transitions.enforceReq(
-      child,
-      ConventionReq.ofRow(ConventionReq.RowType.Is(VeloxCarrierRowType)))
+    SharedColumnarToCarrierRowExec.enforce(child, VeloxCarrierRowType)
   }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@gluten.apache.org
For additional commands, e-mail: commits-help@gluten.apache.org