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 5d81a1cf91a [SPARK-42453][CONNECT] Implement function max in Scala 
client
5d81a1cf91a is described below

commit 5d81a1cf91a53fd3fe7051f25fdeedf389413f09
Author: Rui Wang <[email protected]>
AuthorDate: Thu Feb 16 09:43:12 2023 +0800

    [SPARK-42453][CONNECT] Implement function max in Scala client
    
    ### What changes were proposed in this pull request?
    
    This PR tries to implement functions.max for Scala client.
    
    ### Why are the changes needed?
    
    API coverage.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No
    
    ### How was this patch tested?
    
    Existing scala client testing framework.
    
    Closes #40041 from amaliujia/rw-scala-count.
    
    Authored-by: Rui Wang <[email protected]>
    Signed-off-by: Wenchen Fan <[email protected]>
---
 .../main/scala/org/apache/spark/sql/functions.scala   |  8 ++++++++
 .../apache/spark/sql/PlanGenerationTestSuite.scala    |  4 ++++
 .../query-tests/explain-results/function_max.explain  |  2 ++
 .../resources/query-tests/queries/function_max.json   | 19 +++++++++++++++++++
 .../query-tests/queries/function_max.proto.bin        |  4 ++++
 5 files changed, 37 insertions(+)

diff --git 
a/connector/connect/client/jvm/src/main/scala/org/apache/spark/sql/functions.scala
 
b/connector/connect/client/jvm/src/main/scala/org/apache/spark/sql/functions.scala
index 7045b2885d3..6f433245cf3 100644
--- 
a/connector/connect/client/jvm/src/main/scala/org/apache/spark/sql/functions.scala
+++ 
b/connector/connect/client/jvm/src/main/scala/org/apache/spark/sql/functions.scala
@@ -44,6 +44,14 @@ object functions {
    */
   def col(colName: String): Column = Column(colName)
 
+  /**
+   * Aggregate function: returns the maximum value of the expression in a 
group.
+   *
+   * @group agg_funcs
+   * @since 3.4.0
+   */
+  def max(e: Column): Column = Column.fn("max", e)
+
   private def createLiteral(f: proto.Expression.Literal.Builder => Unit): 
Column = Column {
     builder =>
       val literalBuilder = proto.Expression.Literal.newBuilder()
diff --git 
a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/PlanGenerationTestSuite.scala
 
b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/PlanGenerationTestSuite.scala
index 5a2a9485cf0..416a9b33886 100644
--- 
a/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/PlanGenerationTestSuite.scala
+++ 
b/connector/connect/client/jvm/src/test/scala/org/apache/spark/sql/PlanGenerationTestSuite.scala
@@ -731,6 +731,10 @@ class PlanGenerationTestSuite extends ConnectFunSuite with 
BeforeAndAfterAll wit
     select(fn.col("id"))
   }
 
+  test("function max") {
+    select(fn.max(Column("id")))
+  }
+
   test("function udf " + scala) {
     // This test might be a bit tricky if different JVM
     // versions are used to generate the golden files.
diff --git 
a/connector/connect/common/src/test/resources/query-tests/explain-results/function_max.explain
 
b/connector/connect/common/src/test/resources/query-tests/explain-results/function_max.explain
new file mode 100644
index 00000000000..077ba5498b1
--- /dev/null
+++ 
b/connector/connect/common/src/test/resources/query-tests/explain-results/function_max.explain
@@ -0,0 +1,2 @@
+'Project [unresolvedalias('max('id), None)]
++- LocalRelation <empty>, [none#0L, none#1, none#2]
diff --git 
a/connector/connect/common/src/test/resources/query-tests/queries/function_max.json
 
b/connector/connect/common/src/test/resources/query-tests/queries/function_max.json
new file mode 100644
index 00000000000..2aba75d4337
--- /dev/null
+++ 
b/connector/connect/common/src/test/resources/query-tests/queries/function_max.json
@@ -0,0 +1,19 @@
+{
+  "project": {
+    "input": {
+      "localRelation": {
+        "schema": "struct\u003cid:bigint,a:int,b:double\u003e"
+      }
+    },
+    "expressions": [{
+      "unresolvedFunction": {
+        "functionName": "max",
+        "arguments": [{
+          "unresolvedAttribute": {
+            "unparsedIdentifier": "id"
+          }
+        }]
+      }
+    }]
+  }
+}
\ No newline at end of file
diff --git 
a/connector/connect/common/src/test/resources/query-tests/queries/function_max.proto.bin
 
b/connector/connect/common/src/test/resources/query-tests/queries/function_max.proto.bin
new file mode 100644
index 00000000000..34d523d28b8
--- /dev/null
+++ 
b/connector/connect/common/src/test/resources/query-tests/queries/function_max.proto.bin
@@ -0,0 +1,4 @@
+7
+$Z" struct<id:bigint,a:int,b:double>
+max
+id
\ No newline at end of file


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

Reply via email to