aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <>2024-09-13 21:47:57 +0000
committerdrh <>2024-09-13 21:47:57 +0000
commit762946b236eacb00f3c545adca5a6aa5beea736f (patch)
tree925199b60db87f962d28926d77d5c770497766a9 /src
parent38b26d82e6009bf58b150311a2038e1bdc3c7065 (diff)
downloadsqlite-762946b236eacb00f3c545adca5a6aa5beea736f.tar.gz
sqlite-762946b236eacb00f3c545adca5a6aa5beea736f.zip
Bug fix in the enhanced sqlite_dbpage for when truncating two or more
ATTACH-ed databases within the same transaction. FossilOrigin-Name: 6aa9c8e79b440c6419e65990d9ceba8f00a6f975455138cf2aa82b113daec825
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 4da81f8ca..42b24f9b8 100644
--- a/src/dbpage.c
+++ b/src/dbpage.c
@@ -360,7 +360,7 @@ static int dbpageUpdate(
iDb = 0;
}else{
const char *zSchema = (const char*)sqlite3_value_text(argv[4]);
- iDb = zSchema ? sqlite3FindDbName(pTab->db, zSchema) : -1;
+ iDb = sqlite3FindDbName(pTab->db, zSchema);
if( iDb<0 ){
zErr = "no such schema";
goto update_fail;
@@ -377,8 +377,11 @@ static int dbpageUpdate(
){
if( sqlite3_value_type(argv[3])==SQLITE_NULL && isInsert ){
if( iDb>=pTab->nTrunc ){
+ testcase( pTab->aTrunc!=0 );
pTab->aTrunc = sqlite3_realloc(pTab->aTrunc, (iDb+1)*sizeof(Pgno));
if( pTab->aTrunc ){
+ int j;
+ for(j=pTab->nTrunc; j<iDb; j++) pTab->aTrunc[j] = 0;
pTab->nTrunc = iDb+1;
}else{
return SQLITE_NOMEM;