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]