*** DRAFT ***

SQLite Requirement Matrix Details
c_fcntl_begin_atomic_write.html

Index Summary Markup Original


R-46542-01490-05241-30409-15162-63986-32317-12249 tcl slt th3 src

The SQLITE_FCNTL_WIN32_AV_RETRY opcode is used to configure automatic retry counts and intervals for certain disk I/O operations for the windows VFS in order to provide robustness in the presence of anti-virus programs.

/* IMP: R-46542-01490 */
# EVIDENCE-OF: R-46542-01490 The SQLITE_FCNTL_WIN32_AV_RETRY opcode is
# used to configure automatic retry counts and intervals for certain
# disk I/O operations for the windows VFS in order to provide robustness
# in the presence of anti-virus programs.

R-57967-31673-02324-15134-55427-47426-59271-07487 tcl slt th3 src

The SQLITE_FCNTL_PERSIST_WAL opcode is used to set or query the persistent Write Ahead Log setting.

/* IMP: R-57967-31673 */
# EVIDENCE-OF: R-57967-31673 The SQLITE_FCNTL_PERSIST_WAL opcode is used
# to set or query the persistent Write Ahead Log setting.

R-58835-30946-01453-54095-45782-49033-61690-21172 tcl slt th3 src

The SQLITE_FCNTL_POWERSAFE_OVERWRITE opcode is used to set or query the persistent "powersafe-overwrite" or "PSOW" setting.

/* IMP: R-58835-30946 */
# EVIDENCE-OF: R-58835-30946 The SQLITE_FCNTL_POWERSAFE_OVERWRITE opcode
# is used to set or query the persistent "powersafe-overwrite" or "PSOW"
# setting.

R-39578-54133-12312-25444-39025-43860-65200-11026 tcl slt th3 src

The SQLITE_FCNTL_OVERWRITE opcode is invoked by SQLite after opening a write transaction to indicate that, unless it is rolled back for some reason, the entire database file will be overwritten by the current transaction.

/* IMP: R-39578-54133 */
# EVIDENCE-OF: R-39578-54133 The SQLITE_FCNTL_OVERWRITE opcode is
# invoked by SQLite after opening a write transaction to indicate that,
# unless it is rolled back for some reason, the entire database file
# will be overwritten by the current transaction.

R-07373-26855-08191-07958-60277-35412-28383-64233 tcl slt th3 src

The SQLITE_FCNTL_VFSNAME opcode can be used to obtain the names of all VFSes in the VFS stack.

/* IMP: R-07373-26855 */
# EVIDENCE-OF: R-07373-26855 The SQLITE_FCNTL_VFSNAME opcode can be used
# to obtain the names of all VFSes in the VFS stack.

R-45209-39960-61875-37751-41850-04754-65242-24219 tcl slt th3 src

The SQLITE_FCNTL_VFS_POINTER opcode finds a pointer to the top-level VFSes currently in use.

/* IMP: R-45209-39960 */
# EVIDENCE-OF: R-45209-39960 The SQLITE_FCNTL_VFS_POINTER opcode finds a
# pointer to the top-level VFSes currently in use.

R-02216-00820-33390-20327-19071-10430-39697-32412 tcl slt th3 src

The argument X in sqlite3_file_control(db,SQLITE_FCNTL_VFS_POINTER,X) must be of type "sqlite3_vfs **". This opcodes will set *X to a pointer to the top-level VFS.

/* IMP: R-02216-00820 */
# EVIDENCE-OF: R-02216-00820 The argument X in
# sqlite3_file_control(db,SQLITE_FCNTL_VFS_POINTER,X) must be of type
# "sqlite3_vfs **". This opcodes will set *X to a pointer to the
# top-level VFS.

R-48515-17071-01748-53635-10360-09083-05478-56213 tcl slt th3 src

When there are multiple VFS shims in the stack, this opcode finds the upper-most shim only.

/* IMP: R-48515-17071 */
# EVIDENCE-OF: R-48515-17071 When there are multiple VFS shims in the
# stack, this opcode finds the upper-most shim only.

R-12238-55120-28128-47311-07751-08633-28104-35625 tcl slt th3 src

