I further tracked the problem down to lines 379 to 384 in build.c:
#if SQLITE_USER_AUTHENTICATION else if( pParse->db->auth.authLevel<UAUTH_User ){ sqlite3ErrorMsg(pParse, "user not authenticated"); p = 0; } #endif authLevel has the value 0 (that "Authentication not yet checked"). My guess is that in this case no check should be done. All seems to be fine, if I change line 380 to else if( pParse->db->auth.authLevel != 0 && pParse->db->auth.authLevel<UAUTH_User ){ However, this should probably be verified by the SQLite developers. Regards, Ulrich Am 25.11.2015 um 21:25 schrieb Ulrich Telle: > SQLite version 3.8.7 introduced the user authentication extension. This > extension worked well for all 3.8.x versions. > > Now I intended to upgrade to SQLite version 3.9.2. However, if I enable > the user authentication extension using the compile time define > SQLITE_USER_AUTHENTICATION I experience problems. > > If I start with a new, empty database (using the SQLite shell), it > should not require user authentication. However, I always get the error > message > > Error: SQL logic error or missing database > > as soon as I enter for example a "create table" statement. > > I tracked it down to a call of function sqlite3Parser in function > sqlite3RunParser. The statement to be parsed is > > SELECT name, rootpage, sql FROM 'main'.sqlite_master ORDER BY rowid > > The call is in line 461 of tokenize.c: > > sqlite3Parser(pEngine, TK_SEMI, pParse->sLastToken, pParse); > > This function returns with a return code 1 in pParse->rc. And > pParse->zErrMsg contains "user not authenticated". > > Is this a bug in SQLite somewhere? Or am I doing something wrong? > > Regards, > > Ulrich