aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dbpage.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/dbpage.c b/src/dbpage.c
index 42b24f9b8..136c8b0b3 100644
--- a/src/dbpage.c
+++ b/src/dbpage.c
@@ -375,7 +375,9 @@ static int dbpageUpdate(
if( sqlite3_value_type(argv[3])!=SQLITE_BLOB
|| sqlite3_value_bytes(argv[3])!=szPage
){
- if( sqlite3_value_type(argv[3])==SQLITE_NULL && isInsert ){
+ if( sqlite3_value_type(argv[3])==SQLITE_NULL && isInsert && pgno>1 ){
+ /* "INSERT INTO dbpage($PGNO,NULL)" causes page number $PGNO and
+ ** all subsequent pages to be deleted. */
if( iDb>=pTab->nTrunc ){
testcase( pTab->aTrunc!=0 );
pTab->aTrunc = sqlite3_realloc(pTab->aTrunc, (iDb+1)*sizeof(Pgno));
@@ -387,6 +389,7 @@ static int dbpageUpdate(
return SQLITE_NOMEM;
}
}
+ pgno--;
pTab->aTrunc[iDb] = pgno;
}else{
zErr = "bad page value";