cloud-fan commented on code in PR #49772:
URL: https://github.com/apache/spark/pull/49772#discussion_r1951990003
##########
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveDDLCommandStringTypes.scala:
##########
@@ -155,22 +123,22 @@ object ResolveDefaultStringTypes extends
Rule[LogicalPlan] {
dataType.existsRecursively(isDefaultStringType)
private def isDefaultStringType(dataType: DataType): Boolean = {
+ // STRING (without explicit collation) is considered default string type.
+ // STRING COLLATE <collation_name> (with explicit collation) is not
considered
+ // default string type even when explicit collation is UTF8_BINARY
(default collation).
dataType match {
- case st: StringType =>
- // should only return true for StringType object and not
StringType("UTF8_BINARY")
- st.eq(StringType) || st.isInstanceOf[TemporaryStringType]
+ // should only return true for StringType object and not for
StringType("UTF8_BINARY")
+ case st: StringType => st.eq(StringType)
case _ => false
}
}
private def replaceDefaultStringType(dataType: DataType, newType:
StringType): DataType = {
+ // Should replace STRING with the new type.
+ // Should not replace STRING COLLATE UTF8_BINARY, as that is explicit
collation.
dataType.transformRecursively {
case currentType: StringType if isDefaultStringType(currentType) =>
- if (currentType == newType) {
- TemporaryStringType()
- } else {
- newType
- }
+ newType
Review Comment:
This replacement won't apply if `newType` is `StringType(UTF8_BINARY)` due
to how the tree node framework is designed, see
https://github.com/apache/spark/pull/49772/files#diff-2f7b66736bcb9814602c4dd10ae53de23499556d0d7843d77b0470eb56626c88L35
Let me ask it again: do we still need the
`RuleExecutor.forceAdditionalIteration` hack?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]