From 47bb245353202208f2c41634c3796c8e4d2be663 Mon Sep 17 00:00:00 2001 From: Jacek Laskowski Date: Fri, 26 Jan 2018 12:20:48 +0100 Subject: [PATCH] [SPARK-23229][SQL] Dataset.hint should use planWithBarrier logical plan --- .../main/scala/org/apache/spark/sql/Dataset.scala | 4 ++-- .../org/apache/spark/sql/DataFrameHintSuite.scala | 12 ++++-------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala b/sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala index 912f411fa3845..cc57b6e9fcb75 100644 --- a/sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala +++ b/sql/core/src/main/scala/org/apache/spark/sql/Dataset.scala @@ -192,7 +192,7 @@ class Dataset[T] private[sql]( } // Wraps analyzed logical plans with an analysis barrier so we won't traverse/resolve it again. - @transient private val planWithBarrier = AnalysisBarrier(logicalPlan) + @transient private[sql] val planWithBarrier = AnalysisBarrier(logicalPlan) /** * Currently [[ExpressionEncoder]] is the only implementation of [[Encoder]], here we turn the @@ -1216,7 +1216,7 @@ class Dataset[T] private[sql]( */ @scala.annotation.varargs def hint(name: String, parameters: Any*): Dataset[T] = withTypedPlan { - UnresolvedHint(name, parameters, logicalPlan) + UnresolvedHint(name, parameters, planWithBarrier) } /** diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameHintSuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameHintSuite.scala index 0dd5bdcba2e4c..647ce2030b5f5 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/DataFrameHintSuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/DataFrameHintSuite.scala @@ -35,27 +35,23 @@ class DataFrameHintSuite extends AnalysisTest with SharedSQLContext { test("various hint parameters") { check( df.hint("hint1"), - UnresolvedHint("hint1", Seq(), - df.logicalPlan - ) + UnresolvedHint("hint1", Seq(), df.planWithBarrier) ) check( df.hint("hint1", 1, "a"), - UnresolvedHint("hint1", Seq(1, "a"), df.logicalPlan) + UnresolvedHint("hint1", Seq(1, "a"), df.planWithBarrier) ) check( df.hint("hint1", 1, $"a"), - UnresolvedHint("hint1", Seq(1, $"a"), - df.logicalPlan - ) + UnresolvedHint("hint1", Seq(1, $"a"), df.planWithBarrier) ) check( df.hint("hint1", Seq(1, 2, 3), Seq($"a", $"b", $"c")), UnresolvedHint("hint1", Seq(Seq(1, 2, 3), Seq($"a", $"b", $"c")), - df.logicalPlan + df.planWithBarrier ) ) }