HI,

it seems to be that I am not allowed to add zip files to these e-mails. 

This is what I am doing to create the database:

                ExecuteStatement(databaseHandle,"CREATE TABLE A(ID INTEGER 
PRIMARY KEY,AnotherID INTEGER, Notes TEXT);");
                ExecuteStatement(databaseHandle,"CREATE INDEX A_1 ON A 
(AnotherID);");
                ExecuteStatement(databaseHandle,"CREATE VIRTUAL TABLE AFTS 
USING FTS3 (Notes);");
                ExecuteStatement(databaseHandle,"CREATE TRIGGER A_DeleteTrigger 
AFTER DELETE ON A FOR EACH ROW BEGIN DELETE FROM AFTS WHERE rowid=OLD.ID; 
END;");
                ExecuteStatement(databaseHandle,"CREATE TRIGGER A_InsertTrigger 
AFTER INSERT ON A FOR EACH ROW BEGIN INSERT INTO AFTS (rowid,Notes) VALUES 
(NEW.ID,NEW.Notes); END;");
                ExecuteStatement(databaseHandle,"INSERT INTO A 
(AnotherID,Notes) VALUES(1,'Record A1');");
                
                ExecuteStatement(databaseHandle,"CREATE TABLE B(ID INTEGER 
PRIMARY KEY,Notes TEXT);");
                ExecuteStatement(databaseHandle,"CREATE VIRTUAL TABLE BFTS 
USING FTS3 (Notes);");
                ExecuteStatement(databaseHandle,"CREATE TRIGGER B_DeleteTrigger 
AFTER DELETE ON B FOR EACH ROW BEGIN DELETE FROM BFTS WHERE rowid=OLD.ID; 
END;");
                ExecuteStatement(databaseHandle,"CREATE TRIGGER B_InsertTrigger 
AFTER INSERT ON B FOR EACH ROW BEGIN INSERT INTO BFTS (rowid,Notes) VALUES 
(NEW.ID,NEW.Notes); END;");
                ExecuteStatement(databaseHandle,"INSERT INTO B (Notes) 
VALUES('Record B1');");

To reproduce the error I run the following commands firstly with „#if 1“ and 
the second time with „#if 0":

        if (sqlite3_open_v2("Test.sldb",&databaseHandle,SQLITE_OPEN_CREATE | 
SQLITE_OPEN_READWRITE,NULL) == SQLITE_OK)
        {
                ExecuteStatement(databaseHandle,"BEGIN TRANSACTION;");

#if 0
                ExecuteStatement(databaseHandle,"CREATE TABLE A(ID INTEGER 
PRIMARY KEY,AnotherID INTEGER, Notes TEXT);");
                ExecuteStatement(databaseHandle,"CREATE INDEX A_1 ON A 
(AnotherID);");
                ExecuteStatement(databaseHandle,"CREATE VIRTUAL TABLE AFTS 
USING FTS3 (Notes);");
                ExecuteStatement(databaseHandle,"CREATE TRIGGER A_DeleteTrigger 
AFTER DELETE ON A FOR EACH ROW BEGIN DELETE FROM AFTS WHERE rowid=OLD.ID; 
END;");
                ExecuteStatement(databaseHandle,"CREATE TRIGGER A_InsertTrigger 
AFTER INSERT ON A FOR EACH ROW BEGIN INSERT INTO AFTS (rowid,Notes) VALUES 
(NEW.ID,NEW.Notes); END;");
                ExecuteStatement(databaseHandle,"INSERT INTO A 
(AnotherID,Notes) VALUES(1,'Record A1');");
                
                ExecuteStatement(databaseHandle,"CREATE TABLE B(ID INTEGER 
PRIMARY KEY,Notes TEXT);");
                ExecuteStatement(databaseHandle,"CREATE VIRTUAL TABLE BFTS 
USING FTS3 (Notes);");
                ExecuteStatement(databaseHandle,"CREATE TRIGGER B_DeleteTrigger 
AFTER DELETE ON B FOR EACH ROW BEGIN DELETE FROM BFTS WHERE rowid=OLD.ID; 
END;");
                ExecuteStatement(databaseHandle,"CREATE TRIGGER B_InsertTrigger 
AFTER INSERT ON B FOR EACH ROW BEGIN INSERT INTO BFTS (rowid,Notes) VALUES 
(NEW.ID,NEW.Notes); END;");
                ExecuteStatement(databaseHandle,"INSERT INTO B (Notes) 
VALUES('Record B1');");
#endif
                
                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 could not reproduce the error from the shell.

Regards,
Hartwig

> Am 2016-08-02 um 07:56 schrieb skywind mailing lists 
> <mailingli...@skywind.eu>:
> 
> Hi,
> 
> I have added a database but it seems to be that the zip file got lost.
> 
> Regards,
> Hartwig
> 
> 
>> Am 2016-08-02 um 01:13 schrieb Richard Hipp <d...@sqlite.org>:
>> 
>> Do you have a database schema to go with your sample program?
>> 
>> On 8/1/16, skywind mailing lists <mailingli...@skywind.eu 
>> <mailto:mailingli...@skywind.eu>> wrote:
>>> 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 
>>> <mailto:sqlite-users@mailinglists.sqlite.org>
>>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users 
>>> <http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users>
>>> 
>> 
>> 
>> -- 
>> D. Richard Hipp
>> d...@sqlite.org <mailto:d...@sqlite.org>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@mailinglists.sqlite.org 
>> <mailto:sqlite-users@mailinglists.sqlite.org>
>> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users 
>> <http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
> 

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

Reply via email to