From: danielk1977 Date: Mon, 16 Jan 2006 15:14:27 +0000 (+0000) Subject: Fix some of the issues raised in #1615. (CVS 2959) X-Git-Tag: version-3.6.10~3208 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bab45c647d2491f652a4bc8d8199727ba5a24ede;p=thirdparty%2Fsqlite.git Fix some of the issues raised in #1615. (CVS 2959) FossilOrigin-Name: 0d5d83bcbd65dd7ae968909acfee075185e49c38 --- diff --git a/manifest b/manifest index 52d9b3099e..b2c539e3e4 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Correctly\shandle\smalloc()\sfailure\sin\sGenericMalloc()\sand\sGenericRealloc().\sFix\sfor\s#1617.\s(CVS\s2958) -D 2006-01-16T14:29:06 +C Fix\ssome\sof\sthe\sissues\sraised\sin\s#1615.\s(CVS\s2959) +D 2006-01-16T15:14:27 F Makefile.in ab3ffd8d469cef4477257169b82810030a6bb967 F Makefile.linux-gcc aee18d8a05546dcf1888bd4547e442008a49a092 F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -34,9 +34,9 @@ F src/alter.c 4139c8f1d0f12b1759e767b1d09dd594e2b5ac1d F src/analyze.c 7d2b7ab9a9c2fd6e55700f69064dfdd3e36d7a8a F src/attach.c d4b9d8bd71d72409720946355be41cafb6c09079 F src/auth.c 9ae84d2d94eb96195e04515715e08e85963e96c2 -F src/btree.c a4c147937df5ab7d18cf8da67eb766a00c0be1b2 +F src/btree.c fcf6aec3b6a6df8130213a45f7b543e0a025be9d F src/btree.h 5663c4f43e8521546ccebc8fc95acb013b8f3184 -F src/build.c 206c891028158668691f27bcbf7c3c4f15248a94 +F src/build.c 539b5c6e21aa633e480ff97706f331baef1a859a F src/callback.c ba3e6cc7a6beb562e7a66f92e26fabcb21aab1e2 F src/complete.c df1681cef40dec33a286006981845f87b194e7a4 F src/date.c 5f5850c6b5da68fdc47d124573715ba948c9d8e0 @@ -59,7 +59,7 @@ F src/os_unix.c 7daa1720d46bbc31c6138462b35876650eb1885e F src/os_unix.h 5768d56d28240d3fe4537fac08cc85e4fb52279e F src/os_win.c cd4ca2753aeaad11f5c9b9b6ef28752f45ed4529 F src/os_win.h 41a946bea10f61c158ce8645e7646b29d44f122b -F src/pager.c 02a30687533da39851f7776ae49671684333b248 +F src/pager.c a8ba14f898eaaa529d5463c1a6782e86abfe6cdd F src/pager.h e0acb095b3ad0bca48f2ab00c87346665643f64f F src/parse.y 83df51fea35f68f7e07384d75dce83d1ed30434c F src/pragma.c 4496cc77dc35824e1c978c3d1413b8a5a4c777d3 @@ -70,7 +70,7 @@ F src/select.c 28d449c7762dd580aaba49a9c6c16e93ca951e49 F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96 F src/shell.c 66b073375efbdee19045e7e0cd38b85f9aff71da F src/sqlite.h.in 492580f7e3ff71eb43193eb7bb98e2d549889ce3 -F src/sqliteInt.h 940bb605c7ac9240934f0b866f90be899f5261fc +F src/sqliteInt.h 730d071c5272726b5e507ef6d6dd14ccdb2744ae F src/table.c 486dcfce532685b53b5a2b5da8bba0ded6fb2316 F src/tclsqlite.c d650bea0248fc0a310ddc2cb94273a3a5021fddf F src/test1.c d21e94ea95e76d8e838792806937332c5693dbf0 @@ -87,11 +87,11 @@ F src/update.c 261d75c702c2852d1a64274d7c414485e6f2d177 F src/utf.c 5ab8ca05d4e9ec81174b010f01ab12a232f0087d F src/util.c 0d0dc8279d4d0f43eb5d02313b77ab0ffa70f96d F src/vacuum.c 21a3c7f6f7be86bb1182fbc3df416ad702435b9e -F src/vdbe.c 4db1a9000e238e068de56108f5a9708cd4124d55 +F src/vdbe.c 3db9bfc86e71dc0758524fb82cfcfd4c30e92716 F src/vdbe.h 8729a4ee16ff9aeab2af9667df3cf300ff978e13 F src/vdbeInt.h 5451cf71f229e366ac543607c0a17f36e5737ea9 F src/vdbeapi.c cac3f5bfb8ab9864ce5cea35eaae3d0d2efdc8ac -F src/vdbeaux.c bfad18ca5d0372a34147ed98ac268b75ccb6858d +F src/vdbeaux.c 723e0ec773aeec53e9448b2ac5b136677e64ece0 F src/vdbefifo.c 9efb94c8c3f4c979ebd0028219483f88e57584f5 F src/vdbemem.c dd08a0eea4868ac4a2d91fdec32424308b1db772 F src/where.c 9fd58a8f5525d036a088c92bb14e2885c2243bc8 @@ -107,7 +107,7 @@ F test/attach.test dae07fa1554b618b9cc4c7bc349b3bc1a532180e F test/attach2.test 0e6a7c54343c85dd877a1e86073a05176043ed40 F test/attach3.test 63013383adc4380af69779f34f4af19bd49f7cbe F test/attachmalloc.test cdb26c42850f04698377ccec05f5fa89d987837c -F test/auth.test 487fdd95cf1f765815455012e7338d9019bf8852 +F test/auth.test 11f73157a2c19e3f376598aaac9c5572c33e12cb F test/autoinc.test 60005a676e3e4e17dfa9dbd08aa0b76587ff97e3 F test/autovacuum.test 9471d58a08b14dc0d2c15b87583c46d1744343d6 F test/autovacuum_crash.test 05a63b8805b20cfba7ace82856ce4ccdda075a31 @@ -225,7 +225,7 @@ F test/select5.test 07a90ab3c7e3f0a241a9cdea1d997b2c8a89ff0b F test/select6.test f459a19bdac0501c4d3eb1a4df4b7a76f1bb8ad4 F test/select7.test 1bf795b948c133a15a2a5e99d3270e652ec58ce6 F test/server1.test e328b8e641ba8fe9273132cfef497383185dc1f5 -F test/shared.test e392ddbf1d2cc95b4e48a7ab0a65c891ad7388c0 +F test/shared.test 6b686dcc6a51fd0a1fb2779f4621469d243de8df F test/sort.test 0e4456e729e5a92a625907c63dcdedfbe72c5dc5 F test/subquery.test e6de53332c0301b3cfa34edc3f3cd5fa1e859efd F test/subselect.test 2d13fb7f450db3595adcdd24079a0dd1d2d6abc2 @@ -341,7 +341,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P 9927522923558348a846e033b92100c0ed4ee556 -R 57c562a59b5c5138ad538109f4517a6c +P 9dfc4a880b49869e945d6a19e63fcf6dc94412ad +R 400c66cf0832b4adf252fe60cc985964 U danielk1977 -Z 5c54f7e1a11402994e13dc599beddfc4 +Z 92d6dfb0922d80ce9fab88a62350686e diff --git a/manifest.uuid b/manifest.uuid index dd6ae1ac44..4daaf9dda9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9dfc4a880b49869e945d6a19e63fcf6dc94412ad \ No newline at end of file +0d5d83bcbd65dd7ae968909acfee075185e49c38 \ No newline at end of file diff --git a/src/btree.c b/src/btree.c index 6bc090ac2e..8674e9c6ed 100644 --- a/src/btree.c +++ b/src/btree.c @@ -9,7 +9,7 @@ ** May you share freely, never taking more than you give. ** ************************************************************************* -** $Id: btree.c,v 1.298 2006/01/15 11:39:18 danielk1977 Exp $ +** $Id: btree.c,v 1.299 2006/01/16 15:14:27 danielk1977 Exp $ ** ** This file implements a external (disk-based) database using BTrees. ** For a detailed discussion of BTrees, refer to @@ -3347,10 +3347,10 @@ int sqlite3BtreeMoveto(BtCursor *pCur, const void *pKey, i64 nKey, int *pRes){ } pCell = findCell(pPage, pCur->idx) + pPage->childPtrSize; if( pPage->hasData ){ - int dummy; + u32 dummy; pCell += getVarint32(pCell, &dummy); } - getVarint(pCell, &nCellKey); + getVarint(pCell, (u64 *)&nCellKey); if( nCellKeynKey ){ diff --git a/src/build.c b/src/build.c index 1f64a035ba..f54c8d9338 100644 --- a/src/build.c +++ b/src/build.c @@ -22,7 +22,7 @@ ** COMMIT ** ROLLBACK ** -** $Id: build.c,v 1.380 2006/01/13 18:06:40 danielk1977 Exp $ +** $Id: build.c,v 1.381 2006/01/16 15:14:28 danielk1977 Exp $ */ #include "sqliteInt.h" #include @@ -1547,10 +1547,14 @@ void sqlite3EndTable( #ifndef SQLITE_OMIT_ALTERTABLE if( !p->pSelect ){ - const unsigned char *zName = pParse->sNameToken.z; + const char *zName = (const char *)pParse->sNameToken.z; + int nName; assert( !pSelect && pCons && pEnd ); - if( pCons->z==0 ) pCons = pEnd; - p->addColOffset = 13 + sqlite3utf8CharLen(zName, pCons->z - zName); + if( pCons->z==0 ){ + pCons = pEnd; + } + nName = (const char *)pCons->z - zName; + p->addColOffset = 13 + sqlite3utf8CharLen(zName, nName); } #endif } @@ -2362,7 +2366,7 @@ void sqlite3CreateIndex( ); if( sqlite3ThreadDataReadOnly()->mallocFailed ) goto exit_create_index; pIndex->aiColumn = (int *)(&pIndex[1]); - pIndex->aiRowEst = (int *)(&pIndex->aiColumn[nCol]); + pIndex->aiRowEst = (unsigned *)(&pIndex->aiColumn[nCol]); pIndex->azColl = (char **)(&pIndex->aiRowEst[nCol+1]); pIndex->aSortOrder = (u8 *)(&pIndex->azColl[nCol]); pIndex->zName = (char *)(&pIndex->aSortOrder[nCol]); @@ -3154,7 +3158,7 @@ void sqlite3Reindex(Parse *pParse, Token *pName1, Token *pName2){ assert( pName1->z ); pColl = sqlite3FindCollSeq(db, ENC(db), (char*)pName1->z, pName1->n, 0); if( pColl ){ - char *z = sqliteStrNDup(pName1->z, pName1->n); + char *z = sqliteStrNDup((const char *)pName1->z, pName1->n); if( z ){ reindexDatabases(pParse, z); sqliteFree(z); diff --git a/src/pager.c b/src/pager.c index 7db9b50599..7034e10d8a 100644 --- a/src/pager.c +++ b/src/pager.c @@ -18,7 +18,7 @@ ** file simultaneously, or one process from reading the database while ** another is writing. ** -** @(#) $Id: pager.c,v 1.239 2006/01/16 12:46:41 danielk1977 Exp $ +** @(#) $Id: pager.c,v 1.240 2006/01/16 15:14:28 danielk1977 Exp $ */ #ifndef SQLITE_OMIT_DISKIO #include "sqliteInt.h" @@ -429,7 +429,7 @@ static void put32bits(char *ac, u32 val){ ** on success or an error code is something goes wrong. */ static int write32bits(OsFile *fd, u32 val){ - unsigned char ac[4]; + char ac[4]; put32bits(ac, val); return sqlite3OsWrite(fd, ac, 4); } @@ -439,8 +439,8 @@ static int write32bits(OsFile *fd, u32 val){ ** 'p' at offset 'offset'. */ static void store32bits(u32 val, PgHdr *p, int offset){ - unsigned char *ac; - ac = &((unsigned char*)PGHDR_TO_DATA(p))[offset]; + char *ac; + ac = &((char*)PGHDR_TO_DATA(p))[offset]; put32bits(ac, val); } diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 5a514df826..7d4d0a8b34 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -11,7 +11,7 @@ ************************************************************************* ** Internal interface definitions for SQLite. ** -** @(#) $Id: sqliteInt.h,v 1.468 2006/01/16 11:29:20 danielk1977 Exp $ +** @(#) $Id: sqliteInt.h,v 1.469 2006/01/16 15:14:28 danielk1977 Exp $ */ #ifndef _SQLITEINT_H_ #define _SQLITEINT_H_ @@ -1754,7 +1754,7 @@ KeyInfo *sqlite3IndexKeyinfo(Parse *, Index *); #endif void sqlite3MallocClearFailed(); -#ifndef SQLITE_MEMDEBUG +#ifdef NDEBUG #define sqlite3MallocDisallow() #define sqlite3MallocAllow() #else diff --git a/src/vdbe.c b/src/vdbe.c index 381245589e..148783b38e 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.530 2006/01/15 14:11:49 danielk1977 Exp $ +** $Id: vdbe.c,v 1.531 2006/01/16 15:14:28 danielk1977 Exp $ */ #include "sqliteInt.h" #include "os.h" @@ -2022,7 +2022,7 @@ case OP_Column: { zData = sMem.z; } zEndHdr = (u8 *)zData + offset; - zIdx = zData + (int)zIdx; + zIdx = (u8 *)zData + (int)zIdx; /* Scan the header and use it to fill in the aType[] and aOffset[] ** arrays. aType[i] will contain the type integer for the i-th diff --git a/src/vdbeaux.c b/src/vdbeaux.c index dfe80ecb8a..aadb4f7270 100644 --- a/src/vdbeaux.c +++ b/src/vdbeaux.c @@ -440,11 +440,11 @@ void sqlite3VdbeChangeP3(Vdbe *p, int addr, const char *zP3, int n){ pKeyInfo = sqliteMallocRaw( nByte ); pOp->p3 = (char*)pKeyInfo; if( pKeyInfo ){ - char *aSortOrder; + unsigned char *aSortOrder; memcpy(pKeyInfo, zP3, nByte); aSortOrder = pKeyInfo->aSortOrder; if( aSortOrder ){ - pKeyInfo->aSortOrder = (char*)&pKeyInfo->aColl[nField]; + pKeyInfo->aSortOrder = (unsigned char*)&pKeyInfo->aColl[nField]; memcpy(pKeyInfo->aSortOrder, aSortOrder, nField); } pOp->p3type = P3_KEYINFO; diff --git a/test/auth.test b/test/auth.test index b5f8dcf1c5..a328a8c1e2 100644 --- a/test/auth.test +++ b/test/auth.test @@ -12,7 +12,7 @@ # focus of this script is testing the ATTACH and DETACH commands # and related functionality. # -# $Id: auth.test,v 1.30 2006/01/13 13:55:45 drh Exp $ +# $Id: auth.test,v 1.31 2006/01/16 15:14:28 danielk1977 Exp $ # set testdir [file dirname $argv0] @@ -1768,11 +1768,12 @@ ifcapable tempdb { do_test auth-1.270 { execsql {SELECT name FROM sqlite_temp_master WHERE type='table'} } {t1x} + + do_test auth-1.271 { + set authargs + } {temp t1x {} {}} } ;# ifcapable altertable - do_test auth-1.271 { - set authargs - } {temp t1x {} {}} } else { db authorizer {} db eval { diff --git a/test/shared.test b/test/shared.test index 169932c407..3f82072bf6 100644 --- a/test/shared.test +++ b/test/shared.test @@ -9,7 +9,7 @@ # #*********************************************************************** # -# $Id: shared.test,v 1.14 2006/01/16 12:46:41 danielk1977 Exp $ +# $Id: shared.test,v 1.15 2006/01/16 15:14:29 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -24,17 +24,22 @@ set ::enable_shared_cache [sqlite3_enable_shared_cache 1] foreach av [list 0 1] { -ifcapable !autovacuum { - if {$av} break +# Open the database connection and execute the auto-vacuum pragma +file delete -force test.db +sqlite3 db test.db + +ifcapable autovacuum { + do_test shared-[expr $av+1].1.0 { + execsql "pragma auto_vacuum=$::av" + execsql {pragma auto_vacuum} + } "$av" +} else { + if {$av} { + db close + break + } } -# Open the database connection and execute the auto-vacuum pragma -do_test shared-$av.1.0 { - file delete -force test.db - sqlite3 db test.db - execsql "pragma auto_vacuum=$::av" - execsql {pragma auto_vacuum} -} "$av" incr av # Test organization: @@ -496,7 +501,6 @@ do_test shared-$av.7.1 { sqlite3 db test.db sqlite3 db2 test.db execsql { - PRAGMA auto_vacuum = 1; BEGIN; CREATE TABLE t1(a PRIMARY KEY, b); CREATE TABLE t2(a PRIMARY KEY, b); @@ -514,10 +518,7 @@ do_test shared-$av.7.1 { INSERT INTO t2 SELECT * FROM t1; COMMIT; } - execsql { - PRAGMA auto_vacuum; - } -} {1} +} {} do_test shared-$av.7.2 { # This test case deletes the contents of table t1 (the one at the start of # the file) while many cursors are open on table t2 and it's index. All of