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

Fix for ticket #62: Do not report an SQLITE_READONLY error until the application

actually tries to write data into a readonly file.  It is OK to start a
transaction on a read-only file, and doing so will get you a read lock.  This
change allows TEMP tables to be read/write even though the main database is
readonly. (CVS 607)

FossilOrigin-Name: 9ef795d1d756a404d2123ebc19df1985b19c9888
This commit is contained in:
drh
2002-06-06 23:16:05 +00:00
parent 34e33bb835
commit 5df72a5ad6
5 changed files with 97 additions and 38 deletions

View File

@@ -30,7 +30,7 @@
** But other routines are also provided to help in building up
** a program instruction by instruction.
**
** $Id: vdbe.c,v 1.152 2002/06/01 21:41:10 drh Exp $
** $Id: vdbe.c,v 1.153 2002/06/06 23:16:06 drh Exp $
*/
#include "sqliteInt.h"
#include <ctype.h>
@@ -4864,7 +4864,6 @@ cleanup:
case OE_Rollback: {
sqliteBtreeRollback(pBt);
if( db->pBeTemp ) sqliteBtreeRollback(db->pBeTemp);
sqliteRollbackInternalChanges(db);
db->flags &= ~SQLITE_InTrans;
db->onError = OE_Default;
break;
@@ -4873,13 +4872,13 @@ cleanup:
if( undoTransOnError ){
sqliteBtreeCommit(pBt);
if( db->pBeTemp ) sqliteBtreeCommit(db->pBeTemp);
sqliteCommitInternalChanges(db);
db->flags &= ~SQLITE_InTrans;
db->onError = OE_Default;
}
break;
}
}
sqliteRollbackInternalChanges(db);
}
sqliteBtreeCommitCkpt(pBt);
if( db->pBeTemp ) sqliteBtreeCommitCkpt(db->pBeTemp);