From 3db4aaf0648122cc1498e9af71be47c3013903c9 Mon Sep 17 00:00:00 2001 From: angerszhu Date: Wed, 23 Oct 2019 18:24:04 +0800 Subject: [PATCH] Add more UT case --- .../org/apache/spark/sql/SubquerySuite.scala | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala b/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala index be425ea69909b..919dd691cdba4 100644 --- a/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala +++ b/sql/core/src/test/scala/org/apache/spark/sql/SubquerySuite.scala @@ -218,13 +218,67 @@ class SubquerySuite extends QueryTest with SharedSparkSession { sql("SELECT s1.id from s1 JOIN s2 ON s1.id = s2.id and s1.id NOT IN (select 9)"), Row(1) :: Row(3) :: Nil) + // case `IN` checkAnswer( sql("SELECT s1.id from s1 JOIN s2 ON s1.id = s2.id and s1.id IN (select id from s3)"), Row(3) :: Row(9) :: Nil) + checkAnswer( + sql("SELECT s1.id as id2 from s1 LEFT SEMI JOIN s2 " + + "ON s1.id = s2.id and s1.id IN (select id from s3)"), + Row(3) :: Row(9) :: Nil) + + checkAnswer( + sql("SELECT s1.id as id2 from s1 LEFT ANTI JOIN s2 " + + "ON s1.id = s2.id and s1.id IN (select id from s3)"), + Row(1) :: Row(5) :: Row(7) :: Nil) + + checkAnswer( + sql("SELECT s1.id, s2.id as id2 from s1 LEFT OUTER JOIN s2 " + + "ON s1.id = s2.id and s1.id IN (select id from s3)"), + Row(1, null) :: Row(3, 3) :: Row(5, null) :: Row(7, null) :: Row(9, 9) :: Nil) + + checkAnswer( + sql("SELECT s1.id, s2.id as id2 from s1 RIGHT OUTER JOIN s2 " + + "ON s1.id = s2.id and s1.id IN (select id from s3)"), + Row(null, 1) :: Row(3, 3) :: Row(null, 4) :: Row(null, 6) :: Row(9, 9) :: Nil) + + checkAnswer( + sql("SELECT s1.id, s2.id as id2 from s1 FULL OUTER JOIN s2 " + + "ON s1.id = s2.id and s1.id IN (select id from s3)"), + Row(1, null) :: Row(3, 3) :: Row(5, null) :: Row(7, null) :: Row(9, 9) :: + Row(null, 1) :: Row(null, 4) :: Row(null, 6) :: Nil) + + // case `NOT IN` checkAnswer( sql("SELECT s1.id from s1 JOIN s2 ON s1.id = s2.id and s1.id NOT IN (select id from s3)"), Row(1) :: Nil) + + checkAnswer( + sql("SELECT s1.id as id2 from s1 LEFT SEMI JOIN s2 " + + "ON s1.id = s2.id and s1.id NOT IN (select id from s3)"), + Row(1) :: Nil) + + checkAnswer( + sql("SELECT s1.id as id2 from s1 LEFT ANTI JOIN s2 " + + "ON s1.id = s2.id and s1.id NOT IN (select id from s3)"), + Row(3) :: Row(5) :: Row(7) :: Row(9) :: Nil) + + checkAnswer( + sql("SELECT s1.id, s2.id as id2 from s1 LEFT OUTER JOIN s2 " + + "ON s1.id = s2.id and s1.id NOT IN (select id from s3)"), + Row(1, 1) :: Row(3, null) :: Row(5, null) :: Row(7, null) :: Row(9, null) :: Nil) + + checkAnswer( + sql("SELECT s1.id, s2.id as id2 from s1 RIGHT OUTER JOIN s2 " + + "ON s1.id = s2.id and s1.id NOT IN (select id from s3)"), + Row(1, 1) :: Row(null, 3) :: Row(null, 4) :: Row(null, 6) :: Row(null, 9) :: Nil) + + checkAnswer( + sql("SELECT s1.id, s2.id as id2 from s1 FULL OUTER JOIN s2 " + + "ON s1.id = s2.id and s1.id NOT IN (select id from s3)"), + Row(1, 1) :: Row(3, null) :: Row(5, null) :: Row(7, null) :: Row(9, null) :: + Row(null, 3) :: Row(null, 4) :: Row(null, 6) :: Row(null, 9) :: Nil) } }