Hi,

I have got a database that works using SQLite 3.7.7 but not with version SQLite 
3.13.0. I get the assertion

Assertion failed: (((Fts3Table *)pVtab)->mxSavepoint < iSavepoint), function 
fts3SavepointMethod, file /.../sqlite/sqlite3.c, line 144649.

I have compiled the SQLite amalgamation with the options SQLITE_DEBUG=1 
SQLITE_MEMDEBUG=1 SQLITE_THREADSAFE=1 SQLITE_ENABLE_RTREE=1 
SQLITE_ENABLE_FTS3=1 SQLITE_ENABLE_FTS3_PARENTHESIS=1. I use this program to 
reproduce the assertion:

#include <iostream>

#include "sqlite3.h"

static void ExecuteStatement(sqlite3* databaseHandle, std::string const& 
sqlStatement)
{
        int           result;
        sqlite3_stmt* statementPtr(NULL);
        
        result = 
sqlite3_prepare_v2(databaseHandle,sqlStatement.c_str(),static_cast<int>(sqlStatement.size()),&statementPtr,NULL);
        if (result == SQLITE_OK)
        {
                result = sqlite3_step(statementPtr);
                if ((result == SQLITE_OK) || (result == SQLITE_DONE))
                        result = sqlite3_finalize(statementPtr);
        } /* if */
        if (result != SQLITE_OK)
                std::cout << sqlite3_errmsg(databaseHandle) << " (" << 
sqlStatement << ')' << std::endl;
}

int main(int argc, const char * argv[])
{
        sqlite3* databaseHandle(NULL);

        if (sqlite3_open_v2(„Test.sldb",&databaseHandle,SQLITE_OPEN_CREATE | 
SQLITE_OPEN_READWRITE,NULL) == SQLITE_OK)
        {
                ExecuteStatement(databaseHandle,"BEGIN TRANSACTION;");
        
                ExecuteStatement(databaseHandle,"DELETE FROM A WHERE 
AnotherID=1;");
                ExecuteStatement(databaseHandle,"DELETE FROM B WHERE ID=1;");
                
                ExecuteStatement(databaseHandle,"COMMIT;");
                sqlite3_close(databaseHandle);
        } /* if */
        else
                std::cout << sqlite3_errmsg(databaseHandle) << std::end;
}


I do not get any error output besides the failed assertion. I have run an 
integrity check on the database and I get the response „ok“.

I have seen that there has been a change in „sqlite3VtabSavepoint“ a while ago. 
Can this change be the source of this error? 

Basically, I have no clue what is going on…

Best regards,
Hartwig
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to