Jeffrey Rennie wrote:
Debugging the code:
winWrite returns SQLITE_FULL, which propagates back up the stack to
vdbeaux.c, line 1270, in function sqlite3VdbeHalt(Vdbe *p):
}else if( rc!=SQLITE_OK ){
p->rc = rc;
sqlite3RollbackAll(db);
Which is good, it's putting the SQLITE_FULL return code into p->rc and
rolling everything back. Good.
But then the function returns SQLITE_OK on line 1337, so sqlite_step
returns
SQLITE_DONE.
So indeed, when a COMMIT TRANSACTION fails because there isn't enough
disk
space, sqlite_step returns SQLITE_DONE.
Is there a bug filed for this? Has it been fixed in more recent
releases?
Jeffrey,
This is not the problem. The assignment at 1270 is saving the error
return value into the sqlite3_stmt (or vdeb) structure to record the
failure of this statement. The value returned at 1337 simply tells the
caller that this op-code (Halt) executed correctly. This op-code is only
one step in the execution of the statement.
I'm not saying you haven't found a problem with respect to full disks,
but this code is not the culprit. You will need to keep digging.
HTH
Dennis Cote
-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------