SQLite

Check-in [a5e4e0caad]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Change the page size of the destination database in a backup, if it is changeable, prior to starting the backup.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: a5e4e0caad788318bc973e2550488a3b83128b8b
User & Date: drh 2011-01-11 17:38:03.635
Context
2011-01-11
17:40
Merge accidentally created fork. (check-in: b7d080b8e8 user: dan tags: trunk)
17:38
Change the page size of the destination database in a backup, if it is changeable, prior to starting the backup. (check-in: a5e4e0caad user: drh tags: trunk)
16:09
If a rollback is attempted in journal_mode=off mode, force SQLite to discard the contents of the pager cache before processing any subsequent queries. (check-in: ece7efce27 user: dan tags: trunk)
Changes
Side-by-Side Diff Ignore Whitespace Patch
install-sh became executable.
Changes to src/backup.c.
112
113
114
115
116
117
118










119
120
121
122
123
124
125
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135







+
+
+
+
+
+
+
+
+
+







  if( i<0 ){
    sqlite3Error(pErrorDb, SQLITE_ERROR, "unknown database %s", zDb);
    return 0;
  }

  return pDb->aDb[i].pBt;
}

/*
** Attempt to set the page size of the destination to match the page size
** of the source.
*/
static int setDestPgsz(sqlite3_backup *p){
  int rc;
  rc = sqlite3BtreeSetPageSize(p->pDest,sqlite3BtreeGetPageSize(p->pSrc),-1,0);
  return rc;
}

/*
** Create an sqlite3_backup process to copy the contents of zSrcDb from
** connection handle pSrcDb to zDestDb in pDestDb. If successful, return
** a pointer to the new sqlite3_backup object.
**
** If an error occurs, NULL is returned and an error code and error message
166
167
168
169
170
171
172
173
174
175
176





177
178
179
180
181
182
183
176
177
178
179
180
181
182




183
184
185
186
187
188
189
190
191
192
193
194







-
-
-
-
+
+
+
+
+







    p->pSrc = findBtree(pDestDb, pSrcDb, zSrcDb);
    p->pDest = findBtree(pDestDb, pDestDb, zDestDb);
    p->pDestDb = pDestDb;
    p->pSrcDb = pSrcDb;
    p->iNext = 1;
    p->isAttached = 0;

    if( 0==p->pSrc || 0==p->pDest ){
      /* One (or both) of the named databases did not exist. An error has
      ** already been written into the pDestDb handle. All that is left
      ** to do here is free the sqlite3_backup structure.
    if( 0==p->pSrc || 0==p->pDest || setDestPgsz(p)==SQLITE_NOMEM ){
      /* One (or both) of the named databases did not exist or an OOM
      ** error was hit.  The error has already been written into the
      ** pDestDb handle.  All that is left to do here is free the
      ** sqlite3_backup structure.
      */
      sqlite3_free(p);
      p = 0;
    }
  }
  if( p ){
    p->pSrc->nBackup++;
test/progress.test became a regular file.
tool/mkopts.tcl became a regular file.