cat > script <<'+-+-+-+-+-END-OF-FILE-+-+-+-+-+'
create t set a, b, c;
insert into t values
(1, 1, 2,
 1, 2, 3,
 2, 3, 7,
 2, 4, 9,
 1, 1, 2,
 3, 1, 4);
select from t;

select a, b from t;
select a, b from t having a = 1;
select a, b from t having sum (b) = 1;

select sum (a), sum (b), sum (c) from t;
select sum (a), sum (b), sum (c) from t having sum (a) = 10;
select sum (a), sum (b), sum (c) from t having sum (a) != 10;
select sum (a), sum (b), sum (c) from t having sum (a) != 10 or sum (c) = 27;
select sum (a), sum (b), sum (c) from t having sum (a) != 10 and sum (c) = 27;
select sum (a), sum (b), sum (c) from t having sum (a) in (10, 27);
select sum (a), sum (b), sum (c) from t having sum (a) > 10;

select a, sum (b) from t;
select a, sum (b) from t having a = 1;
select a, sum (b) from t having sum (b) = 1;

select a, b from t;
select a, b from t order by a;
select a, b from t having a = 1 order by a;

select sum (a), sum (b) from t;
select sum (a), sum (b) from t having sum (a) = 10;

select a, b, sum (c) from t order by a;
select a, b, sum (c) from t having a = 1 order by a;

select a, b from t group by a, b order by a, b;
select a, b from t group by a, b having a = 1 order by a, b;

select a, sum (b) from t group by a order by a;
select a, sum (b) from t group by a having sum (b) = 7 order by a;

select sum (a), sum (b) from t group by a order by a;
select sum (a), sum (b) from t group by a having sum (b) > 1 order by a;

select a, b from t group by a order by a;
select a, b from t group by a having a = 1 order by a;

select a, b, sum (c) from t group by a order by a;
select a, b, sum (c) from t group by a having a = 1 order by a;
+-+-+-+-+-END-OF-FILE-+-+-+-+-+
chmod 644 script
cat > stdout <<'+-+-+-+-+-END-OF-FILE-+-+-+-+-+'
* create t set a, b, c;
* insert into t values
. (1, 1, 2,
.  1, 2, 3,
.  2, 3, 7,
.  2, 4, 9,
.  1, 1, 2,
.  3, 1, 4);
* select from t;
     a       b       c

     1       1       2
     1       2       3
     2       3       7
     2       4       9
     1       1       2
     3       1       4
* 
* select a, b from t;
     a       b

     1       1
     1       2
     2       3
     2       4
     1       1
     3       1
* select a, b from t having a = 1;

*** Error: attribute 'a' not allowed in having clause
* select a, b from t having sum (b) = 1;

*** Error: invalid select list with having clause
* 
* select sum (a), sum (b), sum (c) from t;
     SUM(a)       SUM(b)       SUM(c)

         10           12           27
* select sum (a), sum (b), sum (c) from t having sum (a) = 10;
     SUM(a)       SUM(b)       SUM(c)

         10           12           27
* select sum (a), sum (b), sum (c) from t having sum (a) != 10;
     SUM(a)       SUM(b)       SUM(c)

* select sum (a), sum (b), sum (c) from t having sum (a) != 10 or sum (c) = 27;
     SUM(a)       SUM(b)       SUM(c)

         10           12           27
* select sum (a), sum (b), sum (c) from t having sum (a) != 10 and sum (c) = 27;
     SUM(a)       SUM(b)       SUM(c)

* select sum (a), sum (b), sum (c) from t having sum (a) in (10, 27);
     SUM(a)       SUM(b)       SUM(c)

         10           12           27
* select sum (a), sum (b), sum (c) from t having sum (a) > 10;
     SUM(a)       SUM(b)       SUM(c)

* 
* select a, sum (b) from t;
     a       SUM(b)

     1
     1
     2
     2
     1
     3
                 12
* select a, sum (b) from t having a = 1;

*** Error: attribute 'a' not allowed in having clause
* select a, sum (b) from t having sum (b) = 1;

*** Error: invalid select list with having clause
* 
* select a, b from t;
     a       b

     1       1
     1       2
     2       3
     2       4
     1       1
     3       1
* select a, b from t order by a;
     a       b

     1       1
     1       2
     1       1
     2       3
     2       4
     3       1
* select a, b from t having a = 1 order by a;

*** Error: attribute 'a' not allowed in having clause
* 
* select sum (a), sum (b) from t;
     SUM(a)       SUM(b)

         10           12
* select sum (a), sum (b) from t having sum (a) = 10;
     SUM(a)       SUM(b)

         10           12
* 
* select a, b, sum (c) from t order by a;
     a       b       SUM(c)

     1       1
     1       2
     1       1
     2       3
     2       4
     3       1
                         27
* select a, b, sum (c) from t having a = 1 order by a;

*** Error: attribute 'a' not allowed in having clause
* 
* select a, b from t group by a, b order by a, b;
     a       b

     1       1
     1       2
     2       3
     2       4
     3       1
* select a, b from t group by a, b having a = 1 order by a, b;
     a       b

     1       1
     1       2
* 
* select a, sum (b) from t group by a order by a;
     a       SUM(b)

     1            4
     2            7
     3            1
* select a, sum (b) from t group by a having sum (b) = 7 order by a;
     a       SUM(b)

     2            7
* 
* select sum (a), sum (b) from t group by a order by a;
     SUM(a)       SUM(b)

          3            4
          4            7
          3            1
* select sum (a), sum (b) from t group by a having sum (b) > 1 order by a;
     SUM(a)       SUM(b)

          3            4
          4            7
