1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-07 02:42:48 +03:00

When moving a page to make way for the root page of a new table or index in an auto-vacuum database, save the positions of any cursors that may be holding xFetch references to the page being moved.

FossilOrigin-Name: 9d9b1da54a555e8fb6037d63d1952458c12956d2
This commit is contained in:
dan
2013-04-03 11:38:36 +00:00
parent 227a1c482c
commit f7679ad19e
4 changed files with 56 additions and 9 deletions

View File

@@ -7269,6 +7269,14 @@ static int btreeCreateTable(Btree *p, int *piTable, int createTabFlags){
u8 eType = 0;
Pgno iPtrPage = 0;
/* Save the positions of any open cursors. This is required in
** case they are holding a reference to an xFetch reference
** corresponding to page pgnoRoot. */
rc = saveAllCursors(pBt, 0, 0);
if( rc!=SQLITE_OK ){
return rc;
}
releasePage(pPageMove);
/* Move the page currently at pgnoRoot to pgnoMove. */