aboutsummaryrefslogtreecommitdiff
path: root/sql/hive
diff options
context:
space:
mode:
authorLiang-Chi Hsieh <viirya@appier.com>2015-08-02 17:53:44 -0700
committerReynold Xin <rxin@databricks.com>2015-08-02 17:53:44 -0700
commit0722f43316fc7ed0c1308b0f9d6d15f0c22ed56f (patch)
tree2407fdf49ec8e8e6fd60ee0d98fd808952ab3b2f /sql/hive
parent2e981b7bfa9dec93fdcf25f3e7220cd6aaba744f (diff)
downloadspark-0722f43316fc7ed0c1308b0f9d6d15f0c22ed56f.tar.gz
spark-0722f43316fc7ed0c1308b0f9d6d15f0c22ed56f.tar.bz2
spark-0722f43316fc7ed0c1308b0f9d6d15f0c22ed56f.zip
[SPARK-7937][SQL] Support comparison on StructType
This brings #6519 up-to-date with master branch. Closes #6519. Author: Liang-Chi Hsieh <viirya@appier.com> Author: Liang-Chi Hsieh <viirya@gmail.com> Author: Reynold Xin <rxin@databricks.com> Closes #7877 from rxin/sort-struct and squashes the following commits: 4968231 [Reynold Xin] Minor fixes. 2537813 [Reynold Xin] Merge branch 'compare_named_struct' of github.com:viirya/spark-1 into sort-struct d2ba8ad [Liang-Chi Hsieh] Remove unused import. 3a3f40e [Liang-Chi Hsieh] Don't need to add compare to InternalRow because we can use RowOrdering. dae6aad [Liang-Chi Hsieh] Fix nested struct. d5349c7 [Liang-Chi Hsieh] Merge remote-tracking branch 'upstream/master' into compare_named_struct 43d4354 [Liang-Chi Hsieh] Merge remote-tracking branch 'upstream/master' into compare_named_struct 1f66196 [Liang-Chi Hsieh] Reuse RowOrdering and GenerateOrdering. f8b2e9c [Liang-Chi Hsieh] Merge remote-tracking branch 'upstream/master' into compare_named_struct 1187a65 [Liang-Chi Hsieh] Fix scala style. 9d67f68 [Liang-Chi Hsieh] Fix wrongly merging. 8f4d775 [Liang-Chi Hsieh] Merge remote-tracking branch 'upstream/master' into compare_named_struct 94b27d5 [Liang-Chi Hsieh] Remove test for error on complex type comparison. 2071693 [Liang-Chi Hsieh] Merge remote-tracking branch 'upstream/master' into compare_named_struct 3c142e4 [Liang-Chi Hsieh] Fix scala style. cf58dc3 [Liang-Chi Hsieh] Use checkAnswer. f651b8d [Liang-Chi Hsieh] Remove Either and move orderings to BinaryComparison to reuse it. b6e1009 [Liang-Chi Hsieh] Fix scala style. 3922b54 [Liang-Chi Hsieh] Support ordering on named_struct.
Diffstat (limited to 'sql/hive')
-rw-r--r--sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveUDFSuite.scala43
1 files changed, 42 insertions, 1 deletions
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveUDFSuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveUDFSuite.scala
index 1bde5922b5..7069afc9f7 100644
--- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveUDFSuite.scala
+++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveUDFSuite.scala
@@ -28,7 +28,7 @@ import org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectIn
import org.apache.hadoop.hive.serde2.objectinspector.{ObjectInspector, ObjectInspectorFactory}
import org.apache.hadoop.hive.serde2.{AbstractSerDe, SerDeStats}
import org.apache.hadoop.io.Writable
-import org.apache.spark.sql.{AnalysisException, QueryTest, Row}
+import org.apache.spark.sql.{AnalysisException, QueryTest, Row, SQLConf}
import org.apache.spark.sql.hive.test.TestHive
import org.apache.spark.util.Utils
@@ -93,6 +93,47 @@ class HiveUDFSuite extends QueryTest {
sql("DROP TEMPORARY FUNCTION IF EXISTS testUDF")
}
+ test("Max/Min on named_struct") {
+ def testOrderInStruct(): Unit = {
+ checkAnswer(sql(
+ """
+ |SELECT max(named_struct(
+ | "key", key,
+ | "value", value)).value FROM src
+ """.stripMargin), Seq(Row("val_498")))
+ checkAnswer(sql(
+ """
+ |SELECT min(named_struct(
+ | "key", key,
+ | "value", value)).value FROM src
+ """.stripMargin), Seq(Row("val_0")))
+
+ // nested struct cases
+ checkAnswer(sql(
+ """
+ |SELECT max(named_struct(
+ | "key", named_struct(
+ "key", key,
+ "value", value),
+ | "value", value)).value FROM src
+ """.stripMargin), Seq(Row("val_498")))
+ checkAnswer(sql(
+ """
+ |SELECT min(named_struct(
+ | "key", named_struct(
+ "key", key,
+ "value", value),
+ | "value", value)).value FROM src
+ """.stripMargin), Seq(Row("val_0")))
+ }
+ val codegenDefault = TestHive.getConf(SQLConf.CODEGEN_ENABLED)
+ TestHive.setConf(SQLConf.CODEGEN_ENABLED, true)
+ testOrderInStruct()
+ TestHive.setConf(SQLConf.CODEGEN_ENABLED, false)
+ testOrderInStruct()
+ TestHive.setConf(SQLConf.CODEGEN_ENABLED, codegenDefault)
+ }
+
test("SPARK-6409 UDAFAverage test") {
sql(s"CREATE TEMPORARY FUNCTION test_avg AS '${classOf[GenericUDAFAverage].getName}'")
checkAnswer(