aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorHuaxin Gao <huaxing@us.ibm.com>2016-06-16 14:37:10 -0700
committerAndrew Or <andrew@databricks.com>2016-06-16 14:37:10 -0700
commit62d2fa5e996d428caaea005041b17ec115473762 (patch)
tree5db6316a136db21af30e47da504a9c34ffacb3b3 /sql
parente849285df03b1233d5f647f1b6c5a6dad0665855 (diff)
downloadspark-62d2fa5e996d428caaea005041b17ec115473762.tar.gz
spark-62d2fa5e996d428caaea005041b17ec115473762.tar.bz2
spark-62d2fa5e996d428caaea005041b17ec115473762.zip
[SPARK-15749][SQL] make the error message more meaningful
## What changes were proposed in this pull request? For table test1 (C1 varchar (10), C2 varchar (10)), when I insert a row using ``` sqlContext.sql("insert into test1 values ('abc', 'def', 1)") ``` I got error message ``` Exception in thread "main" java.lang.RuntimeException: RelationC1#0,C2#1 JDBCRelation(test1) requires that the query in the SELECT clause of the INSERT INTO/OVERWRITE statement generates the same number of columns as its schema. ``` The error message is a little confusing. In my simple insert statement, it doesn't have a SELECT clause. I will change the error message to a more general one ``` Exception in thread "main" java.lang.RuntimeException: RelationC1#0,C2#1 JDBCRelation(test1) requires that the data to be inserted have the same number of columns as the target table. ``` ## How was this patch tested? I tested the patch using my simple unit test, but it's a very trivial change and I don't think I need to check in any test. Author: Huaxin Gao <huaxing@us.ibm.com> Closes #13492 from huaxingao/spark-15749.
Diffstat (limited to 'sql')
-rw-r--r--sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/rules.scala5
-rw-r--r--sql/core/src/test/scala/org/apache/spark/sql/sources/InsertSuite.scala2
2 files changed, 4 insertions, 3 deletions
diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/rules.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/rules.scala
index 7ac62fb191..543389efd5 100644
--- a/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/rules.scala
+++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/datasources/rules.scala
@@ -78,8 +78,9 @@ private[sql] object PreInsertCastAndRename extends Rule[LogicalPlan] {
// schema of the relation.
if (l.output.size != child.output.size) {
sys.error(
- s"$l requires that the query in the SELECT clause of the INSERT INTO/OVERWRITE " +
- s"statement generates the same number of columns as its schema.")
+ s"$l requires that the data to be inserted have the same number of columns as the " +
+ s"target table: target table has ${l.output.size} column(s) but " +
+ s"the inserted data has ${child.output.size} column(s).")
}
castAndRenameChildOutput(i, l.output, child)
}
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/sources/InsertSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/sources/InsertSuite.scala
index bade41b1ed..d7179551d6 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/sources/InsertSuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/sources/InsertSuite.scala
@@ -95,7 +95,7 @@ class InsertSuite extends DataSourceTest with SharedSQLContext {
""".stripMargin)
}.getMessage
assert(
- message.contains("generates the same number of columns as its schema"),
+ message.contains("requires that the data to be inserted have the same number of columns"),
"SELECT clause generating a different number of columns should not be not allowed."
)
}