From: drh Date: Fri, 21 Jul 2017 14:49:58 +0000 (+0000) Subject: Additional documentation on the new VFS interface. No changes to code. X-Git-Tag: version-3.19.4~1^2~1^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d080e3d7acd3f5402c490b7becdeee2a05041ba6;p=thirdparty%2Fsqlite.git Additional documentation on the new VFS interface. No changes to code. FossilOrigin-Name: 83077ec8b5804e6c709fa4f0b50afec9eae6d5b603cc4c3e8a408ed6b2bfaf28 --- diff --git a/manifest b/manifest index 894b3ba0e9..2d98b37e4a 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sthe\sdocumentation\stext\sfor\sthe\snew\sVFS\sinterfaces\sused\sby\sbatch-atomic\nwrites. -D 2017-07-20T21:18:49.851 +C Additional\sdocumentation\son\sthe\snew\sVFS\sinterface.\s\sNo\schanges\sto\scode. +D 2017-07-21T14:49:58.073 F Makefile.in d9873c9925917cca9990ee24be17eb9613a668012c85a343aef7e5536ae266e8 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 02b469e9dcd5b7ee63fc1fb05babc174260ee4cfa4e0ef2e48c3c6801567a016 @@ -455,7 +455,7 @@ F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac F src/select.c c6bf96a7f9d7d68f929de84738c599a30d0a725ab0b54420e70545743cd5ee7b F src/shell.c bd6a37cbe8bf64ef6a6a74fdc50f067d3148149b4ce2b4d03154663e66ded55f F src/shell.c.in b5725acacba95ccefa57b6d068f710e29ba8239c3aa704628a1902a1f729c175 -F src/sqlite.h.in 6178cd914ca32535015ff57df78438f87a0f16609e9e47b1bc5f373ffe892686 +F src/sqlite.h.in c75b4de3d60133036ccfbbcf6afbb5d8ce492a902ff3e7cc5c3ef3ab28db0ee9 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h 967154985ed2ae62f90d9029bb5b5071793d847f1696a2ebe9e8cc0b042ae60b F src/sqliteInt.h 437217b5d22e9c8f3c53f90324915a535f649262b1281eaabed4e31653576b51 @@ -1637,7 +1637,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P f2c6b5845028ef25dcd17e23e11b93c9f7296c26c7a21718fdae8f4b48c4e1da 929bc46b8be0111a7b6e3d6fe129f0cad869c6a551bd47569c122742597b9f1c -R fd0dcdf56ec4d6602162b3b1d1594e27 +P 5e944eea5a32cb4d27a2d5ae283b9ce6fe08c1bc584256e8e8c78583c415eb2a +R f393cb3c25ccb9e4336ceb20b0531651 U drh -Z 9b7e24481f0b473c93f9af036e52968c +Z be7280aa4eb1e26b2cd69105d776b2e5 diff --git a/manifest.uuid b/manifest.uuid index 2096e2df55..190e2660c8 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -5e944eea5a32cb4d27a2d5ae283b9ce6fe08c1bc584256e8e8c78583c415eb2a \ No newline at end of file +83077ec8b5804e6c709fa4f0b50afec9eae6d5b603cc4c3e8a408ed6b2bfaf28 \ No newline at end of file diff --git a/src/sqlite.h.in b/src/sqlite.h.in index a248630809..92f5414c1d 100644 --- a/src/sqlite.h.in +++ b/src/sqlite.h.in @@ -582,9 +582,9 @@ int sqlite3_exec( ** elevated privileges. ** ** The SQLITE_IOCAP_BATCH_ATOMIC property means that the underlying -** filesystem can multiple write operations atomically when those -** write operations are bracketed by [SQLITE_IOCAP_BEGIN_ATOMIC_WRITE] and -** [SQLITE_IOCAP_ATOMIC_WRITE_COMMIT]. +** filesystem supports doing multiple write operations atomically when those +** write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and +** [SQLITE_FCNTL_ATOMIC_WRITE_COMMIT]. */ #define SQLITE_IOCAP_ATOMIC 0x00000001 #define SQLITE_IOCAP_ATOMIC512 0x00000002 @@ -1021,22 +1021,38 @@ struct sqlite3_io_methods { ** this opcode. ** **
  • [[SQLITE_FCNTL_BEGIN_ATOMIC_WRITE]] -** If the [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] opcode returns SQLITE_OK, that +** If the [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] opcode returns SQLITE_OK, then +** the file descriptor is placed in "batch write mode", which ** means all subsequent write operations will be deferred and done ** atomically at the next [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE]. Systems ** that do not support batch atomic writes will return SQLITE_NOTFOUND. +** ^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]. ** **
  • [[SQLITE_FCNTL_COMMIT_ATOMIC_WRITE]] -** If the [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE] opcode causes all write +** The [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE] opcode causes all write ** operations since the previous successful call to ** [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] to be performed atomically. ** This file control returns [SQLITE_OK] if and only if the writes were ** all performed successfully and have been committed to persistent storage. +** ^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. +** ^SQLite will never invoke SQLITE_FCNTL_COMMIT_ATOMIC_WRITE without +** a prior successful call to [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE]. ** **
  • [[SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE]] -** If the [SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE] opcode causes all write +** The [SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE] opcode causes all write ** operations since the previous successful call to -** [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] to be rollback. +** [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] to be rolled back. +** ^This file control takes the file descriptor out of batch write mode +** so that all subsequent write operations are independent. +** ^SQLite will never invoke SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE without +** a prior successful call to [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE]. ** */ #define SQLITE_FCNTL_LOCKSTATE 1