Repository: spark
Updated Branches:
refs/heads/master ce49428ef -> f913f158e
[SPARK-20948][SQL] Built-in SQL Function UnaryMinus/UnaryPositive support
string type
## What changes were proposed in this pull request?
Built-in SQL Function UnaryMinus/UnaryPositive support string type, if it's
string type, convert it to double type, after this PR:
```sql
spark-sql> select positive('-1.11'), negative('-1.11');
-1.11 1.11
spark-sql>
```
## How was this patch tested?
unit tests
Author: Yuming Wang <[email protected]>
Closes #18173 from wangyum/SPARK-20948.
Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/f913f158
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/f913f158
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/f913f158
Branch: refs/heads/master
Commit: f913f158ec41bd3de9dc229b908aaab0dbd60d27
Parents: ce49428
Author: Yuming Wang <[email protected]>
Authored: Sun Jun 18 20:14:05 2017 -0700
Committer: gatorsmile <[email protected]>
Committed: Sun Jun 18 20:14:05 2017 -0700
----------------------------------------------------------------------
.../apache/spark/sql/catalyst/analysis/TypeCoercion.scala | 2 ++
.../sql/catalyst/analysis/ExpressionTypeCheckingSuite.scala | 1 -
sql/core/src/test/resources/sql-tests/inputs/operators.sql | 3 +++
.../src/test/resources/sql-tests/results/operators.sql.out | 8 ++++++++
4 files changed, 13 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/spark/blob/f913f158/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercion.scala
----------------------------------------------------------------------
diff --git
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercion.scala
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercion.scala
index 6082c58..a78e1c9 100644
---
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercion.scala
+++
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/TypeCoercion.scala
@@ -362,6 +362,8 @@ object TypeCoercion {
case Average(e @ StringType()) => Average(Cast(e, DoubleType))
case StddevPop(e @ StringType()) => StddevPop(Cast(e, DoubleType))
case StddevSamp(e @ StringType()) => StddevSamp(Cast(e, DoubleType))
+ case UnaryMinus(e @ StringType()) => UnaryMinus(Cast(e, DoubleType))
+ case UnaryPositive(e @ StringType()) => UnaryPositive(Cast(e,
DoubleType))
case VariancePop(e @ StringType()) => VariancePop(Cast(e, DoubleType))
case VarianceSamp(e @ StringType()) => VarianceSamp(Cast(e, DoubleType))
case Skewness(e @ StringType()) => Skewness(Cast(e, DoubleType))
http://git-wip-us.apache.org/repos/asf/spark/blob/f913f158/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/ExpressionTypeCheckingSuite.scala
----------------------------------------------------------------------
diff --git
a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/ExpressionTypeCheckingSuite.scala
b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/ExpressionTypeCheckingSuite.scala
index 2239bf8..30459f1 100644
---
a/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/ExpressionTypeCheckingSuite.scala
+++
b/sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/analysis/ExpressionTypeCheckingSuite.scala
@@ -56,7 +56,6 @@ class ExpressionTypeCheckingSuite extends SparkFunSuite {
}
test("check types for unary arithmetic") {
- assertError(UnaryMinus('stringField), "(numeric or calendarinterval) type")
assertError(BitwiseNot('stringField), "requires integral type")
}
http://git-wip-us.apache.org/repos/asf/spark/blob/f913f158/sql/core/src/test/resources/sql-tests/inputs/operators.sql
----------------------------------------------------------------------
diff --git a/sql/core/src/test/resources/sql-tests/inputs/operators.sql
b/sql/core/src/test/resources/sql-tests/inputs/operators.sql
index 9841ec4..a766275 100644
--- a/sql/core/src/test/resources/sql-tests/inputs/operators.sql
+++ b/sql/core/src/test/resources/sql-tests/inputs/operators.sql
@@ -89,3 +89,6 @@ select OCTET_LENGTH('abc');
-- abs
select abs(-3.13), abs('-2.19');
+
+-- positive/negative
+select positive('-1.11'), positive(-1.11), negative('-1.11'), negative(-1.11);
http://git-wip-us.apache.org/repos/asf/spark/blob/f913f158/sql/core/src/test/resources/sql-tests/results/operators.sql.out
----------------------------------------------------------------------
diff --git a/sql/core/src/test/resources/sql-tests/results/operators.sql.out
b/sql/core/src/test/resources/sql-tests/results/operators.sql.out
index 4a6ef27..5cb6ed3 100644
--- a/sql/core/src/test/resources/sql-tests/results/operators.sql.out
+++ b/sql/core/src/test/resources/sql-tests/results/operators.sql.out
@@ -460,3 +460,11 @@ select abs(-3.13), abs('-2.19')
struct<abs(-3.13):decimal(3,2),abs(CAST(-2.19 AS DOUBLE)):double>
-- !query 55 output
3.13 2.19
+
+
+-- !query 55
+select positive('-1.11'), positive(-1.11), negative('-1.11'), negative(-1.11)
+-- !query 55 schema
+struct<(+ CAST(-1.11 AS DOUBLE)):double,(+ -1.11):decimal(3,2),(- CAST(-1.11
AS DOUBLE)):double,(- -1.11):decimal(3,2)>
+-- !query 55 output
+-1.11 -1.11 1.11 1.11
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]