Index: src/alter.c ================================================================== --- src/alter.c +++ src/alter.c @@ -1207,12 +1207,16 @@ UNUSED_PARAMETER(NotUsed); if( zSql==0 ) return; if( zTable==0 ) return; if( zNew==0 ) return; if( iCol<0 ) return; + sqlite3BtreeEnterAll(db); pTab = sqlite3FindTable(db, zTable, zDb); - if( pTab==0 || iCol>=pTab->nCol ) return; + if( pTab==0 || iCol>=pTab->nCol ){ + sqlite3BtreeLeaveAll(db); + return; + } zOld = pTab->aCol[iCol].zName; memset(&sCtx, 0, sizeof(sCtx)); sCtx.iCol = ((iCol==pTab->iPKey) ? -1 : iCol); /* Parse the SQL statement passed as the first argument. If no error @@ -1474,10 +1478,11 @@ renameTokenFree(db, sParse.pRename); renameTokenFree(db, sCtx.pList); sqlite3DbFree(db, sParse.zErrMsg); sqlite3ParserReset(&sParse); sqlite3_free(zQuot); + sqlite3BtreeLeaveAll(db); } /* ** Register built-in functions used to help implement ALTER TABLE */