Return code was being dropped because of overridden variable in OP_IsUnique. Fix this and the test logic problem that hid it. (CVS 3025)

FossilOrigin-Name: c30705a00d7d9d61fb9cb47a1019b1a186d690a7
This commit is contained in:
danielk1977 2006-01-24 13:09:33 +00:00
parent f011300000
commit f2fa8310f9
7 changed files with 39 additions and 39 deletions

@ -1,5 +1,5 @@
C Rename\ssome\svariables\sto\savoid\shiding\sothers.\sAlso\sadd\s"static"\sto\stwo\sfunction\ssignatures\sthat\swere\smissing\sit.\s(CVS\s3024)
D 2006-01-24T12:09:18
C Return\scode\swas\sbeing\sdropped\sbecause\sof\soverridden\svariable\sin\sOP_IsUnique.\sFix\sthis\sand\sthe\stest\slogic\sproblem\sthat\shid\sit.\s(CVS\s3025)
D 2006-01-24T13:09:33
F Makefile.in 53841eb72e9eeb6030a8ce28c2595a92f440fd10
F Makefile.linux-gcc 74ba0eadf88748a9ce3fd03d2a3ede2e6715baec
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
@ -48,7 +48,7 @@ F src/hash.c 8747cf51d12de46512880dfcf1b68b4e24072863
F src/hash.h 1b0c445e1c89ff2aaad9b4605ba61375af001e84
F src/insert.c 7e931b7f06afbcefcbbaab175c02eff8268db33f
F src/legacy.c 86b669707b3cefd570e34154e2f6457547d1df4f
F src/main.c 439168db0a830efd0b9e7325aff39adc5524a1b5
F src/main.c dc3fc9b02b1a022574d6e12d25abe58b93b85b1f
F src/md5.c c5fdfa5c2593eaee2e32a5ce6c6927c986eaf217
F src/os.c 59f05de8c5777c34876607114a2fbe55ae578235
F src/os.h 93035a0e3b9dd05cdd0aaef32ea28ca28e02fe78
@ -59,7 +59,7 @@ F src/os_unix.c b25eca667f926d24b542fb20378b3665feccfe2b
F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e
F src/os_win.c 566bf7b41b72556fd7dca390bceaa2769dc395e9
F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b
F src/pager.c c4d18015a4eadebe91cffe2a9e08011c134e5aa2
F src/pager.c c9fdc3f4026f22e73d8fa586c4f58e14129036bb
F src/pager.h e0acb095b3ad0bca48f2ab00c87346665643f64f
F src/parse.y 4285cd2d0f31a8db4c4d54325f88e500452fa029
F src/pragma.c 4496cc77dc35824e1c978c3d1413b8a5a4c777d3
@ -87,7 +87,7 @@ F src/update.c 14be4ba2f438919b4217085c02feff569e6cf1f2
F src/utf.c 1199766bbb0157931a83aa6eede6b6381177be64
F src/util.c 82ee598519b8193184bdeab06b51a4ffa05ad60b
F src/vacuum.c 3865673cc66acd0717ecd517f6b8fdb2a5e7924b
F src/vdbe.c bda7131d98f2a742f864f9bbbb5249f3c0c6b432
F src/vdbe.c 799e6280aef25bae55d2da21b5a6dbdda5e76e36
F src/vdbe.h 8729a4ee16ff9aeab2af9667df3cf300ff978e13
F src/vdbeInt.h eb3f86ab08ef11635bc78eb88c3ff13f923c233b
F src/vdbeapi.c dcb2636f49b4807e34960d52a2fc257b3a751140
@ -172,7 +172,7 @@ F test/insert2.test 5a20e1ace5fa0800b58d28284212290189b49aed
F test/insert3.test 0096bd9766f94f4fa06ef712658e590b782cb44f
F test/interrupt.test cd24dc5bedd02325be4bfa5d6209fae01c465157
F test/intpkey.test af4fd826c4784ec5c93b444de07adea0254d0d30
F test/ioerr.test 35637957d7d5c6385bd94e8a6f067b5016219c03
F test/ioerr.test 42581999ad54d5afe4d703550b1faf308e8cb53c
F test/join.test db3802739fb695bdfa2e88805e3d64ec5ffbebd1
F test/join2.test f2171c265e57ee298a27e57e7051d22962f9f324
F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0
@ -237,7 +237,7 @@ F test/table.test 6dc0dfa44dd429520e0e5a0c5e55025f730e9403
F test/tableapi.test 6a66d58b37d46dc0f2b3c7d4bd2617d209399bd1
F test/tclsqlite.test 96f5dbba15df0523e889b8d892f152c2f60b8efb
F test/temptable.test c36f3e5a94507abb64f7ba23deeb4e1a8a8c3821
F test/tester.tcl 0a939262ccb0b87449f98d8780396a4c293831b0
F test/tester.tcl 66a4bfa61a05e08ea523ef077e7ad0eab090c327
F test/thread1.test 776c9e459b75ba905193b351926ac4019b049f35
F test/thread2.test 6d7b30102d600f51b4055ee3a5a19228799049fb
F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b
@ -344,7 +344,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
P 50964ef9b0159bfdcd7eae88b0806957cab184dc
R fc67d17ec10c28fa4fe646ce8c0e9586
P d86f18a4277ebffb644ba2e574e0b697c8bbf8e4
R 7dfccdc93457a7fd816b98a21dcb1bda
U danielk1977
Z 38f8621f1508c75b5e0809f898b0dbd0
Z aa3b02a91bab4996b62f927ed568dabe

@ -1 +1 @@
d86f18a4277ebffb644ba2e574e0b697c8bbf8e4
c30705a00d7d9d61fb9cb47a1019b1a186d690a7

