I recently ran into this as well. NULL is not the same as “”, and it took me a really long time of debugging before I realized it was the sqlite3 documentation at fault.
> On Mar 13, 2019, at 6:03 PM, Alex Alabuzhev <alabuz...@gmail.com> wrote: > > Hi, > > https://www.sqlite.org/c3ref/db_filename.html: > >> If there is no attached database N on the database connection D, or if > database N is a temporary or in-memory database, then a NULL pointer is > returned. > > However, when called for :memory: db the function actually returns "". > > Looking at the code: > > /* > ** Return the full pathname of the database file. > ** > ** Except, if the pager is in-memory only, then return an empty string if > ** nullIfMemDb is true. This routine is called with nullIfMemDb==1 when > ** used to report the filename to the user, for compatibility with legacy > ** behavior. But when the Btree needs to know the filename for matching to > ** shared cache, it uses nullIfMemDb==0 so that in-memory databases can > ** participate in shared-cache. > */ > SQLITE_PRIVATE const char *sqlite3PagerFilename(Pager *pPager, int > nullIfMemDb){ > return (nullIfMemDb && pPager->memDb) ? "" : pPager->zFilename; > } > > - as the comment says, it returns an empty string in case of in-memory mode > (although "nullIfMemDb" confusingly implies null). > > I have no idea who is correct here - the code or the documentation - but > one of them should probably be corrected? > > Thanks. > > -- > Best regards, > Alex > _______________________________________________ > 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