]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix the sqlite3_stmt_busy() interface so that it always returns FALSE after
authordrh <drh@noemail.net>
Fri, 31 Jul 2015 18:59:56 +0000 (18:59 +0000)
committerdrh <drh@noemail.net>
Fri, 31 Jul 2015 18:59:56 +0000 (18:59 +0000)
the statement has returned SQLITE_DONE, even for ROLLBACK statements.
Clarify the documentation.

FossilOrigin-Name: 047d3475e93d08cf172ad02404a690d5b0c1b833

manifest
manifest.uuid
src/sqlite.h.in
src/vdbe.c
test/capi3d.test

index aed114ee2bee3481e929960c8f21b97b8660360d..7232275000dece4057b9618a43395682cba1019b 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sa\sduplicate\s"typedef\sstruct\sFts5Global\sFts5Global;"\sfrom\sfts5_main.c\s(duplicate\sis\sin\sfts5Int.h).
-D 2015-07-31T17:48:07.617
+C Fix\sthe\ssqlite3_stmt_busy()\sinterface\sso\sthat\sit\salways\sreturns\sFALSE\safter\nthe\sstatement\shas\sreturned\sSQLITE_DONE,\seven\sfor\sROLLBACK\sstatements.\nClarify\sthe\sdocumentation.
+D 2015-07-31T18:59:56.800
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 4de3ef40c8b3b75c0c55ff4242a43c8ce1ad90ee
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -332,7 +332,7 @@ F src/resolve.c 2d47554370de8de6dd5be060cef9559eec315005
 F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
 F src/select.c 57ef3d98c4400b93eea318813be41b2af2da2217
 F src/shell.c 8af3cced094aebb5f57a8ad739b9dafc7867eed7
-F src/sqlite.h.in 68e13bc5b835c541a4505ed87bf2b6093f068a31
+F src/sqlite.h.in 447ead0a6b3293206f04a0896553955d07cfb4b9
 F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad
 F src/sqlite3ext.h a0b948ebc89bac13941254641326a6aa248c2cc4
 F src/sqliteInt.h 9401d7d9124210dfd5d283af45e0addbc1455c2e
@@ -393,7 +393,7 @@ F src/update.c 487747b328b7216bb7f6af0695d6937d5c9e605f
 F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
 F src/util.c bc9dd64b5db544218b871b66243871c202b2781f
 F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701
-F src/vdbe.c 86be40a4568f5385048ea6623adfd11ddb7bf710
+F src/vdbe.c 2ab1decd98925f8cd846993dde9dccaa69cdf0ef
 F src/vdbe.h 7a75045d879118b9d3af7e8b3c108f2f27c51473
 F src/vdbeInt.h 8b54e01ad0463590e7cffabce0bc36da9ee4f816
 F src/vdbeapi.c adabbd66eb2e3a10f3998485ee0be7e326d06ee4
@@ -497,7 +497,7 @@ F test/capi2.test 011c16da245fdc0106a2785035de6b242c05e738
 F test/capi3.test bf6f0308bbbba1e770dac13aa08e5c2ac61c7324
 F test/capi3b.test efb2b9cfd127efa84433cd7a2d72ce0454ae0dc4
 F test/capi3c.test fdc0d67a2cb8e8fc400d5b7735e330161ea057a2
-F test/capi3d.test a82b6321c50a1cfc848e386fa2c851893606f68c
+F test/capi3d.test 485048dc5cd07bc68011e4917ad035ad6047ab82
 F test/capi3e.test 3d49c01ef2a1a55f41d73cba2b23b5059ec460fe
 F test/cast.test 4c275cbdc8202d6f9c54a3596701719868ac7dc3
 F test/check.test 5831ddb6f2c687782eaf2e1a07b6e17f24c4f763
@@ -1368,7 +1368,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P fee7ad73c10e9353c3ac298d254ab77ad85a210d
-R 8effa90ca0e2086bde23be5598276033
-U dan
-Z bdec76584075a5122c97c46a016bfa55
+P 54a771fe2c2b3c1cc2914a527a825934fe114c49
+R 719f0e876f6a610cf71ea7669afc9986
+U drh
+Z a0214b099853a2b8f63fc04fdc3cf017
index 3cebdc719431078765fd2af37e9b4647abc88efb..a679b8a3f7a5fc9ec0172b1a7e8a51785ce5e95c 100644 (file)
@@ -1 +1 @@
-54a771fe2c2b3c1cc2914a527a825934fe114c49
\ No newline at end of file
+047d3475e93d08cf172ad02404a690d5b0c1b833
\ No newline at end of file
index 2bc9e648a07227fa431c4a9e857719f110b2d8a0..99fb4eb5887f929df6a8c3363f612a698cb59e24 100644 (file)
@@ -3373,7 +3373,8 @@ int sqlite3_stmt_readonly(sqlite3_stmt *pStmt);
 **
 ** ^The sqlite3_stmt_busy(S) interface returns true (non-zero) if the
 ** [prepared statement] S has been stepped at least once using 
-** [sqlite3_step(S)] but has not run to completion and/or has not 
+** [sqlite3_step(S)] but has neither run to completion (returned
+** [SQLITE_DONE] from [sqlite3_step(S)]) nor
 ** been reset using [sqlite3_reset(S)].  ^The sqlite3_stmt_busy(S)
 ** interface returns false if S is a NULL pointer.  If S is not a 
 ** NULL pointer and is not a pointer to a valid [prepared statement]
index fe97087c0986d9bee2d983044344a13d88a8716d..f9c988cdf705efd6c180945e0d546926909dc2e3 100644 (file)
@@ -3008,12 +3008,12 @@ case OP_AutoCommit: {
       goto vdbe_return;
     }else{
       db->autoCommit = (u8)desiredAutoCommit;
-      if( sqlite3VdbeHalt(p)==SQLITE_BUSY ){
-        p->pc = (int)(pOp - aOp);
-        db->autoCommit = (u8)(1-desiredAutoCommit);
-        p->rc = rc = SQLITE_BUSY;
-        goto vdbe_return;
-      }
+    }
+    if( sqlite3VdbeHalt(p)==SQLITE_BUSY ){
+      p->pc = (int)(pOp - aOp);
+      db->autoCommit = (u8)(1-desiredAutoCommit);
+      p->rc = rc = SQLITE_BUSY;
+      goto vdbe_return;
     }
     assert( db->nStatement==0 );
     sqlite3CloseSavepoints(db);
index 1459c5abfe1aa086285eec0f5f5deb060bbaf43f..3b9b8375d180a5c5e1009b8f48192583132b2ab7 100644 (file)
@@ -161,11 +161,11 @@ do_test capi3d-4.2.1 {
 
 do_test capi3d-4.2.2 {
   sqlite3_stmt_busy $::s1
-} {1}
+} {0}
 
 do_catchsql_test capi3d-4.2.3 {
   VACUUM
-} {1 {cannot VACUUM - SQL statements in progress}}
+} {0 {}}
 
 do_test capi3d-4.2.4 {
   sqlite3_reset $::s1