.Dd January 24, 2024
.Dt SQLITE_OPEN_READONLY 3
.Os
.Sh NAME
.Nm SQLITE_OPEN_READONLY ,
.Nm SQLITE_OPEN_READWRITE ,
.Nm SQLITE_OPEN_CREATE ,
.Nm SQLITE_OPEN_DELETEONCLOSE ,
.Nm SQLITE_OPEN_EXCLUSIVE ,
.Nm SQLITE_OPEN_AUTOPROXY ,
.Nm SQLITE_OPEN_URI ,
.Nm SQLITE_OPEN_MEMORY ,
.Nm SQLITE_OPEN_MAIN_DB ,
.Nm SQLITE_OPEN_TEMP_DB ,
.Nm SQLITE_OPEN_TRANSIENT_DB ,
.Nm SQLITE_OPEN_MAIN_JOURNAL ,
.Nm SQLITE_OPEN_TEMP_JOURNAL ,
.Nm SQLITE_OPEN_SUBJOURNAL ,
.Nm SQLITE_OPEN_SUPER_JOURNAL ,
.Nm SQLITE_OPEN_NOMUTEX ,
.Nm SQLITE_OPEN_FULLMUTEX ,
.Nm SQLITE_OPEN_SHAREDCACHE ,
.Nm SQLITE_OPEN_PRIVATECACHE ,
.Nm SQLITE_OPEN_WAL ,
.Nm SQLITE_OPEN_NOFOLLOW ,
.Nm SQLITE_OPEN_EXRESCODE
.Nd flags for file open operations
.Sh SYNOPSIS
.In sqlite3.h
.Fd #define SQLITE_OPEN_READONLY
.Fd #define SQLITE_OPEN_READWRITE
.Fd #define SQLITE_OPEN_CREATE
.Fd #define SQLITE_OPEN_DELETEONCLOSE
.Fd #define SQLITE_OPEN_EXCLUSIVE
.Fd #define SQLITE_OPEN_AUTOPROXY
.Fd #define SQLITE_OPEN_URI
.Fd #define SQLITE_OPEN_MEMORY
.Fd #define SQLITE_OPEN_MAIN_DB
.Fd #define SQLITE_OPEN_TEMP_DB
.Fd #define SQLITE_OPEN_TRANSIENT_DB
.Fd #define SQLITE_OPEN_MAIN_JOURNAL
.Fd #define SQLITE_OPEN_TEMP_JOURNAL
.Fd #define SQLITE_OPEN_SUBJOURNAL
.Fd #define SQLITE_OPEN_SUPER_JOURNAL
.Fd #define SQLITE_OPEN_NOMUTEX
.Fd #define SQLITE_OPEN_FULLMUTEX
.Fd #define SQLITE_OPEN_SHAREDCACHE
.Fd #define SQLITE_OPEN_PRIVATECACHE
.Fd #define SQLITE_OPEN_WAL
.Fd #define SQLITE_OPEN_NOFOLLOW
.Fd #define SQLITE_OPEN_EXRESCODE
.Sh DESCRIPTION
These bit values are intended for use in the 3rd parameter to the
.Fn sqlite3_open_v2
interface and in the 4th parameter to the sqlite3_vfs.xOpen
method.
.Pp
Only those flags marked as "Ok for sqlite3_open_v2()" may be used as
the third argument to the
.Fn sqlite3_open_v2
interface.
The other flags have historically been ignored by sqlite3_open_v2(),
though future versions of SQLite might change so that an error is raised
if any of the disallowed bits are passed into sqlite3_open_v2().
Applications should not depend on the historical behavior.
.Pp
Note in particular that passing the SQLITE_OPEN_EXCLUSIVE flag into
.Fn sqlite3_open_v2
does *not* cause the underlying database file to be opened using O_EXCL.
Passing SQLITE_OPEN_EXCLUSIVE into
.Fn sqlite3_open_v2
has historically be a no-op and might become an error in future versions
of SQLite.
.Sh IMPLEMENTATION NOTES
These declarations were extracted from the
interface documentation at line 574.
.Bd -literal
#define SQLITE_OPEN_READONLY         0x00000001  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_READWRITE        0x00000002  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_CREATE           0x00000004  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_DELETEONCLOSE    0x00000008  /* VFS only */
#define SQLITE_OPEN_EXCLUSIVE        0x00000010  /* VFS only */
#define SQLITE_OPEN_AUTOPROXY        0x00000020  /* VFS only */
#define SQLITE_OPEN_URI              0x00000040  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_MEMORY           0x00000080  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_MAIN_DB          0x00000100  /* VFS only */
#define SQLITE_OPEN_TEMP_DB          0x00000200  /* VFS only */
#define SQLITE_OPEN_TRANSIENT_DB     0x00000400  /* VFS only */
#define SQLITE_OPEN_MAIN_JOURNAL     0x00000800  /* VFS only */
#define SQLITE_OPEN_TEMP_JOURNAL     0x00001000  /* VFS only */
#define SQLITE_OPEN_SUBJOURNAL       0x00002000  /* VFS only */
#define SQLITE_OPEN_SUPER_JOURNAL    0x00004000  /* VFS only */
#define SQLITE_OPEN_NOMUTEX          0x00008000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_FULLMUTEX        0x00010000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_SHAREDCACHE      0x00020000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_PRIVATECACHE     0x00040000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_WAL              0x00080000  /* VFS only */
#define SQLITE_OPEN_NOFOLLOW         0x01000000  /* Ok for sqlite3_open_v2() */
#define SQLITE_OPEN_EXRESCODE        0x02000000  /* Extended result codes */
.Ed
.Sh SEE ALSO
.Xr sqlite3_open 3
