[ 
https://issues.apache.org/jira/browse/SPARK-60130?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18138426#comment-18138426
 ] 

Wayne Wang commented on SPARK-60130:
------------------------------------

Submitted a fix with regression tests:
https://github.com/apache/spark/pull/60116

> CREATE TABLE LIKE does not preserve the source table's default collation
> ------------------------------------------------------------------------
>
>                 Key: SPARK-60130
>                 URL: https://issues.apache.org/jira/browse/SPARK-60130
>             Project: Spark
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 5.0.0
>         Environment: Spark: 5.0.0-SNAPSHOT
> Commit: 38422aefaf599ffb4cfa579d98898d95b1f02081
> Java: OpenJDK 17.0.17
> OS: macOS 15.7.4
>            Reporter: Yibo Dong
>            Priority: Major
>              Labels: pull-request-available, sql
>
> h2. What happened
> {{CREATE TABLE LIKE}} does not preserve the source table's {{DEFAULT 
> COLLATION}}. When a new {{STRING}} column is added to the cloned table, it 
> uses {{UTF8_BINARY}} instead of the source table's {{UTF8_LCASE}} default.
> This changes string comparison and grouping results.
> h2. How to reproduce
> Save the following SQL as {{tmp.sql}}:
> {code:sql}
> DROP TABLE IF EXISTS t_clone_collation_src;
> DROP TABLE IF EXISTS t_clone_collation_dst;
> CREATE TABLE t_clone_collation_src (s STRING)
> USING PARQUET
> DEFAULT COLLATION UTF8_LCASE;
> CREATE TABLE t_clone_collation_dst LIKE t_clone_collation_src;
> ALTER TABLE t_clone_collation_dst ADD COLUMNS (t STRING);
> INSERT INTO t_clone_collation_dst VALUES
>   ('a', 'a'),
>   ('A', 'A');
> SELECT t_collation, COUNT(*) AS distinct_t_values
> FROM (
>   SELECT t, collation(t) AS t_collation
>   FROM t_clone_collation_dst
>   GROUP BY t, collation(t)
> ) groups
> GROUP BY t_collation
> ORDER BY t_collation;
> DROP TABLE t_clone_collation_dst;
> DROP TABLE t_clone_collation_src;
> {code}
> Run using {{spark-sql}}:
> {code:bash}
> spark-sql --master 'local[2]' 
>   --conf spark.ui.enabled=false 
>   --conf spark.sql.shuffle.partitions=1 
>   -f tmp.sql
> {code}
> h2. Expected result
> The cloned table should preserve the source table's {{UTF8_LCASE}} default 
> collation. The newly added column {{t}} should therefore use case-insensitive 
> comparison, grouping {{a}} and {{A}} together.
> {code:none}
> t_collation               | distinct_t_values
> --------------------------+------------------
> SYSTEM.BUILTIN.UTF8_LCASE | 1
> {code}
> h2. Actual result
> The newly added column uses {{UTF8_BINARY}}, so {{a}} and {{A}} are treated 
> as distinct values.
> {code:none}
> t_collation                | distinct_t_values
> ---------------------------+------------------
> SYSTEM.BUILTIN.UTF8_BINARY | 2
> {code}



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

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

Reply via email to