Github user kevinyu98 commented on a diff in the pull request:

    https://github.com/apache/spark/pull/12646#discussion_r117166332
  
    --- Diff: 
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala
 ---
    @@ -461,68 +462,246 @@ 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 trims leading or trailing characters (or both) from 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 
ends of the string
    +      LEADING, FROM - these are keyword to specify for trim string from 
left end of the string
    +      TRAILING, FROM - these are keyword to specify for trim string from 
right end 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])
    +  extends Expression with ImplicitCastInputTypes {
    +
    +  require(children.size <= 2 && children.nonEmpty,
    +    s"$prettyName requires at least one argument and no more than two.")
    +
    +  override def dataType: DataType = StringType
    +  override def inputTypes: Seq[AbstractDataType] = 
Seq.fill(children.size)(StringType)
     
    -  def convert(v: UTF8String): UTF8String = v.trim()
    +  override def nullable: Boolean = children.exists(_.nullable)
    +  override def foldable: Boolean = children.forall(_.foldable)
     
       override def prettyName: String = "trim"
     
    +  override def eval(input: InternalRow): Any = {
    +    val inputs = children.map(_.eval(input).asInstanceOf[UTF8String])
    +    if (inputs(0) != null) {
    --- End diff --
    
    sure. 


---
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 infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to