You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by wangyum <gi...@git.apache.org> on 2018/04/09 14:41:40 UTC

[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

GitHub user wangyum opened a pull request:

    https://github.com/apache/spark/pull/21010

    [SPARK-23900][SQL] format_number support user specifed format as argument

    ## What changes were proposed in this pull request?
    
    `format_number` support user specifed format as argument. For example:
    ```sql
    spark-sql> SELECT format_number(12332.123456, '##################.###');
    12332.123
    ```
    
    ## How was this patch tested?
    
    unit test


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/wangyum/spark SPARK-23900

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/21010.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #21010
    
----
commit 202fa3d505ed4395858a277c9b871006b2f64483
Author: Yuming Wang <yu...@...>
Date:   2018-04-09T14:28:44Z

    format_number udf should take user specifed format as argument

----


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r186606198
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala ---
    @@ -2108,35 +2133,57 @@ case class FormatNumber(x: Expression, d: Expression)
           // SPARK-13515: US Locale configures the DecimalFormat object to use a dot ('.')
           // as a decimal separator.
           val usLocale = "US"
    -      val i = ctx.freshName("i")
    -      val dFormat = ctx.freshName("dFormat")
    -      val lastDValue =
    -        ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
    -      val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
           val numberFormat = ctx.addMutableState(df, "numberFormat",
             v => s"""$v = new $df("", new $dfs($l.$usLocale));""")
     
    -      s"""
    -        if ($d >= 0) {
    -          $pattern.delete(0, $pattern.length());
    -          if ($d != $lastDValue) {
    -            $pattern.append("#,###,###,###,###,###,##0");
    -
    -            if ($d > 0) {
    -              $pattern.append(".");
    -              for (int $i = 0; $i < $d; $i++) {
    -                $pattern.append("0");
    +      right.dataType match {
    +        case IntegerType =>
    +          val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
    +          val i = ctx.freshName("i")
    +          val lastDValue =
    +            ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
    +          s"""
    +            if ($d >= 0) {
    +              $pattern.delete(0, $pattern.length());
    +              if ($d != $lastDValue) {
    +                $pattern.append("$defaultFormat");
    +
    +                if ($d > 0) {
    +                  $pattern.append(".");
    +                  for (int $i = 0; $i < $d; $i++) {
    +                    $pattern.append("0");
    +                  }
    +                }
    +                $lastDValue = $d;
    +                $numberFormat.applyLocalizedPattern($pattern.toString());
                   }
    +              ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    +            } else {
    +              ${ev.value} = null;
    +              ${ev.isNull} = true;
                 }
    -            $lastDValue = $d;
    -            $numberFormat.applyLocalizedPattern($pattern.toString());
    -          }
    -          ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    -        } else {
    -          ${ev.value} = null;
    -          ${ev.isNull} = true;
    -        }
    -       """
    +           """
    +        case StringType =>
    +          val lastDValue = ctx.addMutableState("String", "lastDValue", v => s"""$v = null;""")
    +          val dValue = ctx.addMutableState("String", "dValue")
    +          s"""
    +            $dValue = $d.toString();
    +            if (!$dValue.equals($lastDValue)) {
    +              $lastDValue = $dValue;
    +              if ($dValue.isEmpty()) {
    +                $numberFormat.applyLocalizedPattern("$defaultFormat");
    +              } else {
    +                $numberFormat.applyLocalizedPattern($dValue);
    +              }
    +            }
    +            ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    +           """
    +        case NullType =>
    --- End diff --
    
    We don't need this case?


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91331 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91331/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91214 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91214/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).
     * This patch **fails due to an unknown error code, -9**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91221 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91221/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/90055/
    Test FAILed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by wangyum <gi...@git.apache.org>.
