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

Reply via email to