Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Failure to extend a temp file for use with mmap() in vdbesort.c is benign. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | orderby-planning |
Files: | files | file ages | folders |
SHA1: |
d4d396387d373bd1e82eda2c7c2e7ca3 |
User & Date: | drh 2014-05-02 16:22:55.791 |
Context
2014-05-02
| ||
17:33 | Simplify assert() statements used to verify correct operation of record comparison routines. (check-in: 3300d62dcb user: drh tags: orderby-planning) | |
16:22 | Failure to extend a temp file for use with mmap() in vdbesort.c is benign. (check-in: d4d396387d user: drh tags: orderby-planning) | |
15:25 | Fix a faulty assert() statement. (check-in: 9196ce4073 user: drh tags: orderby-planning) | |
Changes
Changes to src/vdbesort.c.
︙ | ︙ | |||
853 854 855 856 857 858 859 | ** is guaranteed to be nByte bytes or smaller in size. This function ** attempts to extend the file to nByte bytes in size and to ensure that ** the VFS has memory mapped it. ** ** Whether or not the file does end up memory mapped of course depends on ** the specific VFS implementation. */ | | < | | 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 | ** is guaranteed to be nByte bytes or smaller in size. This function ** attempts to extend the file to nByte bytes in size and to ensure that ** the VFS has memory mapped it. ** ** Whether or not the file does end up memory mapped of course depends on ** the specific VFS implementation. */ static void vdbeSorterExtendFile(sqlite3_file *pFile, i64 nByte){ int rc = sqlite3OsTruncate(pFile, nByte); if( rc==SQLITE_OK ){ void *p = 0; sqlite3OsFetch(pFile, 0, nByte, &p); sqlite3OsUnfetch(pFile, 0, p); } } #else # define vdbeSorterExtendFile(x,y) #endif /* ** Write the current contents of the in-memory linked-list to a PMA. Return ** SQLITE_OK if successful, or an SQLite error code otherwise. ** ** The format of a PMA is: |
︙ | ︙ | |||
903 904 905 906 907 908 909 | assert( rc!=SQLITE_OK || pSorter->pTemp1 ); assert( pSorter->iWriteOff==0 ); assert( pSorter->nPMA==0 ); } /* Try to get the file to memory map */ if( rc==SQLITE_OK ){ | | | | 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 | assert( rc!=SQLITE_OK || pSorter->pTemp1 ); assert( pSorter->iWriteOff==0 ); assert( pSorter->nPMA==0 ); } /* Try to get the file to memory map */ if( rc==SQLITE_OK ){ vdbeSorterExtendFile( pSorter->pTemp1, pSorter->iWriteOff + pSorter->nInMemory + 9 ); } if( rc==SQLITE_OK ){ SorterRecord *p; SorterRecord *pNext = 0; |
︙ | ︙ | |||
1128 1129 1130 1131 1132 1133 1134 | } /* Open the second temp file, if it is not already open. */ if( pTemp2==0 ){ assert( iWrite2==0 ); rc = vdbeSorterOpenTempFile(db, &pTemp2); if( rc==SQLITE_OK ){ | | | 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 | } /* Open the second temp file, if it is not already open. */ if( pTemp2==0 ){ assert( iWrite2==0 ); rc = vdbeSorterOpenTempFile(db, &pTemp2); if( rc==SQLITE_OK ){ vdbeSorterExtendFile(pTemp2, pSorter->iWriteOff); } } if( rc==SQLITE_OK ){ int bEof = 0; fileWriterInit(db, pTemp2, &writer, iWrite2); fileWriterWriteVarint(&writer, nWrite); |
︙ | ︙ |