Github user wangyum commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    retest this please


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/91221/
    Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2810/
    Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/3640/
    Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/91216/
    Test FAILed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #90055 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/90055/testReport)** for PR 21010 at commit [`e273045`](https://github.com/apache/spark/commit/e273045d670a0ad46e2833ae76c4880d3d07a25e).


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/3715/
    Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Thanks! merging to master.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #90264 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/90264/testReport)** for PR 21010 at commit [`0bc77e8`](https://github.com/apache/spark/commit/0bc77e87689edbe252e23d322b1a64d317b19c67).


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2957/
    Test PASSed.


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r185691861
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala ---
    @@ -2108,35 +2133,53 @@ case class FormatNumber(x: Expression, d: Expression)
           // SPARK-13515: US Locale configures the DecimalFormat object to use a dot ('.')
           // as a decimal separator.
           val usLocale = "US"
    -      val i = ctx.freshName("i")
    -      val dFormat = ctx.freshName("dFormat")
    -      val lastDValue =
    -        ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
    -      val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
           val numberFormat = ctx.addMutableState(df, "numberFormat",
             v => s"""$v = new $df("", new $dfs($l.$usLocale));""")
     
    -      s"""
    -        if ($d >= 0) {
    -          $pattern.delete(0, $pattern.length());
    -          if ($d != $lastDValue) {
    -            $pattern.append("#,###,###,###,###,###,##0");
    -
    -            if ($d > 0) {
    -              $pattern.append(".");
    -              for (int $i = 0; $i < $d; $i++) {
    -                $pattern.append("0");
    +      right.dataType match {
    +        case IntegerType =>
    +          val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
    +          val i = ctx.freshName("i")
    +          val lastDIntValue =
    +            ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
    +          s"""
    +            if ($d >= 0) {
    +              $pattern.delete(0, $pattern.length());
    +              if ($d != $lastDIntValue) {
    +                $pattern.append("$defaultFormat");
    +
    +                if ($d > 0) {
    +                  $pattern.append(".");
    +                  for (int $i = 0; $i < $d; $i++) {
    +                    $pattern.append("0");
    +                  }
    +                }
    +                $lastDIntValue = $d;
    +                $numberFormat.applyLocalizedPattern($pattern.toString());
                   }
    +              ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    +            } else {
    +              ${ev.value} = null;
    +              ${ev.isNull} = true;
                 }
    -            $lastDValue = $d;
    -            $numberFormat.applyLocalizedPattern($pattern.toString());
    -          }
    -          ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    -        } else {
    -          ${ev.value} = null;
    -          ${ev.isNull} = true;
    -        }
    -       """
    +           """
    +        case StringType =>
    +          val lastDStringValue =
    +            ctx.addMutableState("String", "lastDValue", v => s"""$v = "$defaultFormat";""")
    +          val dValue = ctx.addMutableState("String", "dValue")
    +          s"""
    +            $dValue = $d.toString();
    +            if (!$dValue.equals($lastDStringValue)) {
    --- End diff --
    
    What if the first `dValue` is the same as the default format? Can you add the test case?


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test FAILed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91221 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91221/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by viirya <gi...@git.apache.org>.
Github user viirya commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r180310931
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala ---
    @@ -2022,6 +2022,8 @@ case class Encode(value: Expression, charset: Expression)
         Examples:
           > SELECT _FUNC_(12332.123456, 4);
            12,332.1235
    +      > SELECT _FUNC_(12332.123456, '##################.###');
    --- End diff --
    
    We need to update `ExpressionDescription` too.


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by viirya <gi...@git.apache.org>.
Github user viirya commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r180313214
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala ---
    @@ -2108,35 +2132,52 @@ case class FormatNumber(x: Expression, d: Expression)
           // SPARK-13515: US Locale configures the DecimalFormat object to use a dot ('.')
           // as a decimal separator.
           val usLocale = "US"
    -      val i = ctx.freshName("i")
           val dFormat = ctx.freshName("dFormat")
    -      val lastDValue =
    -        ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
           val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
           val numberFormat = ctx.addMutableState(df, "numberFormat",
             v => s"""$v = new $df("", new $dfs($l.$usLocale));""")
     
    -      s"""
    -        if ($d >= 0) {
    -          $pattern.delete(0, $pattern.length());
    -          if ($d != $lastDValue) {
    -            $pattern.append("#,###,###,###,###,###,##0");
    -
    -            if ($d > 0) {
    -              $pattern.append(".");
    -              for (int $i = 0; $i < $d; $i++) {
    -                $pattern.append("0");
    +      right.dataType match {
    +        case IntegerType =>
    +          val i = ctx.freshName("i")
    +          val lastDIntValue =
    +            ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
    +          s"""
    +            if ($d >= 0) {
    +              $pattern.delete(0, $pattern.length());
    +              if ($d != $lastDIntValue) {
    +                $pattern.append("$defaultFormat");
    +
    +                if ($d > 0) {
    +                  $pattern.append(".");
    +                  for (int $i = 0; $i < $d; $i++) {
    +                    $pattern.append("0");
    +                  }
    +                }
    +                $lastDIntValue = $d;
    +                $numberFormat.applyLocalizedPattern($pattern.toString());
                   }
    +              ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    +            } else {
    +              ${ev.value} = null;
    +              ${ev.isNull} = true;
                 }
    -            $lastDValue = $d;
    -            $numberFormat.applyLocalizedPattern($pattern.toString());
    -          }
    -          ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    -        } else {
    -          ${ev.value} = null;
    -          ${ev.isNull} = true;
    -        }
    -       """
    +           """
    +        case StringType =>
    +          val lastDStringValue =
    +            ctx.addMutableState("String", "lastDValue", v => s"""$v = "$defaultFormat";""")
    +          s"""
    +            if (!$d.toString().equals($lastDStringValue)) {
    --- End diff --
    
    We should only call `$d.toString()` once.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test FAILed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Jenkins, retest this please.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/91331/
    Test PASSed.


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/spark/pull/21010


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/91214/
    Test FAILed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91323 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91323/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/3633/
    Test PASSed.


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by viirya <gi...@git.apache.org>.
Github user viirya commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r180312702
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala ---
    @@ -2108,35 +2132,52 @@ case class FormatNumber(x: Expression, d: Expression)
           // SPARK-13515: US Locale configures the DecimalFormat object to use a dot ('.')
           // as a decimal separator.
           val usLocale = "US"
    -      val i = ctx.freshName("i")
           val dFormat = ctx.freshName("dFormat")
    --- End diff --
    
    `dFormat` is not used in any place. We can remove it.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by wangyum <gi...@git.apache.org>.
Github user wangyum commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    retest please.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #89064 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89064/testReport)** for PR 21010 at commit [`202fa3d`](https://github.com/apache/spark/commit/202fa3d505ed4395858a277c9b871006b2f64483).


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #90055 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/90055/testReport)** for PR 21010 at commit [`e273045`](https://github.com/apache/spark/commit/e273045d670a0ad46e2833ae76c4880d3d07a25e).
     * This patch **fails SparkR unit tests**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by HyukjinKwon <gi...@git.apache.org>.
Github user HyukjinKwon commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    ping @wangyum 


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    LGTM pending Jenkins.


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r186606172
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala ---
    @@ -2108,35 +2133,57 @@ case class FormatNumber(x: Expression, d: Expression)
           // SPARK-13515: US Locale configures the DecimalFormat object to use a dot ('.')
           // as a decimal separator.
           val usLocale = "US"
    -      val i = ctx.freshName("i")
    -      val dFormat = ctx.freshName("dFormat")
    -      val lastDValue =
    -        ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
    -      val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
           val numberFormat = ctx.addMutableState(df, "numberFormat",
             v => s"""$v = new $df("", new $dfs($l.$usLocale));""")
     
    -      s"""
    -        if ($d >= 0) {
    -          $pattern.delete(0, $pattern.length());
    -          if ($d != $lastDValue) {
    -            $pattern.append("#,###,###,###,###,###,##0");
    -
    -            if ($d > 0) {
    -              $pattern.append(".");
    -              for (int $i = 0; $i < $d; $i++) {
    -                $pattern.append("0");
    +      right.dataType match {
    +        case IntegerType =>
    +          val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
    +          val i = ctx.freshName("i")
    +          val lastDValue =
    +            ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
    +          s"""
    +            if ($d >= 0) {
    +              $pattern.delete(0, $pattern.length());
    +              if ($d != $lastDValue) {
    +                $pattern.append("$defaultFormat");
    +
    +                if ($d > 0) {
    +                  $pattern.append(".");
    +                  for (int $i = 0; $i < $d; $i++) {
    +                    $pattern.append("0");
    +                  }
    +                }
    +                $lastDValue = $d;
    +                $numberFormat.applyLocalizedPattern($pattern.toString());
                   }
    +              ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    +            } else {
    +              ${ev.value} = null;
    +              ${ev.isNull} = true;
                 }
    -            $lastDValue = $d;
    -            $numberFormat.applyLocalizedPattern($pattern.toString());
    -          }
    -          ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    -        } else {
    -          ${ev.value} = null;
    -          ${ev.isNull} = true;
    -        }
    -       """
    +           """
    +        case StringType =>
    +          val lastDValue = ctx.addMutableState("String", "lastDValue", v => s"""$v = null;""")
    +          val dValue = ctx.addMutableState("String", "dValue")
    --- End diff --
    
    Do we need to make this mutable state?


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by wangyum <gi...@git.apache.org>.
Github user wangyum commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Jenkins, retest this please.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #89064 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89064/testReport)** for PR 21010 at commit [`202fa3d`](https://github.com/apache/spark/commit/202fa3d505ed4395858a277c9b871006b2f64483).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by viirya <gi...@git.apache.org>.
Github user viirya commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r180312765
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala ---
    @@ -2108,35 +2132,52 @@ case class FormatNumber(x: Expression, d: Expression)
           // SPARK-13515: US Locale configures the DecimalFormat object to use a dot ('.')
           // as a decimal separator.
           val usLocale = "US"
    -      val i = ctx.freshName("i")
           val dFormat = ctx.freshName("dFormat")
    -      val lastDValue =
    -        ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
           val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
    --- End diff --
    
    `pattern` is only needed for `IntegerType` case.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91323 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91323/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).
     * This patch **fails due to an unknown error code, -9**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Thanks, sounds good.
    Let me retrigger the build just for checking again.


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by viirya <gi...@git.apache.org>.
Github user viirya commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r180311991
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala ---
    @@ -2050,33 +2058,49 @@ case class FormatNumber(x: Expression, d: Expression)
       private lazy val numberFormat = new DecimalFormat("", new DecimalFormatSymbols(Locale.US))
     
       override protected def nullSafeEval(xObject: Any, dObject: Any): Any = {
    -    val dValue = dObject.asInstanceOf[Int]
    -    if (dValue < 0) {
    -      return null
    -    }
    -
    -    lastDValue match {
    -      case Some(last) if last == dValue =>
    -        // use the current pattern
    -      case _ =>
    -        // construct a new DecimalFormat only if a new dValue
    -        pattern.delete(0, pattern.length)
    -        pattern.append("#,###,###,###,###,###,##0")
    -
    -        // decimal place
    -        if (dValue > 0) {
    -          pattern.append(".")
    -
    -          var i = 0
    -          while (i < dValue) {
    -            i += 1
    -            pattern.append("0")
    -          }
    +    right.dataType match {
    +      case IntegerType =>
    +        val dValue = dObject.asInstanceOf[Int]
    +        if (dValue < 0) {
    +          return null
             }
     
    -        lastDValue = Some(dValue)
    +        lastDIntValue match {
    +          case Some(last) if last == dValue =>
    +          // use the current pattern
    +          case _ =>
    +            // construct a new DecimalFormat only if a new dValue
    +            pattern.delete(0, pattern.length)
    +            pattern.append(defaultFormat)
    +
    +            // decimal place
    +            if (dValue > 0) {
    +              pattern.append(".")
    +
    +              var i = 0
    +              while (i < dValue) {
    +                i += 1
    +                pattern.append("0")
    +              }
    +            }
    +
    +            lastDIntValue = Some(dValue)
     
    -        numberFormat.applyLocalizedPattern(pattern.toString)
    +            numberFormat.applyLocalizedPattern(pattern.toString)
    +        }
    +      case StringType =>
    +        val dValue = dObject.asInstanceOf[UTF8String].toString
    +        lastDStringValue match {
    +          case Some(last) if last == dValue =>
    +          case _ =>
    +            pattern.delete(0, pattern.length)
    +            lastDStringValue = Some(dValue)
    +            if (dValue.toString.isEmpty) {
    --- End diff --
    
    `dValue` is already a string.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91331 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91331/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Basically LGTM, but I'm wondering what if the `expr2` is not like a format string?


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #90264 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/90264/testReport)** for PR 21010 at commit [`0bc77e8`](https://github.com/apache/spark/commit/0bc77e87689edbe252e23d322b1a64d317b19c67).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by gatorsmile <gi...@git.apache.org>.
Github user gatorsmile commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    cc @ueshin 


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test FAILed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test FAILed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2102/
    Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/90264/
    Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by wangyum <gi...@git.apache.org>.
Github user wangyum commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    retest this please


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r186607122
  
    --- Diff: sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/StringExpressionsSuite.scala ---
    @@ -706,6 +706,30 @@ class StringExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
           "15,159,339,180,002,773.2778")
         checkEvaluation(FormatNumber(Literal.create(null, IntegerType), Literal(3)), null)
         assert(FormatNumber(Literal.create(null, NullType), Literal(3)).resolved === false)
    +
    +    checkEvaluation(FormatNumber(Literal(12332.123456), Literal("##############.###")), "12332.123")
    +    checkEvaluation(FormatNumber(Literal(12332.123456), Literal("##.###")), "12332.123")
    +    checkEvaluation(FormatNumber(Literal(4.asInstanceOf[Byte]), Literal("##.####")), "4")
    +    checkEvaluation(FormatNumber(Literal(4.asInstanceOf[Short]), Literal("##.####")), "4")
    +    checkEvaluation(FormatNumber(Literal(4.0f), Literal("##.###")), "4")
    +    checkEvaluation(FormatNumber(Literal(4), Literal("##.###")), "4")
    +    checkEvaluation(FormatNumber(Literal(12831273.23481d),
    +      Literal("###,###,###,###,###.###")), "12,831,273.235")
    +    checkEvaluation(FormatNumber(Literal(12831273.83421d), Literal("")), "12,831,274")
    +    checkEvaluation(FormatNumber(Literal(123123324123L), Literal("###,###,###,###,###.###")),
    +      "123,123,324,123")
    +    checkEvaluation(
    +      FormatNumber(Literal(Decimal(123123324123L) * Decimal(123123.21234d)),
    +        Literal("###,###,###,###,###.####")), "15,159,339,180,002,773.2778")
    +    checkEvaluation(FormatNumber(Literal.create(null, IntegerType), Literal("##.###")), null)
    +    assert(FormatNumber(Literal.create(null, NullType), Literal("##.###")).resolved === false)
    +
    +    checkEvaluation(FormatNumber(Literal(12332.123456), Literal("#,###,###,###,###,###,##0")),
    +      "12,332")
    +    checkEvaluation(FormatNumber(
    +      Literal.create(null, IntegerType), Literal.create(null, NullType)), null)
    +    checkEvaluation(FormatNumber(
    +      Literal.create(null, NullType), Literal.create(null, NullType)), null)
    --- End diff --
    
    What's for these two cases?


---

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


[GitHub] spark pull request #21010: [SPARK-23900][SQL] format_number support user spe...

Posted by ueshin <gi...@git.apache.org>.
Github user ueshin commented on a diff in the pull request:

    https://github.com/apache/spark/pull/21010#discussion_r185691812
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/stringExpressions.scala ---
    @@ -2108,35 +2133,53 @@ case class FormatNumber(x: Expression, d: Expression)
           // SPARK-13515: US Locale configures the DecimalFormat object to use a dot ('.')
           // as a decimal separator.
           val usLocale = "US"
    -      val i = ctx.freshName("i")
    -      val dFormat = ctx.freshName("dFormat")
    -      val lastDValue =
    -        ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
    -      val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
           val numberFormat = ctx.addMutableState(df, "numberFormat",
             v => s"""$v = new $df("", new $dfs($l.$usLocale));""")
     
    -      s"""
    -        if ($d >= 0) {
    -          $pattern.delete(0, $pattern.length());
    -          if ($d != $lastDValue) {
    -            $pattern.append("#,###,###,###,###,###,##0");
    -
    -            if ($d > 0) {
    -              $pattern.append(".");
    -              for (int $i = 0; $i < $d; $i++) {
    -                $pattern.append("0");
    +      right.dataType match {
    +        case IntegerType =>
    +          val pattern = ctx.addMutableState(sb, "pattern", v => s"$v = new $sb();")
    +          val i = ctx.freshName("i")
    +          val lastDIntValue =
    +            ctx.addMutableState(CodeGenerator.JAVA_INT, "lastDValue", v => s"$v = -100;")
    +          s"""
    +            if ($d >= 0) {
    +              $pattern.delete(0, $pattern.length());
    +              if ($d != $lastDIntValue) {
    +                $pattern.append("$defaultFormat");
    +
    +                if ($d > 0) {
    +                  $pattern.append(".");
    +                  for (int $i = 0; $i < $d; $i++) {
    +                    $pattern.append("0");
    +                  }
    +                }
    +                $lastDIntValue = $d;
    +                $numberFormat.applyLocalizedPattern($pattern.toString());
                   }
    +              ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    +            } else {
    +              ${ev.value} = null;
    +              ${ev.isNull} = true;
                 }
    -            $lastDValue = $d;
    -            $numberFormat.applyLocalizedPattern($pattern.toString());
    -          }
    -          ${ev.value} = UTF8String.fromString($numberFormat.format(${typeHelper(num)}));
    -        } else {
    -          ${ev.value} = null;
    -          ${ev.isNull} = true;
    -        }
    -       """
    +           """
    +        case StringType =>
    +          val lastDStringValue =
    +            ctx.addMutableState("String", "lastDValue", v => s"""$v = "$defaultFormat";""")
    +          val dValue = ctx.addMutableState("String", "dValue")
    --- End diff --
    
    Do we need to make this mutable state?


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/91323/
    Test FAILed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91216 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91216/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).
     * This patch **fails Spark unit tests**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/3723/
    Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by wangyum <gi...@git.apache.org>.
Github user wangyum commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    > Basically LGTM, but I'm wondering what if the expr2 is not like a format string?
    
    The same as Hive:
    ```sql
    spark-sql> SELECT format_number(12332.123456, 'abc');
    abc12332
    ```
    ```sql
    hive> SELECT format_number(12332.123456, 'abc');
    OK
    abc12332
    Time taken: 0.218 seconds, Fetched: 1 row(s)
    ```


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/89064/
    Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91216 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91216/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/3631/
    Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    Merged build finished. Test PASSed.


---

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


[GitHub] spark issue #21010: [SPARK-23900][SQL] format_number support user specifed f...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/21010
  
    **[Test build #91214 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/91214/testReport)** for PR 21010 at commit [`9ccb648`](https://github.com/apache/spark/commit/9ccb6488f6f8309e0cfa71c4b332e6d680f24ffa).


---

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