diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala index d21bb573d491b1f908e8d55afa6590d2f0a37d87..019d752a13dd05fa4d711834843c5e64eb0f36fb 100644 --- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala +++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveComparisonTest.scala @@ -132,25 +132,7 @@ abstract class HiveComparisonTest new java.math.BigInteger(1, digest.digest).toString(16) } - /** Used for testing [[SQLBuilder]] */ - private var numConvertibleQueries: Int = 0 - private var numTotalQueries: Int = 0 - override protected def afterAll(): Unit = { - logInfo({ - val percentage = if (numTotalQueries > 0) { - numConvertibleQueries.toDouble / numTotalQueries * 100 - } else { - 0D - } - - s"""SQLBuilder statistics: - |- Total query number: $numTotalQueries - |- Number of convertible queries: $numConvertibleQueries - |- Percentage of convertible queries: $percentage% - """.stripMargin - }) - try { TestHive.reset() } finally { @@ -412,32 +394,35 @@ abstract class HiveComparisonTest if (containsCommands) { originalQuery } else { - numTotalQueries += 1 + val convertedSQL = try { + new SQLBuilder(originalQuery.analyzed, TestHive).toSQL + } catch { + case NonFatal(e) => fail( + s"""Cannot convert the following HiveQL query plan back to SQL query string: + | + |# Original HiveQL query string: + |$queryString + | + |# Resolved query plan: + |${originalQuery.analyzed.treeString} + """.stripMargin, e) + } + try { - val sql = new SQLBuilder(originalQuery.analyzed, TestHive).toSQL - numConvertibleQueries += 1 - logInfo( - s""" - |### Running SQL generation round-trip test {{{ - |${originalQuery.analyzed.treeString} - |Original SQL: - |$queryString - | - |Generated SQL: - |$sql - |}}} - """.stripMargin.trim) - new TestHive.QueryExecution(sql) - } catch { case NonFatal(e) => - logInfo( - s""" - |### Cannot convert the following logical plan back to SQL {{{ - |${originalQuery.analyzed.treeString} - |Original SQL: - |$queryString - |}}} - """.stripMargin.trim) - originalQuery + new TestHive.QueryExecution(convertedSQL) + } catch { + case NonFatal(e) => fail( + s"""Failed to analyze the converted SQL string: + | + |# Original HiveQL query string: + |$queryString + | + |# Resolved query plan: + |${originalQuery.analyzed.treeString} + | + |# Converted SQL query string: + |$convertedSQL + """.stripMargin, e) } } }