You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by ma...@apache.org on 2024/10/18 06:46:21 UTC
(spark) branch master updated: [SPARK-50010][SQL] Expand implicit collation mismatch error
This is an automated email from the ASF dual-hosted git repository.
maxgekk 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 55c558a9fb00 [SPARK-50010][SQL] Expand implicit collation mismatch error
55c558a9fb00 is described below
commit 55c558a9fb0034ad4e5cfbce53511cc80e23a993
Author: Uros Bojanic <ur...@databricks.com>
AuthorDate: Fri Oct 18 08:46:06 2024 +0200
[SPARK-50010][SQL] Expand implicit collation mismatch error
### What changes were proposed in this pull request?
Include the implicit string collations in the `COLLATION_MISMATCH.IMPLICIT` error message.
### Why are the changes needed?
Make the implicit collation mismatch error more user-friendly.
### Does this PR introduce _any_ user-facing change?
Yes, implicit collation mismatch error is changed.
### How was this patch tested?
Updated existing tests.
### Was this patch authored or co-authored using generative AI tooling?
No.
Closes #48495 from uros-db/implicit-collation-mismatch.
Authored-by: Uros Bojanic <ur...@databricks.com>
Signed-off-by: Max Gekk <ma...@gmail.com>
---
.../src/main/resources/error/error-conditions.json | 2 +-
...or-conditions-collation-mismatch-error-class.md | 2 +-
.../sql/catalyst/analysis/CollationTypeCasts.scala | 4 +-
.../spark/sql/errors/QueryCompilationErrors.scala | 6 +-
.../sql-tests/analyzer-results/collations.sql.out | 105 ++++++++++++++++-----
.../resources/sql-tests/results/collations.sql.out | 105 ++++++++++++++++-----
.../sql/CollationStringExpressionsSuite.scala | 4 +-
.../org/apache/spark/sql/CollationSuite.scala | 40 ++++++--
8 files changed, 212 insertions(+), 56 deletions(-)
diff --git a/common/utils/src/main/resources/error/error-conditions.json b/common/utils/src/main/resources/error/error-conditions.json
index 99c91f1f18e8..752524eab7cc 100644
--- a/common/utils/src/main/resources/error/error-conditions.json
+++ b/common/utils/src/main/resources/error/error-conditions.json
@@ -571,7 +571,7 @@
},
"IMPLICIT" : {
"message" : [
- "Error occurred due to the mismatch between multiple implicit non-default collations. Use COLLATE function to set the collation explicitly."
+ "Error occurred due to the mismatch between implicit collations: [<implicitTypes>]. Use COLLATE function to set the collation explicitly."
]
}
},
diff --git a/docs/sql-error-conditions-collation-mismatch-error-class.md b/docs/sql-error-conditions-collation-mismatch-error-class.md
index b6a63d87b36a..79aaaf00ee47 100644
--- a/docs/sql-error-conditions-collation-mismatch-error-class.md
+++ b/docs/sql-error-conditions-collation-mismatch-error-class.md
@@ -36,6 +36,6 @@ Error occurred due to the mismatch between explicit collations: `<explicitTypes>
## IMPLICIT
-Error occurred due to the mismatch between multiple implicit non-default collations. Use COLLATE function to set the collation explicitly.
+Error occurred due to the mismatch between implicit collations: `<implicitTypes>`. Use COLLATE function to set the collation explicitly.
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CollationTypeCasts.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CollationTypeCasts.scala
index ced54e590ecc..cfde8c9d8aa1 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CollationTypeCasts.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/CollationTypeCasts.scala
@@ -191,7 +191,9 @@ object CollationTypeCasts extends TypeCoercionRule {
.distinct
if (implicitTypes.length > 1) {
- throw QueryCompilationErrors.implicitCollationMismatchError()
+ throw QueryCompilationErrors.implicitCollationMismatchError(
+ implicitTypes.map(t => StringType(t))
+ )
}
else {
implicitTypes.headOption.map(StringType(_)).getOrElse(SQLConf.get.defaultStringType)
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala
index 5e08d463b9e0..3dc906ed9828 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/errors/QueryCompilationErrors.scala
@@ -3649,10 +3649,12 @@ private[sql] object QueryCompilationErrors extends QueryErrorsBase with Compilat
)
}
- def implicitCollationMismatchError(): Throwable = {
+ def implicitCollationMismatchError(implicitTypes: Seq[StringType]): Throwable = {
new AnalysisException(
errorClass = "COLLATION_MISMATCH.IMPLICIT",
- messageParameters = Map.empty
+ messageParameters = Map(
+ "implicitTypes" -> implicitTypes.map(toSQLType).mkString(", ")
+ )
)
}
diff --git a/sql/core/src/test/resources/sql-tests/analyzer-results/collations.sql.out b/sql/core/src/test/resources/sql-tests/analyzer-results/collations.sql.out
index eed7fa73ab69..6a00d31f6431 100644
--- a/sql/core/src/test/resources/sql-tests/analyzer-results/collations.sql.out
+++ b/sql/core/src/test/resources/sql-tests/analyzer-results/collations.sql.out
@@ -411,7 +411,10 @@ select str_to_map(text, pairDelim, keyValueDelim) from t4
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -693,7 +696,10 @@ select concat_ws(' ', utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -748,7 +754,10 @@ select elt(2, utf8_binary, utf8_lcase, s) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -803,7 +812,10 @@ select split_part(utf8_binary, utf8_lcase, 3) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -890,7 +902,10 @@ select contains(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -977,7 +992,10 @@ select substring_index(utf8_binary, utf8_lcase, 2) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1064,7 +1082,10 @@ select instr(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1151,7 +1172,10 @@ select find_in_set(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1214,7 +1238,10 @@ select startswith(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1309,7 +1336,10 @@ select translate(utf8_binary, utf8_lcase, '12345') from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1380,7 +1410,10 @@ select replace(utf8_binary, utf8_lcase, 'abc') from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1467,7 +1500,10 @@ select endswith(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1754,7 +1790,10 @@ select overlay(utf8_binary, utf8_lcase, 2) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1913,7 +1952,10 @@ select levenshtein(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -2088,7 +2130,10 @@ select rpad(utf8_binary, 8, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -2151,7 +2196,10 @@ select lpad(utf8_binary, 8, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -2214,7 +2262,10 @@ select locate(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -2301,7 +2352,10 @@ select TRIM(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+ }
}
@@ -2388,7 +2442,10 @@ select BTRIM(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -2475,7 +2532,10 @@ select LTRIM(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+ }
}
@@ -2562,7 +2622,10 @@ select RTRIM(utf8_binary, utf8_lcase) from t5
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+ }
}
diff --git a/sql/core/src/test/resources/sql-tests/results/collations.sql.out b/sql/core/src/test/resources/sql-tests/results/collations.sql.out
index 9d29a46e5a0e..fe77f88f2af4 100644
--- a/sql/core/src/test/resources/sql-tests/results/collations.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/collations.sql.out
@@ -453,7 +453,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -766,7 +769,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -873,7 +879,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -980,7 +989,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1121,7 +1133,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1274,7 +1289,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1427,7 +1445,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1580,7 +1601,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1707,7 +1731,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1880,7 +1907,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -1993,7 +2023,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -2146,7 +2179,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -2744,7 +2780,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -3064,7 +3103,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -3471,7 +3513,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -3598,7 +3643,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -3725,7 +3773,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -3878,7 +3929,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+ }
}
@@ -4019,7 +4073,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING\", \"STRING COLLATE UTF8_LCASE\""
+ }
}
@@ -4172,7 +4229,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+ }
}
@@ -4313,7 +4373,10 @@ struct<>
org.apache.spark.sql.AnalysisException
{
"errorClass" : "COLLATION_MISMATCH.IMPLICIT",
- "sqlState" : "42P21"
+ "sqlState" : "42P21",
+ "messageParameters" : {
+ "implicitTypes" : "\"STRING COLLATE UTF8_LCASE\", \"STRING\""
+ }
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/CollationStringExpressionsSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/CollationStringExpressionsSuite.scala
index fe9872ddaf57..9407a0df1ed3 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/CollationStringExpressionsSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/CollationStringExpressionsSuite.scala
@@ -164,7 +164,9 @@ class CollationStringExpressionsSuite
},
condition = "COLLATION_MISMATCH.IMPLICIT",
sqlState = "42P21",
- parameters = Map.empty
+ parameters = Map(
+ "implicitTypes" -> """"STRING", "STRING COLLATE UTF8_LCASE""""
+ )
)
checkError(
exception = intercept[AnalysisException] {
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/CollationSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/CollationSuite.scala
index b6da0b169f05..f1b70959ce08 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/CollationSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/CollationSuite.scala
@@ -545,7 +545,9 @@ class CollationSuite extends DatasourceV2SQLBase with AdaptiveSparkPlanHelper {
s"WHERE c1 = SUBSTR(COLLATE('a', 'UNICODE'), 0)")
},
condition = "COLLATION_MISMATCH.IMPLICIT",
- parameters = Map.empty
+ parameters = Map(
+ "implicitTypes" -> """"STRING COLLATE UTF8_LCASE", "STRING COLLATE UNICODE""""
+ )
)
// in operator
@@ -568,7 +570,10 @@ class CollationSuite extends DatasourceV2SQLBase with AdaptiveSparkPlanHelper {
exception = intercept[AnalysisException] {
sql(s"SELECT c1 || c2 FROM $tableName")
},
- condition = "COLLATION_MISMATCH.IMPLICIT"
+ condition = "COLLATION_MISMATCH.IMPLICIT",
+ parameters = Map(
+ "implicitTypes" -> """"STRING COLLATE UTF8_LCASE", "STRING COLLATE UNICODE""""
+ )
)
@@ -583,7 +588,10 @@ class CollationSuite extends DatasourceV2SQLBase with AdaptiveSparkPlanHelper {
exception = intercept[AnalysisException] {
sql(s"SELECT c1 FROM $tableName WHERE c1 = c3")
},
- condition = "COLLATION_MISMATCH.IMPLICIT"
+ condition = "COLLATION_MISMATCH.IMPLICIT",
+ parameters = Map(
+ "implicitTypes" -> """"STRING COLLATE UTF8_LCASE", "STRING COLLATE UNICODE_CI""""
+ )
)
// different explicit collations are set
@@ -629,7 +637,10 @@ class CollationSuite extends DatasourceV2SQLBase with AdaptiveSparkPlanHelper {
exception = intercept[AnalysisException] {
sql(s"SELECT c1 FROM $tableName WHERE c1 || c3 = 'aa'")
},
- condition = "COLLATION_MISMATCH.IMPLICIT"
+ condition = "COLLATION_MISMATCH.IMPLICIT",
+ parameters = Map(
+ "implicitTypes" -> """"STRING COLLATE UTF8_LCASE", "STRING COLLATE UNICODE_CI""""
+ )
)
// concat on different implicit collations should succeed,
@@ -638,7 +649,10 @@ class CollationSuite extends DatasourceV2SQLBase with AdaptiveSparkPlanHelper {
exception = intercept[AnalysisException] {
sql(s"SELECT * FROM $tableName ORDER BY c1 || c3")
},
- condition = "COLLATION_MISMATCH.IMPLICIT"
+ condition = "COLLATION_MISMATCH.IMPLICIT",
+ parameters = Map(
+ "implicitTypes" -> """"STRING COLLATE UTF8_LCASE", "STRING COLLATE UNICODE_CI""""
+ )
)
// concat + in
@@ -655,14 +669,20 @@ class CollationSuite extends DatasourceV2SQLBase with AdaptiveSparkPlanHelper {
exception = intercept[AnalysisException] {
sql(s"SELECT * FROM $tableName WHERE contains(c1||c3, 'a')")
},
- condition = "COLLATION_MISMATCH.IMPLICIT"
+ condition = "COLLATION_MISMATCH.IMPLICIT",
+ parameters = Map(
+ "implicitTypes" -> """"STRING COLLATE UTF8_LCASE", "STRING COLLATE UNICODE_CI""""
+ )
)
checkError(
exception = intercept[AnalysisException] {
sql(s"SELECT array('A', 'a' COLLATE UNICODE) == array('b' COLLATE UNICODE_CI)")
},
- condition = "COLLATION_MISMATCH.IMPLICIT"
+ condition = "COLLATION_MISMATCH.IMPLICIT",
+ parameters = Map(
+ "implicitTypes" -> """"STRING COLLATE UNICODE", "STRING COLLATE UNICODE_CI""""
+ )
)
checkAnswer(sql("SELECT array_join(array('a', 'b' collate UNICODE), 'c' collate UNICODE_CI)"),
@@ -811,7 +831,11 @@ class CollationSuite extends DatasourceV2SQLBase with AdaptiveSparkPlanHelper {
exception = intercept[AnalysisException] {
sql(s"CREATE TABLE $newTableName AS SELECT c1 || c2 FROM $tableName")
},
- condition = "COLLATION_MISMATCH.IMPLICIT")
+ condition = "COLLATION_MISMATCH.IMPLICIT",
+ parameters = Map(
+ "implicitTypes" -> """"STRING COLLATE UNICODE", "STRING COLLATE UTF8_LCASE""""
+ )
+ )
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org