Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Avoid calling sqlite3BtreeKeysize() on a b-tree cursor in SKIPNEXT or SKIPPREV state. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
54e7d3fcb1ab21c03ffef1af93ae029a |
User & Date: | dan 2014-11-17 19:42:48.262 |
References
2014-11-17
| ||
19:44 | Avoid calling sqlite3BtreeKeysize() on a b-tree cursor in SKIPNEXT or SKIPPREV state. Cherrypick of [54e7d3fcb1]. (check-in: 2f2ecb9948 user: dan tags: branch-3.8.7) | |
Context
2014-11-18
| ||
20:16 | Update a couple of test cases to account for the fact that ROLLBACK does not always abort all running SELECT statements. (check-in: abccda769a user: drh tags: trunk) | |
2014-11-17
| ||
19:44 | Avoid calling sqlite3BtreeKeysize() on a b-tree cursor in SKIPNEXT or SKIPPREV state. Cherrypick of [54e7d3fcb1]. (check-in: 2f2ecb9948 user: dan tags: branch-3.8.7) | |
19:42 | Avoid calling sqlite3BtreeKeysize() on a b-tree cursor in SKIPNEXT or SKIPPREV state. (check-in: 54e7d3fcb1 user: dan tags: trunk) | |
2014-11-14
| ||
15:28 | Do not automatically remove the DISTINCT keyword from "a IN (SELECT DISTINCT ...)" expressions. Fix for [db87229497]. (check-in: 55e453aadb user: dan tags: trunk) | |
Changes
Changes to src/vdbe.c.
︙ | ︙ | |||
4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 | rc = pModule->xRowid(pC->pVtabCursor, &v); sqlite3VtabImportErrmsg(p, pVtab); #endif /* SQLITE_OMIT_VIRTUALTABLE */ }else{ assert( pC->pCursor!=0 ); rc = sqlite3VdbeCursorRestore(pC); if( rc ) goto abort_due_to_error; rc = sqlite3BtreeKeySize(pC->pCursor, &v); assert( rc==SQLITE_OK ); /* Always so because of CursorRestore() above */ } pOut->u.i = v; break; } | > > > > | 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 | rc = pModule->xRowid(pC->pVtabCursor, &v); sqlite3VtabImportErrmsg(p, pVtab); #endif /* SQLITE_OMIT_VIRTUALTABLE */ }else{ assert( pC->pCursor!=0 ); rc = sqlite3VdbeCursorRestore(pC); if( rc ) goto abort_due_to_error; if( pC->nullRow ){ pOut->flags = MEM_Null; break; } rc = sqlite3BtreeKeySize(pC->pCursor, &v); assert( rc==SQLITE_OK ); /* Always so because of CursorRestore() above */ } pOut->u.i = v; break; } |
︙ | ︙ |
Changes to test/misc8.test.
︙ | ︙ | |||
53 54 55 56 57 58 59 60 61 | BEGIN; CREATE TABLE t2(x); SELECT a, coalesce(b, eval('ROLLBACK; SELECT ''bam''')), c FROM t1 ORDER BY rowid; } {1 {abort due to ROLLBACK}} finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | BEGIN; CREATE TABLE t2(x); SELECT a, coalesce(b, eval('ROLLBACK; SELECT ''bam''')), c FROM t1 ORDER BY rowid; } {1 {abort due to ROLLBACK}} reset_db proc dbeval {sql} { db eval $sql } db func eval dbeval do_execsql_test misc8-2.1 { CREATE TABLE t1(a INTEGER PRIMARY KEY, b INTEGER) WITHOUT ROWID; CREATE TABLE t2(c INTEGER PRIMARY KEY, d INTEGER, x BLOB); INSERT INTO t1 VALUES(0,0); INSERT INTO t1 VALUES(10,10); INSERT INTO t2 VALUES(1,1,zeroblob(200)); INSERT INTO t2 VALUES(2,2,zeroblob(200)); INSERT INTO t2 VALUES(3,3,zeroblob(200)); INSERT INTO t2 VALUES(4,4,zeroblob(200)); INSERT INTO t2 VALUES(5,5,zeroblob(200)); INSERT INTO t2 VALUES(6,6,zeroblob(200)); INSERT INTO t2 VALUES(7,7,zeroblob(200)); INSERT INTO t2 VALUES(8,8,zeroblob(200)); INSERT INTO t2 VALUES(9,9,zeroblob(200)); INSERT INTO t2 VALUES(10,10,zeroblob(200)); SELECT a, c, eval( printf('DELETE FROM t2 WHERE c=%d AND %d>5', a+c, a+c) ) FROM t1, t2; } { 0 1 {} 10 1 {} 0 2 {} 10 2 {} 0 3 {} 10 3 {} 0 4 {} 10 4 {} 0 5 {} 10 5 {} 0 6 {} 10 {} {} 0 7 {} 10 {} {} 0 8 {} 10 {} {} 0 9 {} 10 {} {} 0 10 {} 10 {} {} } finish_test |