Back to home page

OSCL-LXR

 
 

    


0001 -- Tests aggregate expressions in outer query and EXISTS subquery.
0002 
0003 -- Test aggregate operator with codegen on and off.
0004 --CONFIG_DIM1 spark.sql.codegen.wholeStage=true
0005 --CONFIG_DIM1 spark.sql.codegen.wholeStage=false,spark.sql.codegen.factoryMode=CODEGEN_ONLY
0006 --CONFIG_DIM1 spark.sql.codegen.wholeStage=false,spark.sql.codegen.factoryMode=NO_CODEGEN
0007 
0008 CREATE TEMPORARY VIEW EMP AS SELECT * FROM VALUES
0009   (100, "emp 1", date "2005-01-01", 100.00D, 10),
0010   (100, "emp 1", date "2005-01-01", 100.00D, 10),
0011   (200, "emp 2", date "2003-01-01", 200.00D, 10),
0012   (300, "emp 3", date "2002-01-01", 300.00D, 20),
0013   (400, "emp 4", date "2005-01-01", 400.00D, 30),
0014   (500, "emp 5", date "2001-01-01", 400.00D, NULL),
0015   (600, "emp 6 - no dept", date "2001-01-01", 400.00D, 100),
0016   (700, "emp 7", date "2010-01-01", 400.00D, 100),
0017   (800, "emp 8", date "2016-01-01", 150.00D, 70)
0018 AS EMP(id, emp_name, hiredate, salary, dept_id);
0019 
0020 CREATE TEMPORARY VIEW DEPT AS SELECT * FROM VALUES
0021   (10, "dept 1", "CA"),
0022   (20, "dept 2", "NY"),
0023   (30, "dept 3", "TX"),
0024   (40, "dept 4 - unassigned", "OR"),
0025   (50, "dept 5 - unassigned", "NJ"),
0026   (70, "dept 7", "FL")
0027 AS DEPT(dept_id, dept_name, state);
0028 
0029 CREATE TEMPORARY VIEW BONUS AS SELECT * FROM VALUES
0030   ("emp 1", 10.00D),
0031   ("emp 1", 20.00D),
0032   ("emp 2", 300.00D),
0033   ("emp 2", 100.00D),
0034   ("emp 3", 300.00D),
0035   ("emp 4", 100.00D),
0036   ("emp 5", 1000.00D),
0037   ("emp 6 - no dept", 500.00D)
0038 AS BONUS(emp_name, bonus_amt);
0039 
0040 -- Aggregate in outer query block.
0041 -- TC.01.01
0042 SELECT emp.dept_id, 
0043        avg(salary),
0044        sum(salary)
0045 FROM   emp 
0046 WHERE  EXISTS (SELECT state 
0047                FROM   dept 
0048                WHERE  dept.dept_id = emp.dept_id) 
0049 GROUP  BY dept_id; 
0050 
0051 -- Aggregate in inner/subquery block
0052 -- TC.01.02
0053 SELECT emp_name 
0054 FROM   emp 
0055 WHERE  EXISTS (SELECT max(dept.dept_id) a 
0056                FROM   dept 
0057                WHERE  dept.dept_id = emp.dept_id 
0058                GROUP  BY dept.dept_id); 
0059 
0060 -- Aggregate expression in both outer and inner query block.
0061 -- TC.01.03
0062 SELECT count(*) 
0063 FROM   emp 
0064 WHERE  EXISTS (SELECT max(dept.dept_id) a 
0065                FROM   dept 
0066                WHERE  dept.dept_id = emp.dept_id 
0067                GROUP  BY dept.dept_id); 
0068 
0069 -- Nested exists with aggregate expression in inner most query block.
0070 -- TC.01.04
0071 SELECT * 
0072 FROM   bonus 
0073 WHERE  EXISTS (SELECT 1 
0074                FROM   emp 
0075                WHERE  emp.emp_name = bonus.emp_name 
0076                       AND EXISTS (SELECT max(dept.dept_id) 
0077                                   FROM   dept 
0078                                   WHERE  emp.dept_id = dept.dept_id 
0079                                   GROUP  BY dept.dept_id));
0080 
0081 -- Not exists with Aggregate expression in outer
0082 -- TC.01.05
0083 SELECT emp.dept_id, 
0084        Avg(salary), 
0085        Sum(salary) 
0086 FROM   emp 
0087 WHERE  NOT EXISTS (SELECT state 
0088                    FROM   dept 
0089                    WHERE  dept.dept_id = emp.dept_id) 
0090 GROUP  BY dept_id; 
0091 
0092 -- Not exists with Aggregate expression in subquery block
0093 -- TC.01.06
0094 SELECT emp_name 
0095 FROM   emp 
0096 WHERE  NOT EXISTS (SELECT max(dept.dept_id) a 
0097                    FROM   dept 
0098                    WHERE  dept.dept_id = emp.dept_id 
0099                    GROUP  BY dept.dept_id); 
0100 
0101 -- Not exists with Aggregate expression in outer and subquery block
0102 -- TC.01.07
0103 SELECT count(*) 
0104 FROM   emp 
0105 WHERE  NOT EXISTS (SELECT max(dept.dept_id) a 
0106                    FROM   dept 
0107                    WHERE  dept.dept_id = emp.dept_id 
0108                    GROUP  BY dept.dept_id); 
0109 
0110 -- Nested not exists and exists with aggregate expression in inner most query block.
0111 -- TC.01.08
0112 SELECT * 
0113 FROM   bonus 
0114 WHERE  NOT EXISTS (SELECT 1 
0115                    FROM   emp 
0116                    WHERE  emp.emp_name = bonus.emp_name 
0117                           AND EXISTS (SELECT Max(dept.dept_id) 
0118                                       FROM   dept 
0119                                       WHERE  emp.dept_id = dept.dept_id 
0120                                       GROUP  BY dept.dept_id));