1# 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# This file implements regression tests for SQLite library. 12# 13 14#################################################### 15# DO NOT EDIT! THIS FILE IS AUTOMATICALLY GENERATED! 16#################################################### 17 18set testdir [file dirname $argv0] 19source $testdir/tester.tcl 20set testprefix window2 21 22do_execsql_test 1.0 { 23 DROP TABLE IF EXISTS t1; 24 CREATE TABLE t1(a INTEGER PRIMARY KEY, b TEXT, c TEXT, d INTEGER); 25 INSERT INTO t1 VALUES(1, 'odd', 'one', 1); 26 INSERT INTO t1 VALUES(2, 'even', 'two', 2); 27 INSERT INTO t1 VALUES(3, 'odd', 'three', 3); 28 INSERT INTO t1 VALUES(4, 'even', 'four', 4); 29 INSERT INTO t1 VALUES(5, 'odd', 'five', 5); 30 INSERT INTO t1 VALUES(6, 'even', 'six', 6); 31} {} 32 33do_execsql_test 1.1 { 34 SELECT c, sum(d) OVER (PARTITION BY b ORDER BY c) FROM t1; 35} {four 4 six 10 two 12 five 5 one 6 three 9} 36 37do_execsql_test 1.2 { 38 SELECT sum(d) OVER () FROM t1; 39} {21 21 21 21 21 21} 40 41do_execsql_test 1.3 { 42 SELECT sum(d) OVER (PARTITION BY b) FROM t1; 43} {12 12 12 9 9 9} 44 45#========================================================================== 46 47do_execsql_test 2.1 { 48 SELECT a, sum(d) OVER ( 49 ORDER BY d 50 ROWS BETWEEN 1000 PRECEDING AND 1 FOLLOWING 51 ) FROM t1 52} {1 3 2 6 3 10 4 15 5 21 6 21} 53 54do_execsql_test 2.2 { 55 SELECT a, sum(d) OVER ( 56 ORDER BY d 57 ROWS BETWEEN 1000 PRECEDING AND 1000 FOLLOWING 58 ) FROM t1 59} {1 21 2 21 3 21 4 21 5 21 6 21} 60 61do_execsql_test 2.3 { 62 SELECT a, sum(d) OVER ( 63 ORDER BY d 64 ROWS BETWEEN 1 PRECEDING AND 1000 FOLLOWING 65 ) FROM t1 66} {1 21 2 21 3 20 4 18 5 15 6 11} 67 68do_execsql_test 2.4 { 69 SELECT a, sum(d) OVER ( 70 ORDER BY d 71 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING 72 ) FROM t1 73} {1 3 2 6 3 9 4 12 5 15 6 11} 74 75do_execsql_test 2.5 { 76 SELECT a, sum(d) OVER ( 77 ORDER BY d 78 ROWS BETWEEN 1 PRECEDING AND 0 FOLLOWING 79 ) FROM t1 80} {1 1 2 3 3 5 4 7 5 9 6 11} 81 82do_execsql_test 2.6 { 83 SELECT a, sum(d) OVER ( 84 PARTITION BY b 85 ORDER BY d 86 ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING 87 ) FROM t1 88} {2 6 4 12 6 10 1 4 3 9 5 8} 89 90do_execsql_test 2.7 { 91 SELECT a, sum(d) OVER ( 92 PARTITION BY b 93 ORDER BY d 94 ROWS BETWEEN 0 PRECEDING AND 0 FOLLOWING 95 ) FROM t1 96} {2 2 4 4 6 6 1 1 3 3 5 5} 97 98do_execsql_test 2.8 { 99 SELECT a, sum(d) OVER ( 100 ORDER BY d 101 ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING 102 ) FROM t1 103} {1 6 2 9 3 12 4 15 5 11 6 6} 104 105do_execsql_test 2.9 { 106 SELECT a, sum(d) OVER ( 107 ORDER BY d 108 ROWS BETWEEN UNBOUNDED PRECEDING AND 2 FOLLOWING 109 ) FROM t1 110} {1 6 2 10 3 15 4 21 5 21 6 21} 111 112do_execsql_test 2.10 { 113 SELECT a, sum(d) OVER ( 114 ORDER BY d 115 ROWS BETWEEN CURRENT ROW AND 2 FOLLOWING 116 ) FROM t1 117} {1 6 2 9 3 12 4 15 5 11 6 6} 118 119do_execsql_test 2.11 { 120 SELECT a, sum(d) OVER ( 121 ORDER BY d 122 ROWS BETWEEN 2 PRECEDING AND CURRENT ROW 123 ) FROM t1 124} {1 1 2 3 3 6 4 9 5 12 6 15} 125 126do_execsql_test 2.13 { 127 SELECT a, sum(d) OVER ( 128 ORDER BY d 129 ROWS BETWEEN 2 PRECEDING AND UNBOUNDED FOLLOWING 130 ) FROM t1 131} {1 21 2 21 3 21 4 20 5 18 6 15} 132 133do_execsql_test 2.14 { 134 SELECT a, sum(d) OVER ( 135 ORDER BY d 136 ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING 137 ) FROM t1 138} {1 {} 2 1 3 3 4 6 5 9 6 12} 139 140do_execsql_test 2.15 { 141 SELECT a, sum(d) OVER ( 142 PARTITION BY b 143 ORDER BY d 144 ROWS BETWEEN 1 PRECEDING AND 0 PRECEDING 145 ) FROM t1 146} {2 2 4 6 6 10 1 1 3 4 5 8} 147 148do_execsql_test 2.16 { 149 SELECT a, sum(d) OVER ( 150 PARTITION BY b 151 ORDER BY d 152 ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING 153 ) FROM t1 154} {2 {} 4 2 6 4 1 {} 3 1 5 3} 155 156do_execsql_test 2.17 { 157 SELECT a, sum(d) OVER ( 158 PARTITION BY b 159 ORDER BY d 160 ROWS BETWEEN 1 PRECEDING AND 2 PRECEDING 161 ) FROM t1 162} {2 {} 4 {} 6 {} 1 {} 3 {} 5 {}} 163 164do_execsql_test 2.18 { 165 SELECT a, sum(d) OVER ( 166 PARTITION BY b 167 ORDER BY d 168 ROWS BETWEEN UNBOUNDED PRECEDING AND 2 PRECEDING 169 ) FROM t1 170} {2 {} 4 {} 6 2 1 {} 3 {} 5 1} 171 172do_execsql_test 2.19 { 173 SELECT a, sum(d) OVER ( 174 PARTITION BY b 175 ORDER BY d 176 ROWS BETWEEN 1 FOLLOWING AND 3 FOLLOWING 177 ) FROM t1 178} {2 10 4 6 6 {} 1 8 3 5 5 {}} 179 180do_execsql_test 2.20 { 181 SELECT a, sum(d) OVER ( 182 ORDER BY d 183 ROWS BETWEEN 1 FOLLOWING AND 2 FOLLOWING 184 ) FROM t1 185} {1 5 2 7 3 9 4 11 5 6 6 {}} 186 187do_execsql_test 2.21 { 188 SELECT a, sum(d) OVER ( 189 ORDER BY d 190 ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING 191 ) FROM t1 192} {1 20 2 18 3 15 4 11 5 6 6 {}} 193 194do_execsql_test 2.22 { 195 SELECT a, sum(d) OVER ( 196 PARTITION BY b 197 ORDER BY d 198 ROWS BETWEEN 1 FOLLOWING AND UNBOUNDED FOLLOWING 199 ) FROM t1 200} {2 10 4 6 6 {} 1 8 3 5 5 {}} 201 202do_execsql_test 2.23 { 203 SELECT a, sum(d) OVER ( 204 ORDER BY d 205 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING 206 ) FROM t1 207} {1 21 2 20 3 18 4 15 5 11 6 6} 208 209do_execsql_test 2.24 { 210 SELECT a, sum(d) OVER ( 211 PARTITION BY a%2 212 ORDER BY d 213 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING 214 ) FROM t1 215} {2 12 4 10 6 6 1 9 3 8 5 5} 216 217do_execsql_test 2.25 { 218 SELECT a, sum(d) OVER ( 219 ORDER BY d 220 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 221 ) FROM t1 222} {1 21 2 21 3 21 4 21 5 21 6 21} 223 224do_execsql_test 2.26 { 225 SELECT a, sum(d) OVER ( 226 PARTITION BY b 227 ORDER BY d 228 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 229 ) FROM t1 230} {2 12 4 12 6 12 1 9 3 9 5 9} 231 232do_execsql_test 2.27 { 233 SELECT a, sum(d) OVER ( 234 ORDER BY d 235 ROWS BETWEEN CURRENT ROW AND CURRENT ROW 236 ) FROM t1 237} {1 1 2 2 3 3 4 4 5 5 6 6} 238 239do_execsql_test 2.28 { 240 SELECT a, sum(d) OVER ( 241 PARTITION BY b 242 ORDER BY d 243 ROWS BETWEEN CURRENT ROW AND CURRENT ROW 244 ) FROM t1 245} {2 2 4 4 6 6 1 1 3 3 5 5} 246 247do_execsql_test 2.29 { 248 SELECT a, sum(d) OVER ( 249 ORDER BY d 250 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING 251 ) FROM t1 252} {1 21 2 20 3 18 4 15 5 11 6 6} 253 254do_execsql_test 2.30 { 255 SELECT a, sum(d) OVER ( 256 ORDER BY b 257 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING 258 ) FROM t1 259} {2 21 4 21 6 21 1 9 3 9 5 9} 260 261do_execsql_test 3.1 { 262 SELECT a, sum(d) OVER ( 263 PARTITION BY b ORDER BY d 264 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING 265 ) FROM t1 266} {2 12 4 10 6 6 1 9 3 8 5 5} 267 268do_execsql_test 3.2 { 269 SELECT a, sum(d) OVER ( 270 ORDER BY b 271 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING 272 ) FROM t1 273} {2 21 4 21 6 21 1 9 3 9 5 9} 274 275do_execsql_test 3.3 { 276 SELECT a, sum(d) OVER ( 277 ORDER BY d 278 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING 279 ) FROM t1 280} {1 21 2 21 3 21 4 21 5 21 6 21} 281 282do_execsql_test 3.4 { 283 SELECT a, sum(d) OVER ( 284 ORDER BY d/2 285 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 286 ) FROM t1 287} {1 1 2 3 3 6 4 10 5 15 6 21} 288 289#========================================================================== 290 291do_execsql_test 4.0 { 292 DROP TABLE IF EXISTS t2; 293 CREATE TABLE t2(a INTEGER PRIMARY KEY, b INTEGER); 294 INSERT INTO t2(a, b) VALUES 295 (1,0), (2,74), (3,41), (4,74), (5,23), (6,99), (7,26), (8,33), (9,2), 296 (10,89), (11,81), (12,96), (13,59), (14,38), (15,68), (16,39), (17,62), 297 (18,91), (19,46), (20,6), (21,99), (22,97), (23,27), (24,46), (25,78), 298 (26,54), (27,97), (28,8), (29,67), (30,29), (31,93), (32,84), (33,77), 299 (34,23), (35,16), (36,16), (37,93), (38,65), (39,35), (40,47), (41,7), 300 (42,86), (43,74), (44,61), (45,91), (46,85), (47,24), (48,85), (49,43), 301 (50,59), (51,12), (52,32), (53,56), (54,3), (55,91), (56,22), (57,90), 302 (58,55), (59,15), (60,28), (61,89), (62,25), (63,47), (64,1), (65,56), 303 (66,40), (67,43), (68,56), (69,16), (70,75), (71,36), (72,89), (73,98), 304 (74,76), (75,81), (76,4), (77,94), (78,42), (79,30), (80,78), (81,33), 305 (82,29), (83,53), (84,63), (85,2), (86,87), (87,37), (88,80), (89,84), 306 (90,72), (91,41), (92,9), (93,61), (94,73), (95,95), (96,65), (97,13), 307 (98,58), (99,96), (100,98), (101,1), (102,21), (103,74), (104,65), (105,35), 308 (106,5), (107,73), (108,11), (109,51), (110,87), (111,41), (112,12), (113,8), 309 (114,20), (115,31), (116,31), (117,15), (118,95), (119,22), (120,73), 310 (121,79), (122,88), (123,34), (124,8), (125,11), (126,49), (127,34), 311 (128,90), (129,59), (130,96), (131,60), (132,55), (133,75), (134,77), 312 (135,44), (136,2), (137,7), (138,85), (139,57), (140,74), (141,29), (142,70), 313 (143,59), (144,19), (145,39), (146,26), (147,26), (148,47), (149,80), 314 (150,90), (151,36), (152,58), (153,47), (154,9), (155,72), (156,72), (157,66), 315 (158,33), (159,93), (160,75), (161,64), (162,81), (163,9), (164,23), (165,37), 316 (166,13), (167,12), (168,14), (169,62), (170,91), (171,36), (172,91), 317 (173,33), (174,15), (175,34), (176,36), (177,99), (178,3), (179,95), (180,69), 318 (181,58), (182,52), (183,30), (184,50), (185,84), (186,10), (187,84), 319 (188,33), (189,21), (190,39), (191,44), (192,58), (193,30), (194,38), 320 (195,34), (196,83), (197,27), (198,82), (199,17), (200,7); 321} {} 322 323do_execsql_test 4.1 { 324 SELECT a, sum(b) OVER ( 325 PARTITION BY (b%10) 326 ORDER BY b 327 ) FROM t2 ORDER BY a; 328} {1 0 2 754 3 251 4 754 5 101 6 1247 7 132 8 266 9 6 10 950 11 667 12 1052 13 535 14 128 15 428 16 250 17 336 18 1122 19 368 20 6 21 1247 22 1000 23 92 24 368 25 584 26 320 27 1000 28 24 29 478 30 133 31 1049 32 1090 33 632 34 101 35 54 36 54 37 1049 38 450 39 145 40 354 41 21 42 764 43 754 44 424 45 1122 46 930 47 42 48 930 49 352 50 535 51 42 52 118 53 536 54 6 55 1122 56 86 57 770 58 255 59 50 60 52 61 950 62 75 63 354 64 2 65 536 66 160 67 352 68 536 69 54 70 675 71 276 72 950 73 868 74 678 75 667 76 4 77 1184 78 160 79 120 80 584 81 266 82 133 83 405 84 468 85 6 86 806 87 166 88 500 89 1090 90 552 91 251 92 27 93 424 94 687 95 1215 96 450 97 32 98 360 99 1052 100 868 101 2 102 66 103 754 104 450 105 145 106 5 107 687 108 24 109 302 110 806 111 251 112 42 113 24 114 30 115 128 116 128 117 50 118 1215 119 86 120 687 121 683 122 672 123 178 124 24 125 24 126 299 127 178 128 770 129 535 130 1052 131 270 132 255 133 675 134 632 135 266 136 6 137 21 138 930 139 411 140 754 141 133 142 340 143 535 144 46 145 250 146 132 147 132 148 354 149 500 150 770 151 276 152 360 153 354 154 27 155 552 156 552 157 602 158 266 159 1049 160 675 161 384 162 667 163 27 164 101 165 166 166 32 167 42 168 18 169 336 170 1122 171 276 172 1122 173 266 174 50 175 178 176 276 177 1247 178 6 179 1215 180 604 181 360 182 212 183 120 184 210 185 1090 186 10 187 1090 188 266 189 66 190 250 191 266 192 360 193 120 194 128 195 178 196 770 197 92 198 634 199 38 200 21} 329 330do_execsql_test 4.2 { 331 SELECT a, sum(b) OVER ( 332 PARTITION BY (b%10) 333 ORDER BY b 334 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 335 ) FROM t2 ORDER BY a; 336} {1 0 2 754 3 251 4 754 5 101 6 1247 7 132 8 266 9 6 10 950 11 667 12 1052 13 535 14 128 15 428 16 250 17 336 18 1122 19 368 20 6 21 1247 22 1000 23 92 24 368 25 584 26 320 27 1000 28 24 29 478 30 133 31 1049 32 1090 33 632 34 101 35 54 36 54 37 1049 38 450 39 145 40 354 41 21 42 764 43 754 44 424 45 1122 46 930 47 42 48 930 49 352 50 535 51 42 52 118 53 536 54 6 55 1122 56 86 57 770 58 255 59 50 60 52 61 950 62 75 63 354 64 2 65 536 66 160 67 352 68 536 69 54 70 675 71 276 72 950 73 868 74 678 75 667 76 4 77 1184 78 160 79 120 80 584 81 266 82 133 83 405 84 468 85 6 86 806 87 166 88 500 89 1090 90 552 91 251 92 27 93 424 94 687 95 1215 96 450 97 32 98 360 99 1052 100 868 101 2 102 66 103 754 104 450 105 145 106 5 107 687 108 24 109 302 110 806 111 251 112 42 113 24 114 30 115 128 116 128 117 50 118 1215 119 86 120 687 121 683 122 672 123 178 124 24 125 24 126 299 127 178 128 770 129 535 130 1052 131 270 132 255 133 675 134 632 135 266 136 6 137 21 138 930 139 411 140 754 141 133 142 340 143 535 144 46 145 250 146 132 147 132 148 354 149 500 150 770 151 276 152 360 153 354 154 27 155 552 156 552 157 602 158 266 159 1049 160 675 161 384 162 667 163 27 164 101 165 166 166 32 167 42 168 18 169 336 170 1122 171 276 172 1122 173 266 174 50 175 178 176 276 177 1247 178 6 179 1215 180 604 181 360 182 212 183 120 184 210 185 1090 186 10 187 1090 188 266 189 66 190 250 191 266 192 360 193 120 194 128 195 178 196 770 197 92 198 634 199 38 200 21} 337 338do_execsql_test 4.3 { 339 SELECT b, sum(b) OVER ( 340 ORDER BY b 341 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 342 ) FROM t2 ORDER BY b; 343} {0 0 1 1 1 2 2 4 2 6 2 8 3 11 3 14 4 18 5 23 6 29 7 36 7 43 7 50 8 58 8 66 8 74 9 83 9 92 9 101 10 111 11 122 11 133 12 145 12 157 12 169 13 182 13 195 14 209 15 224 15 239 15 254 16 270 16 286 16 302 17 319 19 338 20 358 21 379 21 400 22 422 22 444 23 467 23 490 23 513 24 537 25 562 26 588 26 614 26 640 27 667 27 694 28 722 29 751 29 780 29 809 30 839 30 869 30 899 31 930 31 961 32 993 33 1026 33 1059 33 1092 33 1125 33 1158 34 1192 34 1226 34 1260 34 1294 35 1329 35 1364 36 1400 36 1436 36 1472 36 1508 37 1545 37 1582 38 1620 38 1658 39 1697 39 1736 39 1775 40 1815 41 1856 41 1897 41 1938 42 1980 43 2023 43 2066 44 2110 44 2154 46 2200 46 2246 47 2293 47 2340 47 2387 47 2434 49 2483 50 2533 51 2584 52 2636 53 2689 54 2743 55 2798 55 2853 56 2909 56 2965 56 3021 57 3078 58 3136 58 3194 58 3252 58 3310 59 3369 59 3428 59 3487 59 3546 60 3606 61 3667 61 3728 62 3790 62 3852 63 3915 64 3979 65 4044 65 4109 65 4174 66 4240 67 4307 68 4375 69 4444 70 4514 72 4586 72 4658 72 4730 73 4803 73 4876 73 4949 74 5023 74 5097 74 5171 74 5245 74 5319 75 5394 75 5469 75 5544 76 5620 77 5697 77 5774 78 5852 78 5930 79 6009 80 6089 80 6169 81 6250 81 6331 81 6412 82 6494 83 6577 84 6661 84 6745 84 6829 84 6913 85 6998 85 7083 85 7168 86 7254 87 7341 87 7428 88 7516 89 7605 89 7694 89 7783 90 7873 90 7963 90 8053 91 8144 91 8235 91 8326 91 8417 91 8508 93 8601 93 8694 93 8787 94 8881 95 8976 95 9071 95 9166 96 9262 96 9358 96 9454 97 9551 97 9648 98 9746 98 9844 99 9943 99 10042 99 10141} 344 345do_execsql_test 4.4 { 346 SELECT b, sum(b) OVER ( 347 ORDER BY b 348 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 349 ) FROM t2 ORDER BY b; 350} {0 0 1 1 1 2 2 4 2 6 2 8 3 11 3 14 4 18 5 23 6 29 7 36 7 43 7 50 8 58 8 66 8 74 9 83 9 92 9 101 10 111 11 122 11 133 12 145 12 157 12 169 13 182 13 195 14 209 15 224 15 239 15 254 16 270 16 286 16 302 17 319 19 338 20 358 21 379 21 400 22 422 22 444 23 467 23 490 23 513 24 537 25 562 26 588 26 614 26 640 27 667 27 694 28 722 29 751 29 780 29 809 30 839 30 869 30 899 31 930 31 961 32 993 33 1026 33 1059 33 1092 33 1125 33 1158 34 1192 34 1226 34 1260 34 1294 35 1329 35 1364 36 1400 36 1436 36 1472 36 1508 37 1545 37 1582 38 1620 38 1658 39 1697 39 1736 39 1775 40 1815 41 1856 41 1897 41 1938 42 1980 43 2023 43 2066 44 2110 44 2154 46 2200 46 2246 47 2293 47 2340 47 2387 47 2434 49 2483 50 2533 51 2584 52 2636 53 2689 54 2743 55 2798 55 2853 56 2909 56 2965 56 3021 57 3078 58 3136 58 3194 58 3252 58 3310 59 3369 59 3428 59 3487 59 3546 60 3606 61 3667 61 3728 62 3790 62 3852 63 3915 64 3979 65 4044 65 4109 65 4174 66 4240 67 4307 68 4375 69 4444 70 4514 72 4586 72 4658 72 4730 73 4803 73 4876 73 4949 74 5023 74 5097 74 5171 74 5245 74 5319 75 5394 75 5469 75 5544 76 5620 77 5697 77 5774 78 5852 78 5930 79 6009 80 6089 80 6169 81 6250 81 6331 81 6412 82 6494 83 6577 84 6661 84 6745 84 6829 84 6913 85 6998 85 7083 85 7168 86 7254 87 7341 87 7428 88 7516 89 7605 89 7694 89 7783 90 7873 90 7963 90 8053 91 8144 91 8235 91 8326 91 8417 91 8508 93 8601 93 8694 93 8787 94 8881 95 8976 95 9071 95 9166 96 9262 96 9358 96 9454 97 9551 97 9648 98 9746 98 9844 99 9943 99 10042 99 10141} 351 352finish_test 353