Skip to content

Commit 75aeda7

Browse files
committed
one more comment
1 parent b518114 commit 75aeda7

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/postgreSQL/PostgreCastStringToBoolean.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ case class PostgreCastStringToBoolean(child: Expression)
3737
}
3838

3939
override def nullSafeEval(input: Any): Any = {
40-
val s = input.asInstanceOf[UTF8String]
40+
val s = input.asInstanceOf[UTF8String].trim().toLowerCase()
4141
if (StringUtils.isTrueString(s)) {
4242
true
4343
} else if (StringUtils.isFalseString(s)) {
@@ -51,14 +51,16 @@ case class PostgreCastStringToBoolean(child: Expression)
5151
val stringUtils = inline"${StringUtils.getClass.getName.stripSuffix("$")}"
5252
val eval = child.genCode(ctx)
5353
val javaType = JavaCode.javaType(dataType)
54+
val preprocessedString = ctx.freshName("preprocessedString")
5455
val castCode =
5556
code"""
5657
boolean ${ev.isNull} = ${eval.isNull};
5758
$javaType ${ev.value} = false;
5859
if (!${eval.isNull}) {
59-
if ($stringUtils.isTrueString(${eval.value})) {
60+
UTF8String $preprocessedString = ${eval.value}.trim().toLowerCase();
61+
if ($stringUtils.isTrueString($preprocessedString)) {
6062
${ev.value} = true;
61-
} else if ($stringUtils.isFalseString(${eval.value})) {
63+
} else if ($stringUtils.isFalseString($preprocessedString)) {
6264
${ev.value} = false;
6365
} else {
6466
${ev.isNull} = true;

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/util/postgreSQL/StringUtils.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ object StringUtils {
2727
private[this] val falseStrings =
2828
Set("false", "fals", "fal", "fa", "f", "no", "n", "off", "of", "0").map(UTF8String.fromString)
2929

30-
def isTrueString(s: UTF8String): Boolean = trueStrings.contains(s.trim().toLowerCase())
30+
def isTrueString(s: UTF8String): Boolean = trueStrings.contains(s)
3131

32-
def isFalseString(s: UTF8String): Boolean = falseStrings.contains(s.trim().toLowerCase())
32+
def isFalseString(s: UTF8String): Boolean = falseStrings.contains(s)
3333
}

0 commit comments

Comments
 (0)