* 
* select a, b from t group by a order by a;
     a       b

     1       1
     1       2
     1       1
     1
     2       3
     2       4
     2
     3       1
     3
* select a, b from t group by a having a = 1 order by a;

*** Error: invalid select list with having clause
* 
* select a, b, sum (c) from t group by a order by a;
     a       b       SUM(c)

     1       1
     1       2
     1       1
     1                    7
     2       3
     2       4
     2                   16
     3       1
     3                    4
* select a, b, sum (c) from t group by a having a = 1 order by a;

*** Error: invalid select list with having clause
* 
+-+-+-+-+-END-OF-FILE-+-+-+-+-+
chmod 644 stdout
cat > stdout.jp_euc <<'+-+-+-+-+-END-OF-FILE-+-+-+-+-+'
* create t set a, b, c;
* insert into t values
. (1, 1, 2,
.  1, 2, 3,
.  2, 3, 7,
.  2, 4, 9,
.  1, 1, 2,
.  3, 1, 4);
* select from t;
     a       b       c

     1       1       2
     1       2       3
     2       3       7
     2       4       9
     1       1       2
     3       1       4
* 
* select a, b from t;
     a       b

     1       1
     1       2
     2       3
     2       4
     1       1
     3       1
* select a, b from t having a = 1;

*** Error: HAVING ʸǥȥӥ塼 'a' λϤǤޤ
* select a, b from t having sum (b) = 1;

*** Error: ̵ HAVING ʸդ SELECT ꥹȤǤ
* 
* select sum (a), sum (b), sum (c) from t;
     SUM(a)       SUM(b)       SUM(c)

         10           12           27
* select sum (a), sum (b), sum (c) from t having sum (a) = 10;
     SUM(a)       SUM(b)       SUM(c)

         10           12           27
* select sum (a), sum (b), sum (c) from t having sum (a) != 10;
     SUM(a)       SUM(b)       SUM(c)

* select sum (a), sum (b), sum (c) from t having sum (a) != 10 or sum (c) = 27;
     SUM(a)       SUM(b)       SUM(c)

         10           12           27
* select sum (a), sum (b), sum (c) from t having sum (a) != 10 and sum (c) = 27;
     SUM(a)       SUM(b)       SUM(c)

* select sum (a), sum (b), sum (c) from t having sum (a) in (10, 27);
     SUM(a)       SUM(b)       SUM(c)

         10           12           27
* select sum (a), sum (b), sum (c) from t having sum (a) > 10;
     SUM(a)       SUM(b)       SUM(c)

* 
* select a, sum (b) from t;
     a       SUM(b)

     1
     1
     2
     2
     1
     3
                 12
* select a, sum (b) from t having a = 1;

*** Error: HAVING ʸǥȥӥ塼 'a' λϤǤޤ
* select a, sum (b) from t having sum (b) = 1;

*** Error: ̵ HAVING ʸդ SELECT ꥹȤǤ
* 
* select a, b from t;
     a       b

     1       1
     1       2
     2       3
     2       4
     1       1
     3       1
* select a, b from t order by a;
     a       b

     1       1
     1       2
     1       1
     2       3
     2       4
     3       1
* select a, b from t having a = 1 order by a;

*** Error: HAVING ʸǥȥӥ塼 'a' λϤǤޤ
* 
* select sum (a), sum (b) from t;
     SUM(a)       SUM(b)

         10           12
* select sum (a), sum (b) from t having sum (a) = 10;
     SUM(a)       SUM(b)

         10           12
* 
* select a, b, sum (c) from t order by a;
     a       b       SUM(c)

     1       1
     1       2
     1       1
     2       3
     2       4
     3       1
                         27
* select a, b, sum (c) from t having a = 1 order by a;

*** Error: HAVING ʸǥȥӥ塼 'a' λϤǤޤ
* 
* select a, b from t group by a, b order by a, b;
     a       b

     1       1
     1       2
     2       3
     2       4
     3       1
* select a, b from t group by a, b having a = 1 order by a, b;
     a       b

     1       1
     1       2
* 
* select a, sum (b) from t group by a order by a;
     a       SUM(b)

     1            4
     2            7
     3            1
* select a, sum (b) from t group by a having sum (b) = 7 order by a;
     a       SUM(b)

     2            7
* 
* select sum (a), sum (b) from t group by a order by a;
     SUM(a)       SUM(b)

          3            4
          4            7
          3            1
* select sum (a), sum (b) from t group by a having sum (b) > 1 order by a;
     SUM(a)       SUM(b)

          3            4
          4            7
* 
* select a, b from t group by a order by a;
     a       b

     1       1
     1       2
     1       1
     1
     2       3
     2       4
     2
     3       1
     3
* select a, b from t group by a having a = 1 order by a;

*** Error: ̵ HAVING ʸդ SELECT ꥹȤǤ
* 
* select a, b, sum (c) from t group by a order by a;
     a       b       SUM(c)

     1       1
     1       2
     1       1
     1                    7
     2       3
     2       4
     2                   16
     3       1
     3                    4
* select a, b, sum (c) from t group by a having a = 1 order by a;

*** Error: ̵ HAVING ʸդ SELECT ꥹȤǤ
* 
+-+-+-+-+-END-OF-FILE-+-+-+-+-+
chmod 644 stdout.jp_euc
cat > tag <<'+-+-+-+-+-END-OF-FILE-+-+-+-+-+'
Test the having clause.
+-+-+-+-+-END-OF-FILE-+-+-+-+-+
chmod 644 tag
