Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Change the async-IO extension to return SQLITE_IOERR_SHORT_READ when appropriate. This prevents a valgrind warning in the test suite. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
d9e3287900ae4aa7722ad0132bb8d6cd |
User & Date: | dan 2010-07-07 11:05:22.000 |
Context
2010-07-07
| ||
11:43 | Run some fts3 tests as part of the "wal" permutation. (check-in: 8657455a11 user: dan tags: trunk) | |
11:05 | Change the async-IO extension to return SQLITE_IOERR_SHORT_READ when appropriate. This prevents a valgrind warning in the test suite. (check-in: d9e3287900 user: dan tags: trunk) | |
09:48 | Fix a problem with writing to databases larger than 2^32 bytes with WAL mode. (check-in: b956ddca75 user: dan tags: trunk) | |
Changes
Changes to ext/async/sqlite3async.c.
︙ | ︙ | |||
663 664 665 666 667 668 669 | sqlite3_file *pFile, void *zOut, int iAmt, sqlite3_int64 iOffset ){ AsyncFileData *p = ((AsyncFile *)pFile)->pData; int rc = SQLITE_OK; | | | 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 | sqlite3_file *pFile, void *zOut, int iAmt, sqlite3_int64 iOffset ){ AsyncFileData *p = ((AsyncFile *)pFile)->pData; int rc = SQLITE_OK; sqlite3_int64 filesize = 0; sqlite3_file *pBase = p->pBaseRead; sqlite3_int64 iAmt64 = (sqlite3_int64)iAmt; /* Grab the write queue mutex for the duration of the call */ async_mutex_enter(ASYNC_MUTEX_QUEUE); /* If an I/O error has previously occurred in this virtual file |
︙ | ︙ | |||
702 703 704 705 706 707 708 709 710 711 712 713 714 715 | for(pWrite=async.pQueueFirst; pWrite; pWrite = pWrite->pNext){ if( pWrite->op==ASYNC_WRITE && ( (pWrite->pFileData==p) || (zName && pWrite->pFileData->zName==zName) )){ sqlite3_int64 nCopy; sqlite3_int64 nByte64 = (sqlite3_int64)pWrite->nByte; /* Set variable iBeginIn to the offset in buffer pWrite->zBuf[] from ** which data should be copied. Set iBeginOut to the offset within ** the output buffer to which data should be copied. If either of ** these offsets is a negative number, set them to 0. */ sqlite3_int64 iBeginOut = (pWrite->iOffset-iOffset); | > | 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 | for(pWrite=async.pQueueFirst; pWrite; pWrite = pWrite->pNext){ if( pWrite->op==ASYNC_WRITE && ( (pWrite->pFileData==p) || (zName && pWrite->pFileData->zName==zName) )){ sqlite3_int64 nCopy; sqlite3_int64 nByte64 = (sqlite3_int64)pWrite->nByte; filesize = MAX(filesize, pWrite->iOffset+nByte64); /* Set variable iBeginIn to the offset in buffer pWrite->zBuf[] from ** which data should be copied. Set iBeginOut to the offset within ** the output buffer to which data should be copied. If either of ** these offsets is a negative number, set them to 0. */ sqlite3_int64 iBeginOut = (pWrite->iOffset-iOffset); |
︙ | ︙ | |||
724 725 726 727 728 729 730 731 732 733 734 735 736 737 | } } } } asyncread_out: async_mutex_leave(ASYNC_MUTEX_QUEUE); return rc; } /* ** Truncate the file to nByte bytes in length. This just adds an entry to ** the write-op list, no IO actually takes place. */ | > > > | 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 | } } } } asyncread_out: async_mutex_leave(ASYNC_MUTEX_QUEUE); if( rc==SQLITE_OK && filesize<(iOffset+iAmt) ){ rc = SQLITE_IOERR_SHORT_READ; } return rc; } /* ** Truncate the file to nByte bytes in length. This just adds an entry to ** the write-op list, no IO actually takes place. */ |
︙ | ︙ |
Changes to test/pager1.test.
︙ | ︙ | |||
343 344 345 346 347 348 349 350 351 352 353 354 355 356 | ROLLBACK TO one; } {} do_execsql_test pager1-3.$tn.5 { SELECT count(*) FROM z; RELEASE one; PRAGMA integrity_check; } {258 ok} db close catch { tv delete } } #------------------------------------------------------------------------- # Hot journal rollback related test cases. | > > > > > | 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 | ROLLBACK TO one; } {} do_execsql_test pager1-3.$tn.5 { SELECT count(*) FROM z; RELEASE one; PRAGMA integrity_check; } {258 ok} do_execsql_test pager1-3.$tn.6 { SAVEPOINT one; RELEASE one; } {} db close catch { tv delete } } #------------------------------------------------------------------------- # Hot journal rollback related test cases. |
︙ | ︙ |