Whenever a PRAGMA statement is parsed, an SQLITE_FCNTL_PRAGMA file control is sent to the open sqlite3_file object corresponding to the database file to which the pragma statement refers.

src/pragma.c:435   tcl/multiplex4.test:65

/* IMP: R-12238-55120 */
# EVIDENCE-OF: R-12238-55120 Whenever a PRAGMA statement is parsed, an
# SQLITE_FCNTL_PRAGMA file control is sent to the open sqlite3_file
# object corresponding to the database file to which the pragma
# statement refers.

R-29875-31678-61620-24152-15277-25938-13734-04890 tcl slt th3 src

The argument to the SQLITE_FCNTL_PRAGMA file control is an array of pointers to strings (char**) in which the second element of the array is the name of the pragma and the third element is the argument to the pragma or NULL if the pragma has no argument.

src/pragma.c:440   src/test_multiplex.c:959

/* IMP: R-29875-31678 */
# EVIDENCE-OF: R-29875-31678 The argument to the SQLITE_FCNTL_PRAGMA
# file control is an array of pointers to strings (char**) in which the
# second element of the array is the name of the pragma and the third
# element is the argument to the pragma or NULL if the pragma has no
# argument.

R-27806-26076-28846-24074-00653-42186-57572-51475 tcl slt th3 src

The handler for an SQLITE_FCNTL_PRAGMA file control can optionally make the first element of the char** argument point to a string obtained from sqlite3_mprintf() or the equivalent and that string will become the result of the pragma or the error message if the pragma fails.

src/test_multiplex.c:987   th3/cov1/pragma24.test:26

/* IMP: R-27806-26076 */
# EVIDENCE-OF: R-27806-26076 The handler for an SQLITE_FCNTL_PRAGMA file
# control can optionally make the first element of the char** argument
# point to a string obtained from sqlite3_mprintf() or the equivalent
# and that string will become the result of the pragma or the error
# message if the pragma fails.

R-38787-59790-48915-64090-33059-22783-12299-30230 tcl slt th3 src

If the SQLITE_FCNTL_PRAGMA file control returns SQLITE_NOTFOUND, then normal PRAGMA processing continues.

th3/cov1/pragma24.test:57

/* IMP: R-38787-59790 */
# EVIDENCE-OF: R-38787-59790 If the SQLITE_FCNTL_PRAGMA file control
# returns SQLITE_NOTFOUND, then normal PRAGMA processing continues.

R-26188-08449-06969-05333-36262-60871-22176-39475 tcl slt th3 src

If the SQLITE_FCNTL_PRAGMA file control returns SQLITE_OK, then the parser assumes that the VFS has handled the PRAGMA itself and the parser generates a no-op prepared statement if result string is NULL, or that returns a copy of the result string if the string is non-NULL.

tcl/multiplex4.test:95   th3/cov1/pragma24.test:66

/* IMP: R-26188-08449 */
# EVIDENCE-OF: R-26188-08449 If the SQLITE_FCNTL_PRAGMA file control
# returns SQLITE_OK, then the parser assumes that the VFS has handled
# the PRAGMA itself and the parser generates a no-op prepared statement
# if result string is NULL, or that returns a copy of the result string
# if the string is non-NULL.

R-18721-11322-01126-64339-40438-59164-27470-15171 tcl slt th3 src

If the SQLITE_FCNTL_PRAGMA file control returns any result code other than SQLITE_OK or SQLITE_NOTFOUND, that means that the VFS encountered an error while handling the PRAGMA and the compilation of the PRAGMA fails with an error.

th3/cov1/pragma24.test:78

/* IMP: R-18721-11322 */
# EVIDENCE-OF: R-18721-11322 If the SQLITE_FCNTL_PRAGMA file control
# returns any result code other than SQLITE_OK or SQLITE_NOTFOUND, that
# means that the VFS encountered an error while handling the PRAGMA and
# the compilation of the PRAGMA fails with an error.

R-58729-25290-19710-37718-46636-04940-09423-21381 tcl slt th3 src

The SQLITE_FCNTL_PRAGMA file control occurs at the beginning of pragma statement analysis and so it is able to override built-in PRAGMA statements.

th3/cov1/pragma24.test:83

