Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Avoid attempting to call the xFetch() method of an sqlite3_io_methods object with a version number less than 3. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
dedaa6fb3d2e6e697d4a48649af5f42d |
User & Date: | dan 2014-09-15 16:50:34.423 |
Context
2014-09-15
| ||
16:53 | Fix tool/showwal.c so that it handles WAL files that contain 64KiB pages. (check-in: 4060efb646 user: dan tags: trunk) | |
16:50 | Avoid attempting to call the xFetch() method of an sqlite3_io_methods object with a version number less than 3. (check-in: dedaa6fb3d user: dan tags: trunk) | |
14:59 | Remove the EXPENSIVE_ASSERTS in pcache.c having to do with the pSynced field of the Pcache object, as they are incorrect, as revealed by recent pcache enhancements. (check-in: 69a6456077 user: drh tags: trunk) | |
Changes
Changes to src/vdbesort.c.
︙ | ︙ | |||
598 599 600 601 602 603 604 | ** ** Or, if an error occurs, return an SQLite error code. The final value of ** *pp is undefined in this case. */ static int vdbeSorterMapFile(SortSubtask *pTask, SorterFile *pFile, u8 **pp){ int rc = SQLITE_OK; if( pFile->iEof<=(i64)(pTask->pSorter->db->nMaxSorterMmap) ){ | > > | | > | 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 | ** ** Or, if an error occurs, return an SQLite error code. The final value of ** *pp is undefined in this case. */ static int vdbeSorterMapFile(SortSubtask *pTask, SorterFile *pFile, u8 **pp){ int rc = SQLITE_OK; if( pFile->iEof<=(i64)(pTask->pSorter->db->nMaxSorterMmap) ){ sqlite3_file *pFd = pFile->pFd; if( pFd->pMethods->iVersion>=3 ){ rc = sqlite3OsFetch(pFd, 0, (int)pFile->iEof, (void**)pp); testcase( rc!=SQLITE_OK ); } } return rc; } /* ** Attach PmaReader pReadr to file pFile (if it is not already attached to ** that file) and seek it to offset iOff within the file. Return SQLITE_OK |
︙ | ︙ | |||
1119 1120 1121 1122 1123 1124 1125 | ** ** Whether or not the file does end up memory mapped of course depends on ** the specific VFS implementation. */ static void vdbeSorterExtendFile(sqlite3 *db, sqlite3_file *pFd, i64 nByte){ if( nByte<=(i64)(db->nMaxSorterMmap) ){ int rc = sqlite3OsTruncate(pFd, nByte); | | | 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 | ** ** Whether or not the file does end up memory mapped of course depends on ** the specific VFS implementation. */ static void vdbeSorterExtendFile(sqlite3 *db, sqlite3_file *pFd, i64 nByte){ if( nByte<=(i64)(db->nMaxSorterMmap) ){ int rc = sqlite3OsTruncate(pFd, nByte); if( rc==SQLITE_OK && pFd->pMethods->iVersion>=3 ){ void *p = 0; sqlite3OsFetch(pFd, 0, (int)nByte, &p); sqlite3OsUnfetch(pFd, 0, p); } } } #else |
︙ | ︙ |
Added test/sort5.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | # 2014 September 15. # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # This file implements regression tests for SQLite library. # set testdir [file dirname $argv0] source $testdir/tester.tcl set testprefix sort5 #------------------------------------------------------------------------- # Verify that sorting works with a version 1 sqlite3_io_methods structure. # testvfs tvfs -iversion 1 -default true reset_db do_execsql_test 1.0 { PRAGMA mmap_size = 10000000; PRAGMA cache_size = 10; CREATE TABLE t1(a, b); } {0} do_test 1.1 { execsql BEGIN for {set i 0} {$i < 2000} {incr i} { execsql { INSERT INTO t1 VALUES($i, randomblob(2000)) } } execsql COMMIT } {} do_execsql_test 1.2 { CREATE INDEX i1 ON t1(b); } db close tvfs delete finish_test |