@ -14,7 +14,7 @@
** other files are for internal use by SQLite and should not be
** accessed by users of the library.
**
** $Id: main.c,v 1.329 2006/01/19 17:42:51 drh Exp $
** $Id: main.c,v 1.330 2006/01/24 13:09:33 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "os.h"
@ -1088,23 +1088,21 @@ int sqlite3Corrupt(void){
*/
int sqlite3_enable_shared_cache(int enable){
ThreadData *pTd = sqlite3ThreadData();
if( !pTd ){
return SQLITE_NOMEM;
}
/* It is only legal to call sqlite3_enable_shared_cache() when there
** are no currently open b-trees that were opened by the calling thread.
** This condition is only easy to detect if the shared-cache were
** previously enabled (and is being disabled).
*/
if( pTd->pBtree && !enable ){
assert( pTd->useSharedData );
return SQLITE_MISUSE;
}
if( pTd ){
/* It is only legal to call sqlite3_enable_shared_cache() when there
** are no currently open b-trees that were opened by the calling thread.
** This condition is only easy to detect if the shared-cache were
** previously enabled (and is being disabled).
*/
if( pTd->pBtree && !enable ){
assert( pTd->useSharedData );
return SQLITE_MISUSE;
}
pTd->useSharedData = enable;
sqlite3ReleaseThreadData();
return SQLITE_OK;
pTd->useSharedData = enable;
sqlite3ReleaseThreadData();
}
return sqlite3ApiExit(0, SQLITE_OK);
}
#endif

@ -18,7 +18,7 @@
** file simultaneously, or one process from reading the database while
** another is writing.
**
** @(#) $Id: pager.c,v 1.255 2006/01/24 12:09:19 danielk1977 Exp $
** @(#) $Id: pager.c,v 1.256 2006/01/24 13:09:33 danielk1977 Exp $
*/
#ifndef SQLITE_OMIT_DISKIO
#include "sqliteInt.h"
@ -1778,9 +1778,10 @@ void enable_simulated_io_errors(void){
void sqlite3pager_read_fileheader(Pager *pPager, int N, unsigned char *pDest){
memset(pDest, 0, N);
if( MEMDB==0 ){
disable_simulated_io_errors();
sqlite3OsSeek(pPager->fd, 0);
sqlite3OsRead(pPager->fd, pDest, N);
clear_simulated_io_error();
enable_simulated_io_errors();
}
}

@ -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.538 2006/01/24 12:09:20 danielk1977 Exp $
** $Id: vdbe.c,v 1.539 2006/01/24 13:09:33 danielk1977 Exp $
*/
#include "sqliteInt.h"
#include "os.h"
@ -2971,7 +2971,7 @@ case OP_IsUnique: { /* no-push */
assert( pCx!=0 );
pCrsr = pCx->pCursor;
if( pCrsr!=0 ){
int res, rc;
int res;
i64 v; /* The record number on the P1 entry that matches K */
char *zKey; /* The value of K */
int nKey; /* Number of bytes in K */

@ -15,7 +15,7 @@
# The tests in this file use special facilities that are only
# available in the SQLite test fixture.
#
# $Id: ioerr.test,v 1.24 2006/01/23 16:25:22 drh Exp $
# $Id: ioerr.test,v 1.25 2006/01/24 13:09:33 danielk1977 Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
@ -44,7 +44,7 @@ do_ioerr_test ioerr-1 -sqlprep {
COMMIT;
SELECT * FROM t1;
DELETE FROM t1 WHERE a<100;
} -exclude [expr [string match [execsql {pragma auto_vacuum}] 1] ? 8 : 0]
} -exclude [expr [string match [execsql {pragma auto_vacuum}] 1] ? 4 : 0]
# Test for IO errors during a VACUUM.
#
@ -75,7 +75,7 @@ ifcapable vacuum {
} -sqlbody {
VACUUM;
} -exclude [list \
1 [expr [string match [execsql {pragma auto_vacuum}] 1]?12:-1]]
1 [expr [string match [execsql {pragma auto_vacuum}] 1]?9:-1]]
}
do_ioerr_test ioerr-3 -tclprep {
@ -120,7 +120,7 @@ do_ioerr_test ioerr-4 -tclprep {
# reason as in test cases ioerr-1.XXX
set ex ""
if {[string match [execsql {pragma auto_vacuum}] 1]} {
set ex [list 8 17]
set ex [list 4 17]
}
do_ioerr_test ioerr-5 -sqlprep {
ATTACH 'test2.db' AS test2;

@ -11,7 +11,7 @@
# This file implements some common TCL routines used for regression
# testing the SQLite library
#
# $Id: tester.tcl,v 1.63 2006/01/21 12:08:55 danielk1977 Exp $
# $Id: tester.tcl,v 1.64 2006/01/24 13:09:33 danielk1977 Exp $
# Make sure tclsqlite3 was compiled correctly. Abort now with an
# error message if not.
@ -382,9 +382,10 @@ proc do_ioerr_test {testname args} {
set r [catch $::ioerrorbody msg]
set ::go [expr {$::sqlite_io_error_pending<=0}]
set s [expr $::sqlite_io_error_hit==0]
set ::sqlite_io_error_hit 0
# puts "$::sqlite_io_error_pending $r $msg"
# puts "r=$r s=$s msg=\"$msg\""
expr { ($s && !$r) || (!$s && $r) }
# puts "r=$r s=$s go=$::go msg=\"$msg\""
expr { ($s && !$r && !$::go) || (!$s && $r && $::go) }
# expr {$::sqlite_io_error_pending>0 || $r!=0}
} {1}