After inspecting the code in more detail, I get the impression that the fix for the compile issue I have is rather simple. If `SQLITE_OMIT_SHARED_CACHE` is **not** defined, then no tables will be locked and therefore the member `nTableLock` would be always 0. That is, lines 187 ff in `build.c` would not be executed at all: ```c #if SQLITE_USER_AUTHENTICATION if( pParse->nTableLock>0 && db->init.busy==0 ){ sqlite3UserAuthInit(db); if( db->auth.authLevel<UAUTH_User ){ sqlite3ErrorMsg(pParse, "user not authenticated"); pParse->rc = SQLITE_AUTH_USER; return; } } #endif ``` That is, adding a check for symbol `SQLITE_OMIT_SHARED_CACHE` should fix the issue: ```c #ifndef SQLITE_OMIT_SHARED_CACHE #if SQLITE_USER_AUTHENTICATION if( pParse->nTableLock>0 && db->init.busy==0 ){ sqlite3UserAuthInit(db); if( db->auth.authLevel<UAUTH_User ){ sqlite3ErrorMsg(pParse, "user not authenticated"); pParse->rc = SQLITE_AUTH_USER; return; } } #endif #endif ``` It would be nice if the SQLite developer would consider to apply this modification for the next SQLite version. Thanks in advance.