mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Fix a faulty assert() in fts5.
FossilOrigin-Name: 569018170b928cadfa0745db631981084e595d90a8c3d1e236c42adae161018f
This commit is contained in:
@ -275,21 +275,21 @@ static void fts5CheckTransactionState(Fts5FullTable *p, int op, int iSavepoint){
|
||||
break;
|
||||
|
||||
case FTS5_SAVEPOINT:
|
||||
assert( p->ts.eState==1 );
|
||||
assert( p->ts.eState>=1 );
|
||||
assert( iSavepoint>=0 );
|
||||
assert( iSavepoint>=p->ts.iSavepoint );
|
||||
p->ts.iSavepoint = iSavepoint;
|
||||
break;
|
||||
|
||||
case FTS5_RELEASE:
|
||||
assert( p->ts.eState==1 );
|
||||
assert( p->ts.eState>=1 );
|
||||
assert( iSavepoint>=0 );
|
||||
assert( iSavepoint<=p->ts.iSavepoint );
|
||||
p->ts.iSavepoint = iSavepoint-1;
|
||||
break;
|
||||
|
||||
case FTS5_ROLLBACKTO:
|
||||
assert( p->ts.eState==1 );
|
||||
assert( p->ts.eState>=1 );
|
||||
assert( iSavepoint>=-1 );
|
||||
/* The following assert() can fail if another vtab strikes an error
|
||||
** within an xSavepoint() call then SQLite calls xRollbackTo() - without
|
||||
|
@ -377,5 +377,30 @@ do_catchsql_test 14.4 {
|
||||
ROLLBACK;
|
||||
} {0 {}}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
reset_db
|
||||
sqlite3 db2 test.db
|
||||
|
||||
do_execsql_test 15.0 {
|
||||
CREATE TABLE t1(a, b);
|
||||
BEGIN;
|
||||
SELECT * FROM t1;
|
||||
}
|
||||
|
||||
do_execsql_test -db db2 15.1 {
|
||||
BEGIN;
|
||||
CREATE VIRTUAL TABLE x1 USING fts5(y);
|
||||
}
|
||||
do_test 15.2 {
|
||||
list [catch { db2 eval COMMIT } msg] $msg
|
||||
} {1 {database is locked}}
|
||||
do_execsql_test -db db2 15.3 {
|
||||
SAVEPOINT one;
|
||||
} {}
|
||||
do_execsql_test 15.4 END
|
||||
do_test 15.4 {
|
||||
list [catch { db2 eval COMMIT } msg] $msg
|
||||
} {0 {}}
|
||||
|
||||
finish_test
|
||||
|
||||
|
Reference in New Issue
Block a user