Thanks!

In the meantime I found out that version 3.8.8.3 is still working while 3.9.0.0 
fails.

Regards,
Hartwig

> Am 2016-08-02 um 18:47 schrieb Dan Kennedy <danielk1...@gmail.com>:
> 
> On 08/02/2016 01:01 PM, skywind mailing lists wrote:
>> HI,
>> 
>> it seems to be that I am not allowed to add zip files to these e-mails.
> 
> Thanks for reporting this. Should now be fixed here:
> 
>  http://sqlite.org/src/info/e64a4173d2899acf 
> <http://sqlite.org/src/info/e64a4173d2899acf>
> 
> Dan.
> 
> 
> 
>> 
>> 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 
>> <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 
> <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

Reply via email to