diff options
author | Reynold Xin <rxin@databricks.com> | 2016-01-04 21:05:27 -0800 |
---|---|---|
committer | Reynold Xin <rxin@databricks.com> | 2016-01-04 21:05:27 -0800 |
commit | b634901bb28070ac5d9a24a9bc7b7640472a54e2 (patch) | |
tree | eeab5952c9971db2910215a6b646b5d8397dbc90 /sql/catalyst | |
parent | 8896ec9f02a6747917f3ae42a517ff0e3742eaf6 (diff) | |
download | spark-b634901bb28070ac5d9a24a9bc7b7640472a54e2.tar.gz spark-b634901bb28070ac5d9a24a9bc7b7640472a54e2.tar.bz2 spark-b634901bb28070ac5d9a24a9bc7b7640472a54e2.zip |
[SPARK-12600][SQL] follow up: add range check for DecimalType
This addresses davies' code review feedback in https://github.com/apache/spark/pull/10559
Author: Reynold Xin <rxin@databricks.com>
Closes #10586 from rxin/remove-deprecated-sql-followup.
Diffstat (limited to 'sql/catalyst')
-rw-r--r-- | sql/catalyst/src/main/scala/org/apache/spark/sql/types/DecimalType.scala | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DecimalType.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DecimalType.scala index fdae2e82a0..cf5322125b 100644 --- a/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DecimalType.scala +++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/types/DecimalType.scala @@ -20,6 +20,7 @@ package org.apache.spark.sql.types import scala.reflect.runtime.universe.typeTag import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.sql.AnalysisException import org.apache.spark.sql.catalyst.ScalaReflectionLock import org.apache.spark.sql.catalyst.expressions.Expression @@ -39,6 +40,15 @@ import org.apache.spark.sql.catalyst.expressions.Expression @DeveloperApi case class DecimalType(precision: Int, scale: Int) extends FractionalType { + if (scale > precision) { + throw new AnalysisException( + s"Decimal scale ($scale) cannot be greater than precision ($precision).") + } + + if (precision > DecimalType.MAX_PRECISION) { + throw new AnalysisException(s"DecimalType can only support precision up to 38") + } + // default constructor for Java def this(precision: Int) = this(precision, 0) def this() = this(10) |