summaryrefslogtreecommitdiff
path: root/static/netbsd/man3/sqlite3_open.3
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
commit253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch)
treeadf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man3/sqlite3_open.3
parenta9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff)
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man3/sqlite3_open.3')
-rw-r--r--static/netbsd/man3/sqlite3_open.3335
1 files changed, 335 insertions, 0 deletions
diff --git a/static/netbsd/man3/sqlite3_open.3 b/static/netbsd/man3/sqlite3_open.3
new file mode 100644
index 00000000..63581d34
--- /dev/null
+++ b/static/netbsd/man3/sqlite3_open.3
@@ -0,0 +1,335 @@
+.Dd January 24, 2024
+.Dt SQLITE3_OPEN 3
+.Os
+.Sh NAME
+.Nm sqlite3_open ,
+.Nm sqlite3_open16 ,
+.Nm sqlite3_open_v2
+.Nd opening a new database connection
+.Sh SYNOPSIS
+.In sqlite3.h
+.Ft int
+.Fo sqlite3_open
+.Fa "const char *filename"
+.Fa "sqlite3 **ppDb"
+.Fc
+.Ft int
+.Fo sqlite3_open16
+.Fa "const void *filename"
+.Fa "sqlite3 **ppDb"
+.Fc
+.Ft int
+.Fo sqlite3_open_v2
+.Fa "const char *filename"
+.Fa "sqlite3 **ppDb"
+.Fa "int flags"
+.Fa "const char *zVfs"
+.Fc
+.Sh DESCRIPTION
+These routines open an SQLite database file as specified by the filename
+argument.
+The filename argument is interpreted as UTF-8 for sqlite3_open() and
+sqlite3_open_v2() and as UTF-16 in the native byte order for sqlite3_open16().
+A database connection handle is usually returned
+in *ppDb, even if an error occurs.
+The only exception is that if SQLite is unable to allocate memory to
+hold the sqlite3 object, a NULL will be written into *ppDb instead
+of a pointer to the sqlite3 object.
+If the database is opened (and/or created) successfully, then SQLITE_OK
+is returned.
+Otherwise an error code is returned.
+The
+.Fn sqlite3_errmsg
+or
+.Fn sqlite3_errmsg16
+routines can be used to obtain an English language description of the
+error following a failure of any of the sqlite3_open() routines.
+.Pp
+The default encoding will be UTF-8 for databases created using sqlite3_open()
+or sqlite3_open_v2().
+The default encoding for databases created using sqlite3_open16() will
+be UTF-16 in the native byte order.
+.Pp
+Whether or not an error occurs when it is opened, resources associated
+with the database connection handle should be released
+by passing it to
+.Fn sqlite3_close
+when it is no longer required.
+.Pp
+The sqlite3_open_v2() interface works like sqlite3_open() except that
+it accepts two additional parameters for additional control over the
+new database connection.
+The flags parameter to sqlite3_open_v2() must include, at a minimum,
+one of the following three flag combinations:
+.Bl -tag -width Ds
+.It SQLITE_OPEN_READONLY
+The database is opened in read-only mode.
+If the database does not already exist, an error is returned.
+.It SQLITE_OPEN_READWRITE
+The database is opened for reading and writing if possible, or reading
+only if the file is write protected by the operating system.
+In either case the database must already exist, otherwise an error
+is returned.
+For historical reasons, if opening in read-write mode fails due to
+OS-level permissions, an attempt is made to open it in read-only mode.
+.Fn sqlite3_db_readonly
+can be used to determine whether the database is actually read-write.
+.It SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE
+The database is opened for reading and writing, and is created if it
+does not already exist.
+This is the behavior that is always used for sqlite3_open() and sqlite3_open16().
+.El
+.Pp
+In addition to the required flags, the following optional flags are
+also supported:
+.Bl -tag -width Ds
+.It SQLITE_OPEN_URI
+The filename can be interpreted as a URI if this flag is set.
+.It SQLITE_OPEN_MEMORY
+The database will be opened as an in-memory database.
+The database is named by the "filename" argument for the purposes of
+cache-sharing, if shared cache mode is enabled, but the "filename"
+is otherwise ignored.
+.It SQLITE_OPEN_NOMUTEX
+The new database connection will use the "multi-thread" threading mode.
+This means that separate threads are allowed to use SQLite at the same
+time, as long as each thread is using a different database connection.
+.It SQLITE_OPEN_FULLMUTEX
+The new database connection will use the "serialized" threading mode.
+This means the multiple threads can safely attempt to use the same
+database connection at the same time.
+(Mutexes will block any actual concurrency, but in this mode there
+is no harm in trying.)
+.It SQLITE_OPEN_SHAREDCACHE
+The database is opened shared cache enabled, overriding
+the default shared cache setting provided by
+.Fn sqlite3_enable_shared_cache .
+The use of shared cache mode is discouraged
+and hence shared cache capabilities may be omitted from many builds
+of SQLite.
+In such cases, this option is a no-op.
+.It SQLITE_OPEN_PRIVATECACHE
+The database is opened shared cache disabled, overriding
+the default shared cache setting provided by
+.Fn sqlite3_enable_shared_cache .
+.It SQLITE_OPEN_EXRESCODE
+The database connection comes up in "extended result code mode".
+In other words, the database behaves has if sqlite3_extended_result_codes(db,1)
+where called on the database connection as soon as the connection is
+created.
+In addition to setting the extended result code mode, this flag also
+causes
+.Fn sqlite3_open_v2
+to return an extended result code.
+.It SQLITE_OPEN_NOFOLLOW
+The database filename is not allowed to contain a symbolic link
+.El
+.Pp
+If the 3rd parameter to sqlite3_open_v2() is not one of the required
+combinations shown above optionally combined with other SQLITE_OPEN_* bits
+then the behavior is undefined.
+Historic versions of SQLite have silently ignored surplus bits in the
+flags parameter to sqlite3_open_v2(), however that behavior might not
+be carried through into future versions of SQLite and so applications
+should not rely upon it.
+Note in particular that the SQLITE_OPEN_EXCLUSIVE flag is a no-op for
+sqlite3_open_v2().
+The SQLITE_OPEN_EXCLUSIVE does *not* cause the open to fail if the
+database already exists.
+The SQLITE_OPEN_EXCLUSIVE flag is intended for use by the VFS interface
+only, and not by sqlite3_open_v2().
+.Pp
+The fourth parameter to sqlite3_open_v2() is the name of the sqlite3_vfs
+object that defines the operating system interface that the new database
+connection should use.
+If the fourth parameter is a NULL pointer then the default sqlite3_vfs
+object is used.
+.Pp
+If the filename is ":memory:", then a private, temporary in-memory
+database is created for the connection.
+This in-memory database will vanish when the database connection is
+closed.
+Future versions of SQLite might make use of additional special filenames
+that begin with the ":" character.
+It is recommended that when a database filename actually does begin
+with a ":" character you should prefix the filename with a pathname
+such as "./" to avoid ambiguity.
+.Pp
+If the filename is an empty string, then a private, temporary on-disk
+database will be created.
+This private database will be automatically deleted as soon as the
+database connection is closed.
+.Ss URI Filenames
+If URI filename interpretation is enabled, and the filename
+argument begins with "file:", then the filename is interpreted as a
+URI.
+URI filename interpretation is enabled if the SQLITE_OPEN_URI
+flag is set in the third argument to sqlite3_open_v2(), or if it has
+been enabled globally using the SQLITE_CONFIG_URI
+option with the
+.Fn sqlite3_config
+method or by the SQLITE_USE_URI compile-time option.
+URI filename interpretation is turned off by default, but future releases
+of SQLite might enable URI filename interpretation by default.
+See "URI filenames" for additional information.
+.Pp
+URI filenames are parsed according to RFC 3986.
+If the URI contains an authority, then it must be either an empty string
+or the string "localhost".
+If the authority is not an empty string or "localhost", an error is
+returned to the caller.
+The fragment component of a URI, if present, is ignored.
+.Pp
+SQLite uses the path component of the URI as the name of the disk file
+which contains the database.
+If the path begins with a '/' character, then it is interpreted as
+an absolute path.
+If the path does not begin with a '/' (meaning that the authority section
+is omitted from the URI) then the path is interpreted as a relative
+path.
+On windows, the first component of an absolute path is a drive specification
+(e.g. "C:").
+.Pp
+The query component of a URI may contain parameters that are interpreted
+either by SQLite itself, or by a custom VFS implementation.
+SQLite and its built-in VFSes interpret the following query parameters:
+.Bl -bullet
+.It
+\fBvfs\fP: The "vfs" parameter may be used to specify the name of a VFS object
+that provides the operating system interface that should be used to
+access the database file on disk.
+If this option is set to an empty string the default VFS object is
+used.
+Specifying an unknown VFS is an error.
+If sqlite3_open_v2() is used and the vfs option is present, then the
+VFS specified by the option takes precedence over the value passed
+as the fourth parameter to sqlite3_open_v2().
+.It
+\fBmode\fP: The mode parameter may be set to either "ro", "rw", "rwc", or
+"memory".
+Attempting to set it to any other value is an error.
+If "ro" is specified, then the database is opened for read-only access,
+just as if the SQLITE_OPEN_READONLY flag had been
+set in the third argument to sqlite3_open_v2().
+If the mode option is set to "rw", then the database is opened for
+read-write (but not create) access, as if SQLITE_OPEN_READWRITE (but
+not SQLITE_OPEN_CREATE) had been set.
+Value "rwc" is equivalent to setting both SQLITE_OPEN_READWRITE and
+SQLITE_OPEN_CREATE.
+If the mode option is set to "memory" then a pure in-memory database
+that never reads or writes from disk is used.
+It is an error to specify a value for the mode parameter that is less
+restrictive than that specified by the flags passed in the third parameter
+to sqlite3_open_v2().
+.It
+\fBcache\fP: The cache parameter may be set to either "shared" or "private".
+Setting it to "shared" is equivalent to setting the SQLITE_OPEN_SHAREDCACHE
+bit in the flags argument passed to sqlite3_open_v2().
+Setting the cache parameter to "private" is equivalent to setting the
+SQLITE_OPEN_PRIVATECACHE bit.
+If sqlite3_open_v2() is used and the "cache" parameter is present in
+a URI filename, its value overrides any behavior requested by setting
+SQLITE_OPEN_PRIVATECACHE or SQLITE_OPEN_SHAREDCACHE flag.
+.It
+\fBpsow\fP: The psow parameter indicates whether or not the powersafe overwrite
+property does or does not apply to the storage media on which the database
+file resides.
+.It
+\fBnolock\fP: The nolock parameter is a boolean query parameter which if
+set disables file locking in rollback journal modes.
+This is useful for accessing a database on a filesystem that does not
+support locking.
+Caution: Database corruption might result if two or more processes
+write to the same database and any one of those processes uses nolock=1.
+.It
+\fBimmutable\fP: The immutable parameter is a boolean query parameter that
+indicates that the database file is stored on read-only media.
+When immutable is set, SQLite assumes that the database file cannot
+be changed, even by a process with higher privilege, and so the database
+is opened read-only and all locking and change detection is disabled.
+Caution: Setting the immutable property on a database file that does
+in fact change can result in incorrect query results and/or SQLITE_CORRUPT
+errors.
+.El
+.Pp
+Specifying an unknown parameter in the query component of a URI is
+not an error.
+Future versions of SQLite might understand additional query parameters.
+See "query parameters with special meaning to SQLite"
+for additional information.
+.Ss URI filename examples
+.Pp
+ URI filenames Results
+ file:data.db Open the file "data.db" in the current directory.
+ file:/home/fred/data.db file:///home/fred/data.db file://localhost/home/fred/data.db
+ Open the database file "/home/fred/data.db".
+ file://darkstar/home/fred/data.db An error.
+"darkstar" is not a recognized authority.
+ file:///C:/Documents%20and%20Settings/fred/Desktop/data.db Windows
+only: Open the file "data.db" on fred's desktop on drive C:.
+Note that the %20 escaping in this example is not strictly necessary
+- space characters can be used literally in URI filenames.
+ file:data.db?mode=ro&cache=private Open file "data.db" in the current
+directory for read-only access.
+Regardless of whether or not shared-cache mode is enabled by default,
+use a private cache.
+ file:/home/fred/data.db?vfs=unix-dotfile Open file "/home/fred/data.db".
+Use the special VFS "unix-dotfile" that uses dot-files in place of
+posix advisory locking.
+ file:data.db?mode=readonly An error.
+"readonly" is not a valid option for the "mode" parameter.
+Use "ro" instead: "file:data.db?mode=ro".
+.Pp
+URI hexadecimal escape sequences (%HH) are supported within the path
+and query components of a URI.
+A hexadecimal escape sequence consists of a percent sign - "%" - followed
+by exactly two hexadecimal digits specifying an octet value.
+Before the path or query components of a URI filename are interpreted,
+they are encoded using UTF-8 and all hexadecimal escape sequences replaced
+by a single byte containing the corresponding octet.
+If this process generates an invalid UTF-8 encoding, the results are
+undefined.
+.Pp
+\fBNote to Windows users:\fP The encoding used for the filename argument
+of sqlite3_open() and sqlite3_open_v2() must be UTF-8, not whatever
+codepage is currently defined.
+Filenames containing international characters must be converted to
+UTF-8 prior to passing them into sqlite3_open() or sqlite3_open_v2().
+.Pp
+\fBNote to Windows Runtime users:\fP The temporary directory must be set
+prior to calling sqlite3_open() or sqlite3_open_v2().
+Otherwise, various features that require the use of temporary files
+may fail.
+.Pp
+.Sh IMPLEMENTATION NOTES
+These declarations were extracted from the
+interface documentation at line 3462.
+.Bd -literal
+SQLITE_API int sqlite3_open(
+ const char *filename, /* Database filename (UTF-8) */
+ sqlite3 **ppDb /* OUT: SQLite db handle */
+);
+SQLITE_API int sqlite3_open16(
+ const void *filename, /* Database filename (UTF-16) */
+ sqlite3 **ppDb /* OUT: SQLite db handle */
+);
+SQLITE_API int sqlite3_open_v2(
+ const char *filename, /* Database filename (UTF-8) */
+ sqlite3 **ppDb, /* OUT: SQLite db handle */
+ int flags, /* Flags */
+ const char *zVfs /* Name of VFS module to use */
+);
+.Ed
+.Sh SEE ALSO
+.Xr sqlite3 3 ,
+.Xr sqlite3_close 3 ,
+.Xr sqlite3_config 3 ,
+.Xr sqlite3_db_readonly 3 ,
+.Xr sqlite3_enable_shared_cache 3 ,
+.Xr sqlite3_errcode 3 ,
+.Xr sqlite3_temp_directory 3 ,
+.Xr sqlite3_vfs 3 ,
+.Xr SQLITE_CONFIG_SINGLETHREAD 3 ,
+.Xr SQLITE_IOCAP_ATOMIC 3 ,
+.Xr SQLITE_OK 3 ,
+.Xr SQLITE_OPEN_READONLY 3