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

mingliang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-gluten.git


The following commit(s) were added to refs/heads/main by this push:
     new 84127dd2e1 [GLUTEN-10484] Improve getTypeNode for StructType (#10485)
84127dd2e1 is described below

commit 84127dd2e1c97a3d70bd92d2af0ace708aa2f0ab
Author: Jiaan Geng <[email protected]>
AuthorDate: Wed Aug 20 09:14:04 2025 +0800

    [GLUTEN-10484] Improve getTypeNode for StructType (#10485)
---
 .../apache/gluten/expression/ConverterUtils.scala  | 23 ++++++++--------------
 1 file changed, 8 insertions(+), 15 deletions(-)

diff --git 
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ConverterUtils.scala
 
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ConverterUtils.scala
index 5a9602898d..1e217eb564 100644
--- 
a/gluten-substrait/src/main/scala/org/apache/gluten/expression/ConverterUtils.scala
+++ 
b/gluten-substrait/src/main/scala/org/apache/gluten/expression/ConverterUtils.scala
@@ -53,14 +53,6 @@ object ConverterUtils extends Logging {
     if (caseSensitive) name else name.toLowerCase(Locale.ROOT)
   }
 
-  def normalizeStructFieldName(name: String): String = {
-    if (BackendsApiManager.getSettings.structFieldToLowerCase()) {
-      normalizeColName(name)
-    } else {
-      name
-    }
-  }
-
   def getShortAttributeName(attr: Attribute): String = {
     val name = normalizeColName(attr.name)
     val subIndex = name.indexOf("(")
@@ -242,13 +234,14 @@ object ConverterUtils extends Logging {
       case a: ArrayType =>
         TypeBuilder.makeList(nullable, getTypeNode(a.elementType, 
a.containsNull))
       case s: StructType =>
-        val fieldNodes = new JArrayList[TypeNode]
-        val fieldNames = new JArrayList[String]
-        for (structField <- s.fields) {
-          fieldNodes.add(getTypeNode(structField.dataType, 
structField.nullable))
-          fieldNames.add(normalizeStructFieldName(structField.name))
-        }
-        TypeBuilder.makeStruct(nullable, fieldNodes, fieldNames)
+        val normalizeStructFieldName: String => String =
+          if (BackendsApiManager.getSettings.structFieldToLowerCase()) {
+            (name: String) => normalizeColName(name)
+          } else { (name: String) => name }
+        val (fieldNodes, fieldNames) = s.map {
+          f => (getTypeNode(f.dataType, f.nullable), 
normalizeStructFieldName(f.name))
+        }.unzip
+        TypeBuilder.makeStruct(nullable, fieldNodes.asJava, fieldNames.asJava)
       case _: NullType =>
         TypeBuilder.makeNothing()
       case unknown =>


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

Reply via email to