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

wenchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git


The following commit(s) were added to refs/heads/master by this push:
     new b0285f8bbf82 [SPARK-53902][SQL] Add tree node pattern bits for 
supported expressions in `ParameterizedQuery` argument list
b0285f8bbf82 is described below

commit b0285f8bbf8248ca5b9d9aebea087cb5037a4655
Author: mihailoale-db <[email protected]>
AuthorDate: Thu Oct 16 00:26:26 2025 +0800

    [SPARK-53902][SQL] Add tree node pattern bits for supported expressions in 
`ParameterizedQuery` argument list
    
    ### What changes were proposed in this pull request?
    In this PR I propose that we add tree node pattern bits for supported 
expressions in `ParameterizedQuery` argument list to prepare implementation of 
parameters in single-pass framework.
    
    ### Why are the changes needed?
    To prepare support for parameters in single-pass framework.
    
    ### Does this PR introduce _any_ user-facing change?
    No.
    
    ### How was this patch tested?
    Existing tests.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    No.
    
    Closes #52611 from mihailoale-db/addbits.
    
    Authored-by: mihailoale-db <[email protected]>
    Signed-off-by: Wenchen Fan <[email protected]>
---
 .../spark/sql/catalyst/expressions/VariableReference.scala       | 3 +++
 .../spark/sql/catalyst/expressions/collectionOperations.scala    | 9 ++++++++-
 .../spark/sql/catalyst/expressions/complexTypeCreator.scala      | 4 ++++
 .../scala/org/apache/spark/sql/catalyst/trees/TreePatterns.scala | 4 ++++
 4 files changed, 19 insertions(+), 1 deletion(-)

diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/VariableReference.scala
 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/VariableReference.scala
index 65240b97e972..02a7056d1309 100644
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/VariableReference.scala
+++ 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/VariableReference.scala
@@ -20,6 +20,7 @@ package org.apache.spark.sql.catalyst.expressions
 import org.apache.spark.sql.catalyst.InternalRow
 import org.apache.spark.sql.catalyst.catalog.VariableDefinition
 import org.apache.spark.sql.catalyst.expressions.codegen.{CodegenContext, 
ExprCode}
+import org.apache.spark.sql.catalyst.trees.TreePattern.{TreePattern, 
VARIABLE_REFERENCE}
 import org.apache.spark.sql.catalyst.util.quoteIfNeeded
 import org.apache.spark.sql.connector.catalog.{CatalogPlugin, Identifier}
 import org.apache.spark.sql.types.DataType
@@ -57,4 +58,6 @@ case class VariableReference(
   override protected def doGenCode(ctx: CodegenContext, ev: ExprCode): 
ExprCode = {
     varDef.currentValue.doGenCode(ctx, ev)
   }
+
+  final override val nodePatterns: Seq[TreePattern] = Seq(VARIABLE_REFERENCE)
 }
diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala
 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala
index 5fe3b10bd04c..6dddd9e6646c 100644
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala
+++ 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/collectionOperations.scala
@@ -32,7 +32,12 @@ import org.apache.spark.sql.catalyst.expressions.codegen._
 import org.apache.spark.sql.catalyst.expressions.codegen.Block._
 import org.apache.spark.sql.catalyst.expressions.objects.StaticInvoke
 import org.apache.spark.sql.catalyst.trees.{BinaryLike, UnaryLike}
-import org.apache.spark.sql.catalyst.trees.TreePattern.{ARRAYS_ZIP, CONCAT, 
TreePattern}
+import org.apache.spark.sql.catalyst.trees.TreePattern.{
+  ARRAYS_ZIP,
+  CONCAT,
+  MAP_FROM_ENTRIES,
+  TreePattern
+}
 import org.apache.spark.sql.catalyst.types.{DataTypeUtils, PhysicalDataType, 
PhysicalIntegralType}
 import org.apache.spark.sql.catalyst.util._
 import org.apache.spark.sql.catalyst.util.DateTimeConstants._
@@ -895,6 +900,8 @@ case class MapFromEntries(child: Expression)
 
   override protected def withNewChildInternal(newChild: Expression): 
MapFromEntries =
     copy(child = newChild)
+
+  final override val nodePatterns: Seq[TreePattern] = Seq(MAP_FROM_ENTRIES)
 }
 
 case class MapSort(base: Expression)
diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala
 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala
index f4232cae1066..b062d9430b83 100644
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala
+++ 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/complexTypeCreator.scala
@@ -282,6 +282,8 @@ case class CreateMap(children: Seq[Expression], 
useStringTypeWhenEmpty: Boolean)
 
   override protected def withNewChildrenInternal(newChildren: 
IndexedSeq[Expression]): CreateMap =
     copy(children = newChildren)
+
+  final override val nodePatterns: Seq[TreePattern] = Seq(CREATE_MAP)
 }
 
 object CreateMap {
@@ -348,6 +350,8 @@ case class MapFromArrays(left: Expression, right: 
Expression)
   override protected def withNewChildrenInternal(
       newLeft: Expression, newRight: Expression): MapFromArrays =
     copy(left = newLeft, right = newRight)
+
+  final override val nodePatterns: Seq[TreePattern] = Seq(MAP_FROM_ARRAYS)
 }
 
 /**
diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreePatterns.scala
 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreePatterns.scala
index cc05a38f857b..1c5c696e27ff 100644
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreePatterns.scala
+++ 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/trees/TreePatterns.scala
@@ -40,6 +40,7 @@ object TreePattern extends Enumeration  {
   val COMMON_EXPR_REF: Value = Value
   val CONCAT: Value = Value
   val COUNT: Value = Value
+  val CREATE_MAP: Value = Value
   val CREATE_NAMED_STRUCT: Value = Value
   val CURRENT_LIKE: Value = Value
   val DATETIME: Value = Value
@@ -66,6 +67,8 @@ object TreePattern extends Enumeration  {
   val LIKE_FAMLIY: Value = Value
   val LIST_SUBQUERY: Value = Value
   val LITERAL: Value = Value
+  val MAP_FROM_ARRAYS: Value = Value
+  val MAP_FROM_ENTRIES: Value = Value
   val MAP_OBJECTS: Value = Value
   val MULTI_ALIAS: Value = Value
   val NEW_INSTANCE: Value = Value
@@ -100,6 +103,7 @@ object TreePattern extends Enumeration  {
   val UPDATE_FIELDS: Value = Value
   val UPPER_OR_LOWER: Value = Value
   val UP_CAST: Value = Value
+  val VARIABLE_REFERENCE: Value = Value
   val DISTRIBUTED_SEQUENCE_ID: Value = Value
 
   // Unresolved expression patterns (Alphabetically ordered)


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

Reply via email to