/* IMP: R-58729-25290 */
# EVIDENCE-OF: R-58729-25290 The SQLITE_FCNTL_PRAGMA file control occurs
# at the beginning of pragma statement analysis and so it is able to
# override built-in PRAGMA statements.

R-43156-15813-49564-25791-10742-05152-48657-05796 tcl slt th3 src

The SQLITE_FCNTL_BUSYHANDLER file-control may be invoked by SQLite on the database file handle shortly after it is opened in order to provide a custom VFS with access to the connection's busy-handler callback.

/* IMP: R-43156-15813 */
# EVIDENCE-OF: R-43156-15813 The SQLITE_FCNTL_BUSYHANDLER file-control
# may be invoked by SQLite on the database file handle shortly after it
# is opened in order to provide a custom VFS with access to the
# connection's busy-handler callback.

R-03153-32413-63550-60817-44903-54109-55492-28243 tcl slt th3 src

Applications can invoke the SQLITE_FCNTL_TEMPFILENAME file-control to have SQLite generate a temporary filename using the same algorithm that is followed to generate temporary filenames for TEMP tables and other internal uses.

/* IMP: R-03153-32413 */
# EVIDENCE-OF: R-03153-32413 Applications can invoke the
# SQLITE_FCNTL_TEMPFILENAME file-control to have SQLite generate a
# temporary filename using the same algorithm that is followed to
# generate temporary filenames for TEMP tables and other internal uses.

R-10119-21526-34528-05557-36941-47440-26835-18777 tcl slt th3 src

Following a successful SQLITE_FCNTL_BEGIN_ATOMIC_WRITE and prior to the closing SQLITE_FCNTL_COMMIT_ATOMIC_WRITE or SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE, SQLite will make no VFS interface calls on the same sqlite3_file file descriptor except for calls to the xWrite method and the xFileControl method with SQLITE_FCNTL_SIZE_HINT.

/* IMP: R-10119-21526 */
# EVIDENCE-OF: R-10119-21526 Following a successful
# SQLITE_FCNTL_BEGIN_ATOMIC_WRITE and prior to the closing
# SQLITE_FCNTL_COMMIT_ATOMIC_WRITE or
# SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE, SQLite will make no VFS interface
# calls on the same sqlite3_file file descriptor except for calls to the
# xWrite method and the xFileControl method with SQLITE_FCNTL_SIZE_HINT.

R-17069-05052-11760-32212-31983-21465-64929-00475 tcl slt th3 src

Regardless of whether or not it is successful, this file control takes the file descriptor out of batch write mode so that all subsequent write operations are independent.

/* IMP: R-17069-05052 */
# EVIDENCE-OF: R-17069-05052 Regardless of whether or not it is
# successful, this file control takes the file descriptor out of batch
# write mode so that all subsequent write operations are independent.

R-44462-37635-62099-13453-38487-62317-50080-33351 tcl slt th3 src

SQLite will never invoke SQLITE_FCNTL_COMMIT_ATOMIC_WRITE without a prior successful call to SQLITE_FCNTL_BEGIN_ATOMIC_WRITE.

/* IMP: R-44462-37635 */
# EVIDENCE-OF: R-44462-37635 SQLite will never invoke
# SQLITE_FCNTL_COMMIT_ATOMIC_WRITE without a prior successful call to
# SQLITE_FCNTL_BEGIN_ATOMIC_WRITE.

R-29907-43640-25763-15861-54141-28138-53381-17065 tcl slt th3 src

This file control takes the file descriptor out of batch write mode so that all subsequent write operations are independent.

/* IMP: R-29907-43640 */
# EVIDENCE-OF: R-29907-43640 This file control takes the file descriptor
# out of batch write mode so that all subsequent write operations are
# independent.

R-53139-25371-00097-20894-04129-08497-32476-32210 tcl slt th3 src

SQLite will never invoke SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE without a prior successful call to SQLITE_FCNTL_BEGIN_ATOMIC_WRITE.

/* IMP: R-53139-25371 */
# EVIDENCE-OF: R-53139-25371 SQLite will never invoke
# SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE without a prior successful call to
# SQLITE_FCNTL_BEGIN_ATOMIC_WRITE.