From 4eace4d384f0e12b4934019d8654b5e3886ddaef Mon Sep 17 00:00:00 2001 From: Cheng Lian Date: Sat, 12 Mar 2016 11:24:50 -0800 Subject: [SPARK-13828][SQL] Bring back stack trace of AnalysisException thrown from QueryExecution.assertAnalyzed PR #11443 added an extra `plan: Option[LogicalPlan]` argument to `AnalysisException` and attached partially analyzed plan to thrown `AnalysisException` in `QueryExecution.assertAnalyzed()`. However, the original stack trace wasn't properly inherited. This PR fixes this issue by inheriting the stack trace. A test case is added to verify that the first entry of `AnalysisException` stack trace isn't from `QueryExecution`. Author: Cheng Lian Closes #11677 from liancheng/analysis-exception-stacktrace. --- .../main/scala/org/apache/spark/sql/execution/QueryExecution.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'sql/core/src/main/scala/org') diff --git a/sql/core/src/main/scala/org/apache/spark/sql/execution/QueryExecution.scala b/sql/core/src/main/scala/org/apache/spark/sql/execution/QueryExecution.scala index 19ab3ea132..9e60c1cd61 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/execution/QueryExecution.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/execution/QueryExecution.scala @@ -33,7 +33,9 @@ class QueryExecution(val sqlContext: SQLContext, val logical: LogicalPlan) { def assertAnalyzed(): Unit = try sqlContext.analyzer.checkAnalysis(analyzed) catch { case e: AnalysisException => - throw new AnalysisException(e.message, e.line, e.startPosition, Some(analyzed)) + val ae = new AnalysisException(e.message, e.line, e.startPosition, Some(analyzed)) + ae.setStackTrace(e.getStackTrace) + throw ae } lazy val analyzed: LogicalPlan = sqlContext.analyzer.execute(logical) -- cgit v1.2.3