After code reading, I have discovered that the culprit is the statement
journal.

Regardless of TEMP_STORE = MEMORY or not, the statement journal, which
is treated differently than a regular journal file, is placed in a
temporary file.

This effectively kills the usefulness and purpose of the TEMP_STORE
directive.

Kris Groves wrote:
> Hi,
>
> Just want to bump this, I really need to get to the bottom of this.
>
> Thanks for any info,
> Kris.
>
> Kris Groves wrote:
>   
>> Hi,
>> From what I understand :
>> - default behavior is to use files for temporary stuff.
>> - the directory that will be used for these temporary files can be
>> defined via pragma (temp_store_directory).  If the pragma is not used,
>> it will default to the first hardcoded directory (linux), in the order
>> that follows: /var/tmp, /usr/tmp, /tmp, or finally current directory.
>>
>> So, in the environment I am running in, either those directories do not
>> exist, or are not writable to the user under which the process is
>> running.  The result being an "error 14: unable to open database file"
>> as soon as temporary files are needed.
>>
>> After a little digging I discover SQLITE_TEMP_STORE compilation flag. 
>> So I export CFLAGS=-DSQLITE_TEMP_STORE=3, run configure and remake,
>> figuring that the temp files will now reside in memory, and need no
>> writing into a directory.  However, the problem remains.
>>
>> When I look through the code, there is no instance of SQLITE_TEMP_STORE,
>> only TEMP_STORE... So I repeat the above with -DTEMP_STORE.  Same result.
>>
>> Then I add a path that I know is accessible to the user under which the
>> process runs, to the azDirs array in the unixGetTempname function. 
>> Voila.. working now..
>>
>> I've retested with default TEMP_STORE and TEMP_STORE compiled in a
>> 3(memory only).  And regardless of the setting, it only works if there
>> is a readable/writable directory...
>>
>> I would think that if TEMP_STORE=3, then no directory is required ?  Is
>> this a bug, or am I misunderstanding something ?
>>
>> Thanks,
>> Kris.
>>
>> _______________________________________________
>> sqlite-users mailing list
>> sqlite-users@sqlite.org
>> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>>   
>>     
>
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
>   
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to