You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ab...@apache.org on 2007/03/09 17:37:22 UTC

svn commit: r516454 [2/2] - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/sql/compile/ engine/org/apache/derby/loc/ shared/org/apache/derby/shared/common/reference/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/d...

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GroupByExpressionTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GroupByExpressionTest.java?view=diff&rev=516454&r1=516453&r2=516454
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GroupByExpressionTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GroupByExpressionTest.java Fri Mar  9 08:37:20 2007
@@ -70,6 +70,12 @@
                         {2,11,202}});
 
         verifyQueryResults(
+                "Q1_2",
+                "select c1,c2,sum(c3) from test group by c2,c1 having c1=1 and c2=10 and sum(c3) > 40",
+                new int[][] {
+                        {1,10,100}});
+
+        verifyQueryResults(
                 "Q2",
                 "select c1+c2, sum(c3) from test group by c1,c2",
                 new int[][] {
@@ -106,6 +112,14 @@
                         {8,12,1},
                         {10,12,1},
                         {9,13,2}});
+
+        // having clause with expression. same as last query with an additional restriction.
+        verifyQueryResults(
+                "Q6b",
+                "select c2-c1, c1+c2, count(*) from test group by c1+c2, c2-c1 having (c2-c1)+count(*)>10",
+                new int[][] {
+                        {10,12,1},
+                        {9,13,2}});
     }
     
     
@@ -123,6 +137,11 @@
                 "select a+1, sum(b) from (select c1+1  a , c2+1 b from test) t group by a+1",
                 new int[][] {
                         {3,23}, {4,35}});
+
+        verifyQueryResults(
+                "Q2",
+                "select a+1, sum(b) from (select c1+1  a , c2+1 b from test) t group by a+1 having a+1 > 3",
+                new int[][] {{4,35}});
         
         verifyQueryResults(
                 "Q3",
@@ -130,6 +149,7 @@
                 "(select c1+1 a, max(c2) b from test group by c1+1) t " +
                 "group by b/2",
                 new int[][] {{5,5}});
+
     }
     
 
@@ -214,6 +234,13 @@
                 "select rtrim(c1) from t2 group by rtrim(c1)",
                 new String[][] { {"123"},
                                  {"abc"} });
+        
+       // rtrim in having clause as well.
+        verifyQueryResults(
+                "rtrim_having",
+                "select rtrim(c1) from t2 group by rtrim(c1) having rtrim(c1) like 'ab%'",
+                new String[][] { {"abc"} });
+        
 
         // locate (2-args)
         verifyQueryResults(

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/union.sql
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/union.sql?view=diff&rev=516454&r1=516453&r2=516454
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/union.sql (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/union.sql Fri Mar  9 08:37:20 2007
@@ -381,3 +381,17 @@
    select nullif('x','x') as f0, nullif(1,1) as f1 from b; 
 drop table a;
 drop table b;
+
+-- DERBY-681. Check union with group by/having
+create table o (name varchar(20), ord int);
+create table a (ord int, amount int);
+
+create view v1 (vx, vy) 
+as select name, sum(ord) from o where ord > 0 group by name, ord
+    having ord <= ANY (select ord from a);
+
+select vx, vy from v1
+     union select vx, sum(vy) from v1 group by vx, vy having (vy / 2) > 15;
+drop view v1;
+drop table o;
+drop table a;

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/views.sql
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/views.sql?view=diff&rev=516454&r1=516453&r2=516454
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/views.sql (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/views.sql Fri Mar  9 08:37:20 2007
@@ -203,3 +203,20 @@
 -- DERBY-2018
 -- expect error
 CREATE VIEW v1(c1) AS VALUES NULL;
+
+-- DERBY-681
+create table o (name varchar(20), ord int);
+create table a (ord int, amount int);
+
+create view v1 (vx, vy) 
+as select name, sum(ord) from o where ord > 0 group by name, ord;
+
+create view v2 (vx, vy) as
+  select name, sum(ord) from o where ord > 0 group by name, ord
+    having ord <= ANY (select ord from a);
+drop view v2;
+drop view v1;
+drop table a;
+drop table o;
+
+