aboutsummaryrefslogtreecommitdiff
path: root/src/backup.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2011-10-11 12:58:38 +0000
committerdrh <drh@noemail.net>2011-10-11 12:58:38 +0000
commit29c21c77af012bed32e3c68c71b813f885c4641d (patch)
treed3d62d6714ba3e71397149a98943fab48ecff2b1 /src/backup.c
parent946e610a8497e3868e47ad2c976913ec37fb0df6 (diff)
parent67855877ffa8a1d70ab17a65ead5dd3872e4623a (diff)
downloadsqlite-29c21c77af012bed32e3c68c71b813f885c4641d.tar.gz
sqlite-29c21c77af012bed32e3c68c71b813f885c4641d.zip
Merge all the latest trunk changes into the sessions branch - especially
the SQLITE_ENABLE_STAT3 enhancements. FossilOrigin-Name: 403431cac6b039b0693915c5422f08dc60dae230
Diffstat (limited to 'src/backup.c')
-rw-r--r--src/backup.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/backup.c b/src/backup.c
index 70a782665..411a9b8d6 100644
--- a/src/backup.c
+++ b/src/backup.c
@@ -669,10 +669,18 @@ void sqlite3BackupRestart(sqlite3_backup *pBackup){
*/
int sqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){
int rc;
+ sqlite3_file *pFd; /* File descriptor for database pTo */
sqlite3_backup b;
sqlite3BtreeEnter(pTo);
sqlite3BtreeEnter(pFrom);
+ assert( sqlite3BtreeIsInTrans(pTo) );
+ pFd = sqlite3PagerFile(sqlite3BtreePager(pTo));
+ if( pFd->pMethods ){
+ i64 nByte = sqlite3BtreeGetPageSize(pFrom)*(i64)sqlite3BtreeLastPage(pFrom);
+ sqlite3OsFileControl(pFd, SQLITE_FCNTL_OVERWRITE, &nByte);
+ }
+
/* Set up an sqlite3_backup object. sqlite3_backup.pDestDb must be set
** to 0. This is used by the implementations of sqlite3_backup_step()
** and sqlite3_backup_finish() to detect that they are being called
@@ -698,6 +706,7 @@ int sqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){
pTo->pBt->pageSizeFixed = 0;
}
+ assert( sqlite3BtreeIsInTrans(pTo)==0 );
sqlite3BtreeLeave(pFrom);
sqlite3BtreeLeave(pTo);
return rc;