For the record, I have successfully refactored my code so that authorizer is set only once, and the issue has disappeared.
Yet, this authorizer not always returns the same value for the same input. Precisely speaking, it always return SQLITE_OK, but when asked if it should allow deletion. In this case, it may return SQLITE_IGNORE or SQLITE_OK during compilation (prepare), and SQLITE_IGNORE or SQLITE_OK during execution (step). All four combinations happen, depending on whether this is a DELETE statement with truncate optimization enabled or disabled, or a DROP statement. Do you think this can still be seen as a misuse of the library? Some insights would be appreciated. Thanks in advance On Thursday, August 1, 2019, Richard Hipp <[email protected]> wrote: > On 8/1/19, Gwendal Roué <[email protected]> wrote: > > > > 1. set authorizer > > 2. compile statement > > 3. reset authorizer > > 4. step > > 5. set authorizer (and do something else) > > 6. step -> SQLITE_ABORT_ROLLBACK > > Please test to see if changing the "0" to a "1" on the line of code > shown below fixes the problem, and report back. > > https://www.sqlite.org/src/artifact/0fac710388?ln=81 > -- > D. Richard Hipp > [email protected] > _______________________________________________ > sqlite-users mailing list > [email protected] > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list [email protected] http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

