Repository: spark
Updated Branches:
  refs/heads/master bbcba3a94 -> 04d55d8e8


[SPARK-5040][SQL] Support expressing unresolved attributes using $"attribute 
name" notation in SQL DSL.

Author: Reynold Xin <r...@databricks.com>

Closes #3862 from rxin/stringcontext-attr and squashes the following commits:

9b10f57 [Reynold Xin] Rename StrongToAttributeConversionHelper
72121af [Reynold Xin] [SPARK-5040][SQL] Support expressing unresolved 
attributes using $"attribute name" notation in SQL DSL.


Project: http://git-wip-us.apache.org/repos/asf/spark/repo
Commit: http://git-wip-us.apache.org/repos/asf/spark/commit/04d55d8e
Tree: http://git-wip-us.apache.org/repos/asf/spark/tree/04d55d8e
Diff: http://git-wip-us.apache.org/repos/asf/spark/diff/04d55d8e

Branch: refs/heads/master
Commit: 04d55d8e8e4890d110ce5561b5c1ae608c34a7c9
Parents: bbcba3a
Author: Reynold Xin <r...@databricks.com>
Authored: Mon Jan 5 15:34:22 2015 -0800
Committer: Michael Armbrust <mich...@databricks.com>
Committed: Mon Jan 5 15:34:22 2015 -0800

----------------------------------------------------------------------
 .../org/apache/spark/sql/catalyst/dsl/package.scala     |  9 +++++++++
 .../test/scala/org/apache/spark/sql/DslQuerySuite.scala | 12 ++++++++++++
 2 files changed, 21 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/spark/blob/04d55d8e/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala
----------------------------------------------------------------------
diff --git 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala
index 8e39f79..9608e15 100755
--- 
a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala
+++ 
b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/dsl/package.scala
@@ -135,6 +135,15 @@ package object dsl {
     implicit def symbolToUnresolvedAttribute(s: Symbol): 
analysis.UnresolvedAttribute =
       analysis.UnresolvedAttribute(s.name)
 
+    /** Converts $"col name" into an [[analysis.UnresolvedAttribute]]. */
+    implicit class StringToAttributeConversionHelper(val sc: StringContext) {
+      // Note that if we make ExpressionConversions an object rather than a 
trait, we can
+      // then make this a value class to avoid the small penalty of runtime 
instantiation.
+      def $(args: Any*): analysis.UnresolvedAttribute = {
+        analysis.UnresolvedAttribute(sc.s(args :_*))
+      }
+    }
+
     def sum(e: Expression) = Sum(e)
     def sumDistinct(e: Expression) = SumDistinct(e)
     def count(e: Expression) = Count(e)

http://git-wip-us.apache.org/repos/asf/spark/blob/04d55d8e/sql/core/src/test/scala/org/apache/spark/sql/DslQuerySuite.scala
----------------------------------------------------------------------
diff --git a/sql/core/src/test/scala/org/apache/spark/sql/DslQuerySuite.scala 
b/sql/core/src/test/scala/org/apache/spark/sql/DslQuerySuite.scala
index c0b9cf5..ab88f3a 100644
--- a/sql/core/src/test/scala/org/apache/spark/sql/DslQuerySuite.scala
+++ b/sql/core/src/test/scala/org/apache/spark/sql/DslQuerySuite.scala
@@ -56,6 +56,18 @@ class DslQuerySuite extends QueryTest {
     )
   }
 
+  test("convert $\"attribute name\" into unresolved attribute") {
+    checkAnswer(
+      testData.where($"key" === 1).select($"value"),
+      Seq(Seq("1")))
+  }
+
+  test("convert Scala Symbol 'attrname into unresolved attribute") {
+    checkAnswer(
+      testData.where('key === 1).select('value),
+      Seq(Seq("1")))
+  }
+
   test("select *") {
     checkAnswer(
       testData.select(Star(None)),


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@spark.apache.org
For additional commands, e-mail: commits-h...@spark.apache.org

Reply via email to