Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a problem in the xInverse callback for the built-in sum() window function. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
b6563647382634588ebe5c6a3c35c65a |
User & Date: | dan 2018-07-02 17:45:59.790 |
Context
2018-07-03
| ||
20:17 | Test that a race condition can cause a "BEGIN EXCLUSIVE" to return SQLITE_BUSY_SNAPSHOT in wal mode. (check-in: 5a12db75d1 user: dan tags: trunk) | |
2018-07-02
| ||
17:45 | Fix a problem in the xInverse callback for the built-in sum() window function. (check-in: b656364738 user: dan tags: trunk) | |
17:14 | Fix a segfault caused by having identical window functions in the select-list and ORDER BY clause of a SELECT statement. (check-in: 693b4350d7 user: dan tags: trunk) | |
Changes
Changes to src/func.c.
︙ | ︙ | |||
1526 1527 1528 1529 1530 1531 1532 | if( type==SQLITE_INTEGER ){ i64 v = sqlite3_value_int64(argv[0]); p->rSum -= v; if( (p->approx|p->overflow)==0 && sqlite3AddInt64(&p->iSum, -1*v) ){ p->overflow = 1; } }else{ | | | 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 | if( type==SQLITE_INTEGER ){ i64 v = sqlite3_value_int64(argv[0]); p->rSum -= v; if( (p->approx|p->overflow)==0 && sqlite3AddInt64(&p->iSum, -1*v) ){ p->overflow = 1; } }else{ p->rSum -= sqlite3_value_double(argv[0]); p->approx = 1; } } } #else # define sumInverse 0 #endif /* SQLITE_OMIT_WINDOWFUNC */ |
︙ | ︙ |
Changes to test/window6.test.
︙ | ︙ | |||
187 188 189 190 191 192 193 194 195 | SELECT "counter", "value", RANK() OVER w AS "rank" FROM "sample" WINDOW w AS (PARTITION BY "counter" ORDER BY "value" DESC) ORDER BY "counter", RANK() OVER w } { 1 20.0 1 1 10.0 2 2 3.0 1 2 1.0 2 3 100.0 1 } finish_test | > > > > > > > > > > > > > > > > > > | 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 | SELECT "counter", "value", RANK() OVER w AS "rank" FROM "sample" WINDOW w AS (PARTITION BY "counter" ORDER BY "value" DESC) ORDER BY "counter", RANK() OVER w } { 1 20.0 1 1 10.0 2 2 3.0 1 2 1.0 2 3 100.0 1 } do_execsql_test 8.2 { SELECT "counter", "value", SUM("value") OVER (ORDER BY "id" ROWS 2 PRECEDING) FROM "sample" ORDER BY "id" } { 1 10.0 10.0 1 20.0 30.0 2 1.0 31.0 2 3.0 24.0 3 100.0 104.0 } do_execsql_test 8.3 { SELECT SUM("value") OVER (ORDER BY "id" ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) FROM "sample" ORDER BY "id" } { 10.0 30.0 31.0 24.0 104.0 } finish_test |