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

yao 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 8b16196ad89a [SPARK-48680][SQL][DOCS] Add missing Java APIs and 
language-specific documentations for char/varchar
8b16196ad89a is described below

commit 8b16196ad89ad34e1981fc8df5f113094919e184
Author: Kent Yao <y...@apache.org>
AuthorDate: Mon Jun 24 16:25:24 2024 +0800

    [SPARK-48680][SQL][DOCS] Add missing Java APIs and language-specific 
documentations for char/varchar
    
    ### What changes were proposed in this pull request?
    
    - Add Java APIs to create char/varchar types
    - Doc char/varchar to language-specific tables
    
    ### Why are the changes needed?
    - feature parity among polyglot APIs
    - document improvement
    
    ### Does this PR introduce _any_ user-facing change?
    yes, new APIs
    
    ### How was this patch tested?
    
    doc build
    ### Was this patch authored or co-authored using generative AI tooling?
    no
    
    Closes #47052 from yaooqinn/SPARK-48680.
    
    Authored-by: Kent Yao <y...@apache.org>
    Signed-off-by: Kent Yao <y...@apache.org>
---
 docs/sql-ref-datatypes.md                              | 10 +++++++++-
 .../java/org/apache/spark/sql/types/DataTypes.java     | 18 ++++++++++++++++++
 .../org/apache/spark/sql/types/DataTypeSuite.scala     |  9 +++++++++
 3 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/docs/sql-ref-datatypes.md b/docs/sql-ref-datatypes.md
index 8d75b4a175ab..3a4530dcecae 100644
--- a/docs/sql-ref-datatypes.md
+++ b/docs/sql-ref-datatypes.md
@@ -126,7 +126,9 @@ from pyspark.sql.types import *
 |**FloatType**|float<br/>**Note:** Numbers will be converted to 4-byte 
single-precision floating point numbers at runtime.|FloatType()|
 |**DoubleType**|float|DoubleType()|
 |**DecimalType**|decimal.Decimal|DecimalType()|
-|**StringType**|string|StringType()|
+|**StringType**|str|StringType()|
+|**CharType(length)**|str|CharType(length)|
+|**VarcharType(length)**|str|VarcharType(length)|
 |**BinaryType**|bytearray|BinaryType()|
 |**BooleanType**|bool|BooleanType()|
 |**TimestampType**|datetime.datetime|TimestampType()|
@@ -157,6 +159,8 @@ You can access them by doing
 |**DoubleType**|Double|DoubleType|
 |**DecimalType**|java.math.BigDecimal|DecimalType|
 |**StringType**|String|StringType|
+|**CharType(length)**|String|CharType(length)|
+|**VarcharType(length)**|String|VarcharType(length)|
 |**BinaryType**|Array[Byte]|BinaryType|
 |**BooleanType**|Boolean|BooleanType|
 |**TimestampType**|java.time.Instant or java.sql.Timestamp|TimestampType|
@@ -188,6 +192,8 @@ please use factory methods provided in
 |**DoubleType**|double or Double|DataTypes.DoubleType|
 
|**DecimalType**|java.math.BigDecimal|DataTypes.createDecimalType()<br/>DataTypes.createDecimalType(*precision*,
 *scale*).|
 |**StringType**|String|DataTypes.StringType|
+|**CharType(length)**|String|DataTypes.createCharType(length)|
+|**VarcharType(length)**|String|DataTypes.createVarcharType(length)|
 |**BinaryType**|byte[]|DataTypes.BinaryType|
 |**BooleanType**|boolean or Boolean|DataTypes.BooleanType|
 |**TimestampType**|java.time.Instant or 
java.sql.Timestamp|DataTypes.TimestampType|
@@ -242,6 +248,8 @@ The following table shows the type names as well as aliases 
used in Spark SQL pa
 |**TimestampType**|TIMESTAMP, TIMESTAMP_LTZ|
 |**TimestampNTZType**|TIMESTAMP_NTZ|
 |**StringType**|STRING|
+|**CharType(length)**|CHAR(length)|
+|**VarcharType(length)**|VARCHAR(length)|
 |**BinaryType**|BINARY|
 |**DecimalType**|DECIMAL, DEC, NUMERIC|
 |**YearMonthIntervalType**|INTERVAL YEAR, INTERVAL YEAR TO MONTH, INTERVAL 
MONTH|
diff --git a/sql/api/src/main/java/org/apache/spark/sql/types/DataTypes.java 
b/sql/api/src/main/java/org/apache/spark/sql/types/DataTypes.java
index 32c20dedac4c..0034b8e71518 100644
--- a/sql/api/src/main/java/org/apache/spark/sql/types/DataTypes.java
+++ b/sql/api/src/main/java/org/apache/spark/sql/types/DataTypes.java
@@ -259,4 +259,22 @@ public class DataTypes {
 
     return StructType$.MODULE$.apply(fields);
   }
+
+  /**
+   * Creates a CharType with the given length.
+   *
+   * @since 4.0.0
+   */
+  public static CharType createCharType(int length) {
+    return new CharType(length);
+  }
+
+  /**
+   * Creates a VarcharType with the given length.
+   *
+   * @since 4.0.0
+   */
+  public static VarcharType createVarcharType(int length) {
+    return new VarcharType(length);
+  }
 }
diff --git 
a/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala 
b/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
index 3a88b900430d..8fd9b7c43a65 100644
--- a/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
+++ b/sql/catalyst/src/test/scala/org/apache/spark/sql/types/DataTypeSuite.scala
@@ -1000,4 +1000,13 @@ class DataTypeSuite extends SparkFunSuite {
       parameters = Map("provider" -> "badProvider", "supportedProviders" -> 
"spark, icu")
     )
   }
+
+  test("SPARK-48680: Add CharType and VarcharType to DataTypes JAVA API") {
+    assert(DataTypes.createCharType(1) === CharType(1))
+    assert(DataTypes.createVarcharType(100) === VarcharType(100))
+    val exception = intercept[IllegalArgumentException] {
+      DataTypes.createVarcharType(-1)
+    }
+    assert(exception.getMessage.contains("The length of varchar type cannot be 
negative."))
+  }
 }


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

Reply via email to