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

ruifengz 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 a598f654066d [SPARK-47664][PYTHON][CONNECT][TESTS][FOLLOW-UP] Add more 
tests
a598f654066d is described below

commit a598f654066d79bb886c15db082f665eeaa77a55
Author: Ruifeng Zheng <ruife...@apache.org>
AuthorDate: Tue Apr 2 16:33:32 2024 +0800

    [SPARK-47664][PYTHON][CONNECT][TESTS][FOLLOW-UP] Add more tests
    
    ### What changes were proposed in this pull request?
    Add more tests
    
    ### Why are the changes needed?
    for test coverage, to address 
https://github.com/apache/spark/pull/45788#discussion_r1546663788
    
    ### Does this PR introduce _any_ user-facing change?
    no, test only
    
    ### How was this patch tested?
    new tests
    
    ### Was this patch authored or co-authored using generative AI tooling?
    no
    
    Closes #45809 from zhengruifeng/col_name_val_test.
    
    Authored-by: Ruifeng Zheng <ruife...@apache.org>
    Signed-off-by: Ruifeng Zheng <ruife...@apache.org>
---
 .../sql/tests/connect/test_connect_basic.py        | 47 +++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

diff --git a/python/pyspark/sql/tests/connect/test_connect_basic.py 
b/python/pyspark/sql/tests/connect/test_connect_basic.py
index 786b9e2896c2..3b8e8165b4bf 100755
--- a/python/pyspark/sql/tests/connect/test_connect_basic.py
+++ b/python/pyspark/sql/tests/connect/test_connect_basic.py
@@ -1219,6 +1219,11 @@ class SparkConnectBasicTests(SparkConnectSQLTestCase):
         self.assert_eq(parse_attr_name("`a"), None)
         self.assert_eq(parse_attr_name("a`"), None)
 
+        self.assert_eq(parse_attr_name("`a`.b"), ["a", "b"])
+        self.assert_eq(parse_attr_name("`a`.`b`"), ["a", "b"])
+        self.assert_eq(parse_attr_name("`a```.b"), ["a`", "b"])
+        self.assert_eq(parse_attr_name("`a``.b"), None)
+
         self.assert_eq(parse_attr_name("a.b.c"), ["a", "b", "c"])
         self.assert_eq(parse_attr_name("`a`.`b`.`c`"), ["a", "b", "c"])
         self.assert_eq(parse_attr_name("a.`b`.c"), ["a", "b", "c"])
@@ -1284,7 +1289,6 @@ class SparkConnectBasicTests(SparkConnectSQLTestCase):
         self.assertTrue(verify_col_name("m.`s`.id", cdf.schema))
         self.assertTrue(verify_col_name("`m`.`s`.`id`", cdf.schema))
         self.assertFalse(verify_col_name("m.`s.id`", cdf.schema))
-        self.assertFalse(verify_col_name("m.`s.id`", cdf.schema))
 
         self.assertTrue(verify_col_name("a", cdf.schema))
         self.assertTrue(verify_col_name("`a`", cdf.schema))
@@ -1294,6 +1298,47 @@ class SparkConnectBasicTests(SparkConnectSQLTestCase):
         self.assertTrue(verify_col_name("`a`.`v`", cdf.schema))
         self.assertFalse(verify_col_name("`a`.`x`", cdf.schema))
 
+        cdf = (
+            self.connect.range(10)
+            .withColumn("v", CF.lit(123))
+            .withColumn("s.s", CF.struct("id", "v"))
+            .withColumn("m`", CF.struct("`s.s`", "v"))
+        )
+
+        # root
+        # |-- id: long (nullable = false)
+        # |-- v: string (nullable = false)
+        # |-- s.s: struct (nullable = false)
+        # |    |-- id: long (nullable = false)
+        # |    |-- v: string (nullable = false)
+        # |-- m`: struct (nullable = false)
+        # |    |-- s.s: struct (nullable = false)
+        # |    |    |-- id: long (nullable = false)
+        # |    |    |-- v: string (nullable = false)
+        # |    |-- v: string (nullable = false)
+
+        self.assertFalse(verify_col_name("s", cdf.schema))
+        self.assertFalse(verify_col_name("`s`", cdf.schema))
+        self.assertFalse(verify_col_name("s.s", cdf.schema))
+        self.assertFalse(verify_col_name("s.`s`", cdf.schema))
+        self.assertFalse(verify_col_name("`s`.s", cdf.schema))
+        self.assertTrue(verify_col_name("`s.s`", cdf.schema))
+
+        self.assertFalse(verify_col_name("m", cdf.schema))
+        self.assertFalse(verify_col_name("`m`", cdf.schema))
+        self.assertTrue(verify_col_name("`m```", cdf.schema))
+
+        self.assertFalse(verify_col_name("`m```.s", cdf.schema))
+        self.assertFalse(verify_col_name("`m```.`s`", cdf.schema))
+        self.assertFalse(verify_col_name("`m```.s.s", cdf.schema))
+        self.assertFalse(verify_col_name("`m```.s.`s`", cdf.schema))
+        self.assertTrue(verify_col_name("`m```.`s.s`", cdf.schema))
+
+        self.assertFalse(verify_col_name("`m```.s.s.v", cdf.schema))
+        self.assertFalse(verify_col_name("`m```.s.`s`.v", cdf.schema))
+        self.assertTrue(verify_col_name("`m```.`s.s`.v", cdf.schema))
+        self.assertTrue(verify_col_name("`m```.`s.s`.`v`", cdf.schema))
+
 
 if __name__ == "__main__":
     from pyspark.sql.tests.connect.test_connect_basic import *  # noqa: F401


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org

Reply via email to