blob: 294e68dc1811295f4fa3768ab4f371c48710aa66 [file] [log] [blame]
dan680f6e82019-03-04 21:07:11 +00001# 2018 May 19
2#
3# The author disclaims copyright to this source code. In place of
4# a legal notice, here is a blessing:
5#
6# May you do good and not evil.
7# May you find forgiveness for yourself and forgive others.
8# May you share freely, never taking more than you give.
9#
10#***********************************************************************
11#
12
13source [file join [file dirname $argv0] pg_common.tcl]
14
15#=========================================================================
16
17start_test windowerr "2019 March 01"
18ifcapable !windowfunc
19
20execsql_test 1.0 {
21 DROP TABLE IF EXISTS t1;
22 CREATE TABLE t1(a INTEGER, b INTEGER);
dan72b9fdc2019-03-09 20:49:17 +000023 INSERT INTO t1 VALUES(1, 1);
24 INSERT INTO t1 VALUES(2, 2);
25 INSERT INTO t1 VALUES(3, 3);
26 INSERT INTO t1 VALUES(4, 4);
27 INSERT INTO t1 VALUES(5, 5);
dan680f6e82019-03-04 21:07:11 +000028}
29
30foreach {tn frame} {
31 1 "ORDER BY a ROWS BETWEEN -1 PRECEDING AND 1 FOLLOWING"
32 2 "ORDER BY a ROWS BETWEEN 1 PRECEDING AND -1 FOLLOWING"
33
34 3 "ORDER BY a RANGE BETWEEN -1 PRECEDING AND 1 FOLLOWING"
35 4 "ORDER BY a RANGE BETWEEN 1 PRECEDING AND -1 FOLLOWING"
36
37 5 "ORDER BY a GROUPS BETWEEN -1 PRECEDING AND 1 FOLLOWING"
38 6 "ORDER BY a GROUPS BETWEEN 1 PRECEDING AND -1 FOLLOWING"
dan72b9fdc2019-03-09 20:49:17 +000039
40 7 "ORDER BY a,b RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING"
dan0525b6f2019-03-18 21:19:40 +000041
42 8 "PARTITION BY a RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING"
dan680f6e82019-03-04 21:07:11 +000043} {
44 errorsql_test 1.$tn "
45 SELECT a, sum(b) OVER (
46 $frame
dan72b9fdc2019-03-09 20:49:17 +000047 ) FROM t1 ORDER BY 1
dan680f6e82019-03-04 21:07:11 +000048 "
49}
dan4ded26a2019-03-28 16:15:05 +000050errorsql_test 2.1 {
51 SELECT sum( sum(a) OVER () ) FROM t1;
52}
53
54errorsql_test 2.2 {
55 SELECT sum(a) OVER () AS xyz FROM t1 ORDER BY sum(xyz);
56}
57
dan1d07f1d2019-04-01 17:24:20 +000058errorsql_test 3.0 {
59 SELECT sum(a) OVER win FROM t1
60 WINDOW win AS (ROWS BETWEEN 'hello' PRECEDING AND 10 FOLLOWING)
61}
62errorsql_test 3.2 {
63 SELECT sum(a) OVER win FROM t1
64 WINDOW win AS (ROWS BETWEEN 10 PRECEDING AND x'ABCD' FOLLOWING)
65}
66
dan5e61c1b2019-07-13 17:45:25 +000067errorsql_test 3.3 {
68 SELECT row_number(a) OVER () FROM t1;
69}
dan680f6e82019-03-04 21:07:11 +000070
71finish_test
72