Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | An improved fix for the dbsqlfuzz-discovered ALWAYS() failure following OOM in sqlite3ExprCollSeq(). This time with a test case (engineered by Dan). |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
907f7965b335d8d5441f2e386bb190d1 |
User & Date: | drh 2019-10-09 15:37:58.973 |
Context
2019-10-09
| ||
18:36 | Do not allow users to effectively disable fts5 crisismerge operations by setting the crisismerge threshold to higher than the maximum allowable segment b-trees on a single level. Fix for [d392017c]. (check-in: 86e4972092 user: dan tags: trunk) | |
17:38 | Merge recent fixes and enhancements from trunk. (check-in: 553258c2ed user: drh tags: 2-size-lookaside) | |
15:37 | An improved fix for the dbsqlfuzz-discovered ALWAYS() failure following OOM in sqlite3ExprCollSeq(). This time with a test case (engineered by Dan). (check-in: 907f7965b3 user: drh tags: trunk) | |
15:26 | Disallow fts5 page sizes greater than 65536 bytes - as there are 16-bit offsets used in the page header. Fix for [81a7f7b9]. (check-in: 75775c5ab4 user: dan tags: trunk) | |
15:00 | Change sqlite3SelectDup() to always return NULL if an OOM has occurred. (check-in: 01ba4641ab user: drh tags: trunk) | |
Changes
Changes to src/alter.c.
︙ | |||
1412 1413 1414 1415 1416 1417 1418 | 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 | - + + | /* ** Walker select callback used by "RENAME TABLE". */ static int renameTableSelectCb(Walker *pWalker, Select *pSelect){ int i; RenameCtx *p = pWalker->u.pRename; SrcList *pSrc = pSelect->pSrc; |
︙ |
Changes to src/build.c.
︙ | |||
4139 4140 4141 4142 4143 4144 4145 | 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 | + - + | /* ** Assign VdbeCursor index numbers to all tables in a SrcList */ void sqlite3SrcListAssignCursors(Parse *pParse, SrcList *pList){ int i; struct SrcList_item *pItem; assert(pList || pParse->db->mallocFailed ); |
︙ |
Changes to src/expr.c.
︙ | |||
182 183 184 185 186 187 188 | 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 | + + - + + | }else{ Expr *pNext = p->pRight; /* The Expr.x union is never used at the same time as Expr.pRight */ assert( p->x.pList==0 || p->pRight==0 ); /* p->flags holds EP_Collate and p->pLeft->flags does not. And ** p->x.pSelect cannot. So if p->x.pLeft exists, it must hold at ** least one EP_Collate. Thus the following two ALWAYS. */ if( p->x.pList!=0 && !db->mallocFailed |
︙ | |||
1526 1527 1528 1529 1530 1531 1532 | 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 | - - - - | #endif pNew->selId = p->selId; *pp = pNew; pp = &pNew->pPrior; pNext = pNew; } |
︙ |
Changes to test/collate1.test.
︙ | |||
412 413 414 415 416 417 418 419 420 | 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 | + + + + + + + + + + + + + + + + + + + | do_execsql_test 8.2 { DROP TABLE IF EXISTS t0; CREATE TABLE t0(c0 COLLATE RTRIM, c1 BLOB UNIQUE, PRIMARY KEY (c0, c1)) WITHOUT ROWID; INSERT INTO t0 VALUES (123, 3), (' ', 1), (' ', 2), ('', 4); SELECT * FROM t0 WHERE c1 = 1; } {{ } 1} # 2019-10-09 # ALWAYS() macro fails following OOM # Problem detected by dbsqlfuzz. # do_execsql_test 9.0 { CREATE TABLE t1(a, b); CREATE TABLE t2(c, d); } do_faultsim_test 9.1 -faults oom* -body { execsql { SELECT * FROM ( SELECT b COLLATE nocase IN (SELECT c FROM t2) FROM t1 ); } } -test { faultsim_test_result {0 {}} } finish_test |