Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix the backup API so that a backup from an empty database to a non-empty database works. Ticket [0bf974bdf9]. The only changes are in assert() statements. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ddb71cd9ed395804a13dc136bb7688a7 |
User & Date: | drh 2009-11-06 04:13:18.000 |
References
2009-11-06
| ||
04:15 | • Fixed ticket [0bf974bdf9]: backup api asserts with zero length source file plus 5 other changes (artifact: daf649bb31 user: drh) | |
Context
2009-11-06
| ||
17:20 | Improved shell "dot" command argument handling. Ticket [f12a9eeedc]. (check-in: 9fb6991933 user: shaneh tags: trunk) | |
04:13 | Fix the backup API so that a backup from an empty database to a non-empty database works. Ticket [0bf974bdf9]. The only changes are in assert() statements. (check-in: ddb71cd9ed user: drh tags: trunk) | |
03:33 | Merged accidental fork. (check-in: d410cd4e42 user: shaneh tags: trunk) | |
Changes
Changes to src/os_unix.c.
︙ | ︙ | |||
3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 | assert( id ); SimulateIOError( return SQLITE_IOERR_TRUNCATE ); rc = ftruncate(((unixFile*)id)->h, (off_t)nByte); if( rc ){ ((unixFile*)id)->lastErrno = errno; return SQLITE_IOERR_TRUNCATE; }else{ return SQLITE_OK; } } /* ** Determine the current size of a file in bytes */ | > > > > > > > > > > > > > | 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 | assert( id ); SimulateIOError( return SQLITE_IOERR_TRUNCATE ); rc = ftruncate(((unixFile*)id)->h, (off_t)nByte); if( rc ){ ((unixFile*)id)->lastErrno = errno; return SQLITE_IOERR_TRUNCATE; }else{ #ifndef NDEBUG /* If we are doing a normal write to a database file (as opposed to ** doing a hot-journal rollback or a write to some file other than a ** normal database file) and we truncate the file to zero length, ** that effectively updates the change counter. This might happen ** when restoring a database using the backup API from a zero-length ** source. */ if( ((unixFile*)id)->inNormalWrite && nByte==0 ){ ((unixFile*)id)->transCntrChng = 1; } #endif return SQLITE_OK; } } /* ** Determine the current size of a file in bytes */ |
︙ | ︙ |
Changes to src/pager.c.
︙ | ︙ | |||
4442 4443 4444 4445 4446 4447 4448 | assert( isDirectMode==0 ); UNUSED_PARAMETER(isDirectMode); #else # define DIRECT_MODE isDirectMode #endif assert( pPager->state>=PAGER_RESERVED ); | | | 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 | assert( isDirectMode==0 ); UNUSED_PARAMETER(isDirectMode); #else # define DIRECT_MODE isDirectMode #endif assert( pPager->state>=PAGER_RESERVED ); if( !pPager->changeCountDone && pPager->dbSize>0 ){ PgHdr *pPgHdr; /* Reference to page 1 */ u32 change_counter; /* Initial value of change-counter field */ assert( !pPager->tempFile && isOpen(pPager->fd) ); /* Open page 1 of the file for writing. */ rc = sqlite3PagerGet(pPager, 1, &pPgHdr); |
︙ | ︙ |