dongjoon-hyun commented on a change in pull request #24782: 
[SPARK-27934][SQL][TEST] Port case.sql
URL: https://github.com/apache/spark/pull/24782#discussion_r291825022
 
 

 ##########
 File path: sql/core/src/test/resources/sql-tests/inputs/pgSQL/case.sql
 ##########
 @@ -0,0 +1,267 @@
+--
+-- Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group
+--
+--
+-- CASE
+-- 
https://github.com/postgres/postgres/blob/REL_12_BETA1/src/test/regress/sql/aggregates.sql
+-- Test the case statement
+--
+-- There are 2 join condition is missing in this test case. we set 
spark.sql.crossJoin.enabled=true.
+set spark.sql.crossJoin.enabled=true;
+CREATE TABLE CASE_TBL (
+  i integer,
+  f double
+) USING parquet;
+
+CREATE TABLE CASE2_TBL (
+  i integer,
+  j integer
+) USING parquet;
+
+INSERT INTO CASE_TBL VALUES (1, 10.1);
+INSERT INTO CASE_TBL VALUES (2, 20.2);
+INSERT INTO CASE_TBL VALUES (3, -30.3);
+INSERT INTO CASE_TBL VALUES (4, NULL);
+
+INSERT INTO CASE2_TBL VALUES (1, -1);
+INSERT INTO CASE2_TBL VALUES (2, -2);
+INSERT INTO CASE2_TBL VALUES (3, -3);
+INSERT INTO CASE2_TBL VALUES (2, -4);
+INSERT INTO CASE2_TBL VALUES (1, NULL);
+INSERT INTO CASE2_TBL VALUES (NULL, -6);
+
+--
+-- Simplest examples without tables
+--
+
+SELECT '3' AS `One`,
+  CASE
+    WHEN 1 < 2 THEN 3
+  END AS `Simple WHEN`;
+
+SELECT '<NULL>' AS `One`,
+  CASE
+    WHEN 1 > 2 THEN 3
+  END AS `Simple default`;
+
+SELECT '3' AS `One`,
+  CASE
+    WHEN 1 < 2 THEN 3
+    ELSE 4
+  END AS `Simple ELSE`;
+
+SELECT '4' AS `One`,
+  CASE
+    WHEN 1 > 2 THEN 3
+    ELSE 4
+  END AS `ELSE default`;
+
+SELECT '6' AS `One`,
+  CASE
+    WHEN 1 > 2 THEN 3
+    WHEN 4 < 5 THEN 6
+    ELSE 7
+  END AS `Two WHEN with default`;
+
+-- [SPARK-27930] Add built-in Math Function: RANDOM
+-- SELECT '7' AS `None`,
+--   CASE WHEN random() < 0 THEN 1
+--   END AS `NULL on no matches`;
+
+-- Constant-expression folding shouldn't evaluate unreachable subexpressions
+SELECT CASE WHEN 1=0 THEN 1/0 WHEN 1=1 THEN 1 ELSE 2/0 END;
+SELECT CASE 1 WHEN 0 THEN 1/0 WHEN 1 THEN 1 ELSE 2/0 END;
+
+-- [SPARK-27923] PostgreSQL throws an exception but Spark SQL is NULL
+-- However we do not currently suppress folding of potentially
+-- reachable subexpressions
+SELECT CASE WHEN i > 100 THEN 1/0 ELSE 0 END FROM case_tbl;
+
+-- Test for cases involving untyped literals in test expression
+SELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END;
+
+--
+-- Examples of targets involving tables
+--
+
+SELECT '' AS `Five`,
+  CASE
+    WHEN i >= 3 THEN i
+  END AS `>= 3 or Null`
+  FROM CASE_TBL;
+
+SELECT '' AS `Five`,
+  CASE WHEN i >= 3 THEN (i + i)
+       ELSE i
+  END AS `Simplest Math`
+  FROM CASE_TBL;
+
+SELECT '' AS `Five`, i AS `Value`,
+  CASE WHEN (i < 0) THEN 'small'
+       WHEN (i = 0) THEN 'zero'
+       WHEN (i = 1) THEN 'one'
+       WHEN (i = 2) THEN 'two'
+       ELSE 'big'
+  END AS `Category`
+  FROM CASE_TBL;
+
+SELECT '' AS `Five`,
+  CASE WHEN ((i < 0) or (i < 0)) THEN 'small'
+       WHEN ((i = 0) or (i = 0)) THEN 'zero'
+       WHEN ((i = 1) or (i = 1)) THEN 'one'
+       WHEN ((i = 2) or (i = 2)) THEN 'two'
+       ELSE 'big'
+  END AS `Category`
+  FROM CASE_TBL;
+
+--
+-- Examples of qualifications involving tables
+--
+
+--
+-- NULLIF() and COALESCE()
+-- Shorthand forms for typical CASE constructs
+--  defined in the SQL standard.
+--
+
+SELECT * FROM CASE_TBL WHERE COALESCE(f,i) = 4;
+
+SELECT * FROM CASE_TBL WHERE NULLIF(f,i) = 2;
+
+SELECT COALESCE(a.f, b.i, b.j)
+  FROM CASE_TBL a, CASE2_TBL b;
+
+SELECT *
+  FROM CASE_TBL a, CASE2_TBL b
+  WHERE COALESCE(a.f, b.i, b.j) = 2;
+
+SELECT '' AS Five, NULLIF(a.i,b.i) AS `NULLIF(a.i,b.i)`,
+  NULLIF(b.i, 4) AS `NULLIF(b.i,4)`
+  FROM CASE_TBL a, CASE2_TBL b;
+
+SELECT '' AS `Two`, *
+  FROM CASE_TBL a, CASE2_TBL b
+  WHERE COALESCE(f,b.i) = 2;
+
+-- We don't support update now.
 
 Review comment:
   Hi, @gatorsmile and @wangyum . The half of the file is `comment` which is 
irrelevant to Apache Spark. Do we need to keep all the invalid comments? In 
fact, the original will be changed time to time, too. For the simply invalid 
one (which has no SPARK JIRA), shall we skip adding comments?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to