xref: /sqlite-3.40.0/test/windowE.test (revision ac79fa1c)
1# 2022 October 18
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
13set testdir [file dirname $argv0]
14source $testdir/tester.tcl
15set testprefix windowE
16
17proc custom {a b} { return [string compare $a $b] }
18db collate custom custom
19
20do_execsql_test 1.0 {
21  CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT COLLATE custom);
22  INSERT INTO t1 VALUES(1, 'one');
23  INSERT INTO t1 VALUES(2, 'two');
24  INSERT INTO t1 VALUES(3, 'three');
25  INSERT INTO t1 VALUES(4, 'four');
26  INSERT INTO t1 VALUES(5, 'five');
27  INSERT INTO t1 VALUES(6, 'six');
28  CREATE INDEX t1b ON t1(b);
29}
30
31do_execsql_test 1.1 {
32  SELECT * FROM t1
33} {
34  1 one 2 two 3 three 4 four 5 five 6 six
35}
36
37do_execsql_test 1.2 {
38  SELECT group_concat(a,',') OVER win FROM t1
39  WINDOW win AS (
40    ORDER BY b RANGE BETWEEN 1 PRECEDING AND 2 PRECEDING
41  )
42} {
43  5 4 1 6 3 2
44}
45
46proc custom {a b} { return [string compare $b $a] }
47
48do_execsql_test 1.3 {
49  SELECT group_concat(a,',') OVER win FROM t1
50  WINDOW win AS (
51    ORDER BY b RANGE BETWEEN 1 PRECEDING AND 2 PRECEDING
52  )
53} {
54  5 5,4 5,4,1 5,4,1,6 5,4,1,6,3 5,4,1,6,3,2
55}
56
57finish_test
58
59