From: drh Date: Wed, 18 Apr 2007 16:45:24 +0000 (+0000) Subject: The sqlite3_step() routine reports SQLITE_ERROR after a commit failure, X-Git-Tag: version-3.6.10~2316 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=83968c44a5465e18d4e163dbf7f8b96fe580538a;p=thirdparty%2Fsqlite.git The sqlite3_step() routine reports SQLITE_ERROR after a commit failure, not SQLITE_DONE. This fix only effects the legacy sqlite3_prepare() interface. It already worked correctly with sqlite3_prepare_v2(). (CVS 3854) FossilOrigin-Name: 165dc72d7024258e225c8a7d60118071282f0f44 --- diff --git a/manifest b/manifest index 90d681315c..f4607cc596 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Version\s3.3.16\s(CVS\s3853) -D 2007-04-18T15:33:53 +C The\ssqlite3_step()\sroutine\sreports\sSQLITE_ERROR\safter\sa\scommit\sfailure,\nnot\sSQLITE_DONE.\s\sThis\sfix\sonly\seffects\sthe\slegacy\ssqlite3_prepare()\ninterface.\s\sIt\salready\sworked\scorrectly\swith\ssqlite3_prepare_v2().\s(CVS\s3854) +D 2007-04-18T16:45:24 F Makefile.in 8cab54f7c9f5af8f22fd97ddf1ecfd1e1860de62 F Makefile.linux-gcc 2d8574d1ba75f129aba2019f0b959db380a90935 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -124,7 +124,7 @@ F src/update.c 3359041db390a8f856d67272f299600e2104f350 F src/utf.c e64a48bc21aa973eb622dd47da87d56a4cdcf528 F src/util.c b6344325378e75b9e18175d8b6aed1723d73dad9 F src/vacuum.c 8bd895d29e7074e78d4e80f948e35ddc9cf2beef -F src/vdbe.c cf7808e8db2e5d1547e898ce29531295183ede6e +F src/vdbe.c 814dab208a156250bc5e77f827f4e0c8ad734820 F src/vdbe.h 0025259af1939fb264a545816c69e4b5b8d52691 F src/vdbeInt.h 4b19fd8febad3fd14c4c97adaefc06754d323132 F src/vdbeapi.c 1fca7ff056d03f131caa6b1296bb221da65ed7f4 @@ -459,7 +459,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5 -P 24683f1d29c5d312d6cabe2dde52d7c0424f629a -R 82ca28b3f62eedfa7335fb3cb839a54b +P 8c6b5adb5c9e0322098e15a162e80a98259d7f60 +R 20d68457fc0935c09f9220d0a08efe2a U drh -Z 5411fa1ab4f1b89fab1507d7350e97c0 +Z 198442dca52a2a4365d24ace578f3316 diff --git a/manifest.uuid b/manifest.uuid index ea39e15b40..8f125b5884 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -8c6b5adb5c9e0322098e15a162e80a98259d7f60 \ No newline at end of file +165dc72d7024258e225c8a7d60118071282f0f44 \ No newline at end of file diff --git a/src/vdbe.c b/src/vdbe.c index 839c2b1a46..06232046d7 100644 --- a/src/vdbe.c +++ b/src/vdbe.c @@ -43,7 +43,7 @@ ** in this file for details. If in doubt, do not deviate from existing ** commenting and indentation practices when changing or adding code. ** -** $Id: vdbe.c,v 1.600 2007/04/17 08:32:34 danielk1977 Exp $ +** $Id: vdbe.c,v 1.601 2007/04/18 16:45:24 drh Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -2369,7 +2369,11 @@ case OP_AutoCommit: { /* no-push */ return SQLITE_BUSY; } } - return SQLITE_DONE; + if( p->rc==SQLITE_OK ){ + return SQLITE_DONE; + }else{ + return SQLITE_ERROR; + } }else{ sqlite3SetString(&p->zErrMsg, (!i)?"cannot start a transaction within a transaction":(