16ba7ab0dSdan# 2019 July 2 26ba7ab0dSdan# 36ba7ab0dSdan# The author disclaims copyright to this source code. In place of 46ba7ab0dSdan# a legal notice, here is a blessing: 56ba7ab0dSdan# 66ba7ab0dSdan# May you do good and not evil. 76ba7ab0dSdan# May you find forgiveness for yourself and forgive others. 86ba7ab0dSdan# May you share freely, never taking more than you give. 96ba7ab0dSdan# 106ba7ab0dSdan#*********************************************************************** 116ba7ab0dSdan# This file implements regression tests for SQLite library. 126ba7ab0dSdan# 136ba7ab0dSdan 146ba7ab0dSdan#################################################### 156ba7ab0dSdan# DO NOT EDIT! THIS FILE IS AUTOMATICALLY GENERATED! 166ba7ab0dSdan#################################################### 176ba7ab0dSdan 186ba7ab0dSdanset testdir [file dirname $argv0] 196ba7ab0dSdansource $testdir/tester.tcl 206ba7ab0dSdanset testprefix filter2 216ba7ab0dSdan 226ba7ab0dSdanifcapable !windowfunc { finish_test ; return } 236ba7ab0dSdando_execsql_test 1.0 { 246ba7ab0dSdan DROP TABLE IF EXISTS t1; 256ba7ab0dSdan CREATE TABLE t1(a INTEGER PRIMARY KEY, b INTEGER); 266ba7ab0dSdan INSERT INTO t1 VALUES 276ba7ab0dSdan (1, 7), (2, 3), (3, 5), (4, 30), (5, 26), (6, 23), (7, 27), 286ba7ab0dSdan (8, 3), (9, 17), (10, 26), (11, 33), (12, 25), (13, NULL), (14, 47), 296ba7ab0dSdan (15, 36), (16, 13), (17, 45), (18, 31), (19, 11), (20, 36), (21, 37), 306ba7ab0dSdan (22, 21), (23, 22), (24, 14), (25, 16), (26, 3), (27, 7), (28, 29), 316ba7ab0dSdan (29, 50), (30, 38), (31, 3), (32, 36), (33, 12), (34, 4), (35, 46), 326ba7ab0dSdan (36, 3), (37, 48), (38, 23), (39, NULL), (40, 24), (41, 5), (42, 46), 336ba7ab0dSdan (43, 11), (44, NULL), (45, 18), (46, 25), (47, 15), (48, 18), (49, 23); 346ba7ab0dSdan} {} 356ba7ab0dSdan 366ba7ab0dSdando_execsql_test 1.1 { 376ba7ab0dSdan SELECT sum(b) FROM t1 386ba7ab0dSdan} {1041} 396ba7ab0dSdan 406ba7ab0dSdando_execsql_test 1.2 { 416ba7ab0dSdan SELECT sum(b) FILTER (WHERE a<10) FROM t1 426ba7ab0dSdan} {141} 436ba7ab0dSdan 446ba7ab0dSdando_execsql_test 1.3 { 456ba7ab0dSdan SELECT count(DISTINCT b) FROM t1 466ba7ab0dSdan} {31} 476ba7ab0dSdan 486ba7ab0dSdando_execsql_test 1.4 { 496ba7ab0dSdan SELECT count(DISTINCT b) FILTER (WHERE a!=19) FROM t1 506ba7ab0dSdan} {31} 516ba7ab0dSdan 526ba7ab0dSdando_execsql_test 1.5 { 536ba7ab0dSdan SELECT min(b) FILTER (WHERE a>19), 546ba7ab0dSdan min(b) FILTER (WHERE a>0), 556ba7ab0dSdan max(a+b) FILTER (WHERE a>19), 566ba7ab0dSdan max(b+a) FILTER (WHERE a BETWEEN 10 AND 40) 576ba7ab0dSdan FROM t1; 586ba7ab0dSdan} {3 3 88 85} 596ba7ab0dSdan 606ba7ab0dSdando_execsql_test 1.6 { 616ba7ab0dSdan SELECT min(b), 626ba7ab0dSdan min(b), 636ba7ab0dSdan max(a+b), 646ba7ab0dSdan max(b+a) 656ba7ab0dSdan FROM t1 666ba7ab0dSdan GROUP BY (a%10) 676ba7ab0dSdan ORDER BY 1, 2, 3, 4; 686ba7ab0dSdan} {3 3 58 58 3 3 66 66 3 3 71 71 3 3 88 88 4 4 61 61 5 5 54 54 696ba7ab0dSdan 7 7 85 85 11 11 79 79 16 16 81 81 24 24 68 68} 706ba7ab0dSdan 716ba7ab0dSdando_execsql_test 1.7 { 726ba7ab0dSdan SELECT min(b) FILTER (WHERE a>19), 736ba7ab0dSdan min(b) FILTER (WHERE a>0), 746ba7ab0dSdan max(a+b) FILTER (WHERE a>19), 756ba7ab0dSdan max(b+a) FILTER (WHERE a BETWEEN 10 AND 40) 766ba7ab0dSdan FROM t1 776ba7ab0dSdan GROUP BY (a%10) 786ba7ab0dSdan ORDER BY 1, 2, 3, 4; 796ba7ab0dSdan} {3 3 58 58 3 3 71 39 4 4 38 61 7 7 85 85 11 5 54 45 16 16 81 81 806ba7ab0dSdan 18 3 66 61 21 3 88 68 23 11 79 79 24 24 68 68} 816ba7ab0dSdan 82*16e12c57Sdando_execsql_test 1.8 { 83*16e12c57Sdan SELECT sum(a+b) FILTER (WHERE a=NULL) FROM t1 84*16e12c57Sdan} {{}} 85*16e12c57Sdan 86*16e12c57Sdando_execsql_test 1.9 { 87*16e12c57Sdan SELECT (a%5) FROM t1 GROUP BY (a%5) 88*16e12c57Sdan HAVING sum(b) FILTER (WHERE b<20) > 34 89*16e12c57Sdan ORDER BY 1 90*16e12c57Sdan} {3 4} 91*16e12c57Sdan 92*16e12c57Sdando_execsql_test 1.10 { 93*16e12c57Sdan SELECT (a%5), sum(b) FILTER (WHERE b<20) AS bbb 94*16e12c57Sdan FROM t1 95*16e12c57Sdan GROUP BY (a%5) HAVING sum(b) FILTER (WHERE b<20) >34 96*16e12c57Sdan ORDER BY 1 97*16e12c57Sdan} {3 49 4 46} 98*16e12c57Sdan 99*16e12c57Sdando_execsql_test 1.11 { 100*16e12c57Sdan SELECT (a%5), sum(b) FILTER (WHERE b<20) AS bbb 101*16e12c57Sdan FROM t1 102*16e12c57Sdan GROUP BY (a%5) HAVING sum(b) FILTER (WHERE b<20) >34 103*16e12c57Sdan ORDER BY 2 104*16e12c57Sdan} {4 46 3 49} 105*16e12c57Sdan 106*16e12c57Sdando_execsql_test 1.12 { 107*16e12c57Sdan SELECT (a%5), 108*16e12c57Sdan sum(b) FILTER (WHERE b<20) AS bbb, 109*16e12c57Sdan count(distinct b) FILTER (WHERE b<20 OR a=13) AS ccc 110*16e12c57Sdan FROM t1 GROUP BY (a%5) 111*16e12c57Sdan ORDER BY 2 112*16e12c57Sdan} {2 25 3 0 34 2 1 34 4 4 46 4 3 49 5} 113*16e12c57Sdan 114*16e12c57Sdando_execsql_test 1.13 { 115*16e12c57Sdan SELECT 116*16e12c57Sdan group_concat(CAST(b AS TEXT), '_') FILTER (WHERE b%2!=0), 117*16e12c57Sdan group_concat(CAST(b AS TEXT), '_') FILTER (WHERE b%2!=1), 118*16e12c57Sdan count(*) FILTER (WHERE b%2!=0), 119*16e12c57Sdan count(*) FILTER (WHERE b%2!=1) 120*16e12c57Sdan FROM t1; 121*16e12c57Sdan} {7_3_5_23_27_3_17_33_25_47_13_45_31_11_37_21_3_7_29_3_3_23_5_11_25_15_23 30_26_26_36_36_22_14_16_50_38_36_12_4_46_48_24_46_18_18 27 19} 122*16e12c57Sdan 123*16e12c57Sdan 124*16e12c57Sdando_test 1.14 { 125*16e12c57Sdan set myres {} 126*16e12c57Sdan foreach r [db eval {SELECT 127*16e12c57Sdan avg(b) FILTER (WHERE b>a), 128*16e12c57Sdan avg(b) FILTER (WHERE b<a) 129*16e12c57Sdan FROM t1 GROUP BY (a%2) ORDER BY 1,2;}] { 130*16e12c57Sdan lappend myres [format %.4f [set r]] 131*16e12c57Sdan } 132*16e12c57Sdan set res2 {30.8333 13.7273 31.4167 13.0000} 133*16e12c57Sdan set i 0 134*16e12c57Sdan foreach r [set myres] r2 [set res2] { 135*16e12c57Sdan if {[set r]<([set r2]-0.0001) || [set r]>([set r2]+0.0001)} { 136*16e12c57Sdan error "list element [set i] does not match: got=[set r] expected=[set r2]" 137*16e12c57Sdan } 138*16e12c57Sdan incr i 139*16e12c57Sdan } 140*16e12c57Sdan set {} {} 141*16e12c57Sdan} {} 142*16e12c57Sdan 143*16e12c57Sdando_execsql_test 1.15 { 144*16e12c57Sdan SELECT 145*16e12c57Sdan a/5, 146*16e12c57Sdan sum(b) FILTER (WHERE a%5=0), 147*16e12c57Sdan sum(b) FILTER (WHERE a%5=1), 148*16e12c57Sdan sum(b) FILTER (WHERE a%5=2), 149*16e12c57Sdan sum(b) FILTER (WHERE a%5=3), 150*16e12c57Sdan sum(b) FILTER (WHERE a%5=4) 151*16e12c57Sdan FROM t1 GROUP BY (a/5) ORDER BY 1; 152*16e12c57Sdan} {0 {} 7 3 5 30 1 26 23 27 3 17 2 26 33 25 {} 47 3 36 13 45 31 11 153*16e12c57Sdan 4 36 37 21 22 14 5 16 3 7 29 50 6 38 3 36 12 4 7 46 3 48 23 {} 154*16e12c57Sdan 8 24 5 46 11 {} 9 18 25 15 18 23} 155*16e12c57Sdan 1566ba7ab0dSdanfinish_test 157