This is an automated email from the ASF dual-hosted git repository.
hongze 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 a7de1955a [GLUTEN-5656][CORE] Avoid executing subqueries with complex
data type during validation
a7de1955a is described below
commit a7de1955a507c185fd7c0ef44a3a36b713115582
Author: Hongze Zhang <[email protected]>
AuthorDate: Thu May 9 12:50:57 2024 +0800
[GLUTEN-5656][CORE] Avoid executing subqueries with complex data type
during validation
Fixes #5656
---
.../gluten/expression/ScalarSubqueryTransformer.scala | 18 +-----------------
1 file changed, 1 insertion(+), 17 deletions(-)
diff --git
a/gluten-core/src/main/scala/org/apache/gluten/expression/ScalarSubqueryTransformer.scala
b/gluten-core/src/main/scala/org/apache/gluten/expression/ScalarSubqueryTransformer.scala
index 61b1e4382..534bde3b3 100644
---
a/gluten-core/src/main/scala/org/apache/gluten/expression/ScalarSubqueryTransformer.scala
+++
b/gluten-core/src/main/scala/org/apache/gluten/expression/ScalarSubqueryTransformer.scala
@@ -20,17 +20,13 @@ import
org.apache.gluten.substrait.expression.{ExpressionBuilder, ExpressionNode
import org.apache.spark.sql.catalyst.expressions._
import org.apache.spark.sql.execution.{BaseSubqueryExec, ScalarSubquery}
-import org.apache.spark.sql.types.{ArrayType, DataType, MapType, StructType}
case class ScalarSubqueryTransformer(plan: BaseSubqueryExec, exprId: ExprId,
query: ScalarSubquery)
extends ExpressionTransformer {
override def doTransform(args: java.lang.Object): ExpressionNode = {
// don't trigger collect when in validation phase
- if (
- TransformerState.underValidationState &&
- !valueSensitiveDataType(query.dataType)
- ) {
+ if (TransformerState.underValidationState) {
return ExpressionBuilder.makeLiteral(null, query.dataType, true)
}
// the first column in first row from `query`.
@@ -50,16 +46,4 @@ case class ScalarSubqueryTransformer(plan: BaseSubqueryExec,
exprId: ExprId, que
}
ExpressionBuilder.makeLiteral(result, query.dataType, result == null)
}
-
- /**
- * DataTypes which supported or not depend on actual value
- *
- * @param dataType
- * @return
- */
- def valueSensitiveDataType(dataType: DataType): Boolean = {
- dataType.isInstanceOf[MapType] ||
- dataType.isInstanceOf[ArrayType] ||
- dataType.isInstanceOf[StructType]
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]