Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a segfault that could occur following an OOM while processing a SELECT statement for which one or more of the expressions in the window frame declaration are themselves sub-selects that use window functions. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
75aec4fc886c04fe098828cc03bc72c1 |
User & Date: | dan 2019-08-20 14:43:01.572 |
Context
2019-08-20
| ||
19:11 | Fix a problem with fts5 "ORDER BY rank" queries when the fts5 table name requires quoting. (check-in: 00e9a8f273 user: dan tags: trunk) | |
17:14 | Bring the hard-heap-limit branch up-to-date with trunk. (check-in: 9b14eb7754 user: drh tags: hard-heap-limit) | |
14:43 | Fix a segfault that could occur following an OOM while processing a SELECT statement for which one or more of the expressions in the window frame declaration are themselves sub-selects that use window functions. (check-in: 75aec4fc88 user: dan tags: trunk) | |
13:49 | Add the new sqlite3_drop_modules() interface to the loadable extension mechanism. (check-in: 658bd51623 user: drh tags: trunk) | |
Changes
Changes to src/expr.c.
︙ | ︙ | |||
1507 1508 1509 1510 1511 1512 1513 | pNew->addrOpenEphm[0] = -1; pNew->addrOpenEphm[1] = -1; pNew->nSelectRow = p->nSelectRow; pNew->pWith = withDup(db, p->pWith); #ifndef SQLITE_OMIT_WINDOWFUNC pNew->pWin = 0; pNew->pWinDefn = sqlite3WindowListDup(db, p->pWinDefn); | | | 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 | pNew->addrOpenEphm[0] = -1; pNew->addrOpenEphm[1] = -1; pNew->nSelectRow = p->nSelectRow; pNew->pWith = withDup(db, p->pWith); #ifndef SQLITE_OMIT_WINDOWFUNC pNew->pWin = 0; pNew->pWinDefn = sqlite3WindowListDup(db, p->pWinDefn); if( p->pWin && db->mallocFailed==0 ) gatherSelectWindows(pNew); #endif pNew->selId = p->selId; *pp = pNew; pp = &pNew->pPrior; pNext = pNew; } |
︙ | ︙ |
Changes to test/windowfault.test.
︙ | ︙ | |||
219 220 221 222 223 224 225 226 227 | } } -test { faultsim_test_result [list 0 $::L] } catch {db close} tvfs delete finish_test | > > > > > > > > > > > > > > > > > > > > > > | 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 | } } -test { faultsim_test_result [list 0 $::L] } catch {db close} tvfs delete reset_db do_execsql_test 10.0 { CREATE TABLE t1(a, b, c, d); CREATE TABLE t2(a, b, c, d); } do_faultsim_test 1 -faults oom* -prep { } -body { execsql { SELECT row_number() OVER win FROM t1 WINDOW win AS ( ORDER BY ( SELECT percent_rank() OVER win2 FROM t2 WINDOW win2 AS (ORDER BY a) ) ) } } -test { faultsim_test_result {0 {}} } finish_test |