Github user kevinyu98 commented on a diff in the pull request:
https://github.com/apache/spark/pull/12646#discussion_r116671392
--- Diff:
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala
---
@@ -461,68 +462,249 @@ case class FindInSet(left: Expression, right:
Expression) extends BinaryExpressi
}
/**
- * A function that trim the spaces from both ends for the specified string.
+ * A function that trim the spaces or a trim string from both ends for the
specified string.
*/
@ExpressionDescription(
- usage = "_FUNC_(str) - Removes the leading and trailing space characters
from `str`.",
+ usage = """
+ _FUNC_(str) - Removes the leading and trailing space characters from
`str`.
+ _FUNC_(BOTH trimString FROM str) - Remove the leading and trailing
trimString from `str`
+ _FUNC_(LEADING trimChar FROM str) - Remove the leading trimString from
`str`
+ _FUNC_(TRAILING trimChar FROM str) - Remove the trailing trimString
from `str`
+ """,
extended = """
+ Arguments:
+ str - a string expression
+ trimString - the trim string
+ BOTH, FROM - these are keyword to specify for trim string from both
side of the string
+ LEADING, FROM - these are keyword to specify for trim string from
left side of the string
+ TRAILING, FROM - these are keyword to specify for trim string from
right side of the string
Examples:
> SELECT _FUNC_(' SparkSQL ');
SparkSQL
+ > SELECT _FUNC_(BOTH 'SL' FROM 'SSparkSQLS');
+ parkSQ
+ > SELECT _FUNC_(LEADING 'paS' FROM 'SSparkSQLS');
+ rkSQLS
+ > SELECT _FUNC_(TRAILING 'SLQ' FROM 'SSparkSQLS');
+ SSparkS
""")
-case class StringTrim(child: Expression)
- extends UnaryExpression with String2StringExpression {
+case class StringTrim(children: Seq[Expression])
--- End diff --
I tried with the former implementation, but the code is more complicate if
we want to separate the existing trim code with this new feature in
UTF8String.java, the thinking was not to affect the existing trim function
performance.
Currently the trim function take one parameter and it uses the
UnaryExpression, if we change to two parameters, it will use the
BinaryExpression, so we have to create a default right expression for the
existing trim function, it will make difficult to tell which trim
functions(utf8string.java) to use during the codeGen( doGenCode).
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]