-C Pick\sup\sa\ssmall\sperformance\sincrease\sby\seliminating\sthe\spcacheRef()\sfunction.\s(CVS\s5609)
-D 2008-08-25T14:49:42
+C Fix\sbug\sin\sthe\spremutation\stesting\sthat\swas\scausing\smany\spermutations\sfrom\nbegin\sskipped.\s\sThere\sare\snow\s16\serrors\sreported\sby\sthe\spermutation\stest.\s(CVS\s5610)
+D 2008-08-25T17:23:29
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 689e14735f862a5553bceef206d8c13e29504e44
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F src/os_os2.c e391fc95adc744bbdcefd4d11e3066998185a0a0
F src/os_unix.c 4665cef7639dd937893c3ea076f0e8a8f215bb32
F src/os_win.c aefe9ee26430678a19a058a874e4e2bd91398142
-F src/pager.c a175ce0a026177ca24b48b2944670404bcec90d8
+F src/pager.c 67d689efa33fbca2788d006e18dd7d1a7de22487
F src/pager.h 3b9c138d2e744b9d6e61d4c2742301e3bf464864
F src/parse.y d0f76d2cb8d6883d5600dc20beb961a6022b94b8
F src/pcache.c 4883f3714503242057643a5dddbc74065def5157
F src/prepare.c c197041e0c4770672cda75e6bfe10242f885e510
F src/printf.c 785f87120589c1db672e37c6eb1087c456e6f84d
F src/random.c 5c754319d38abdd6acd74601ee0105504adc508a
-F src/resolve.c f279cfe052c3f91457de2512fa2510e4ea86b0cc
-F src/select.c 3db954ccabee38995b16013a390f15c3b07e1265
+F src/resolve.c 74725e61c9eefb597a203631d921efd9005b7a88
+F src/select.c 1042eafb5c703ed4fc80ab3c3cbdfdb74fbcf2b4
F src/shell.c d83b578a8ccdd3e0e7fef4388a0887ce9f810967
F src/sqlite.h.in 2373d1d70664f7fcd78e79af3c51792bb0a0753e
F src/sqlite3ext.h 1e3887c9bd3ae66cb599e922824b04cd0d0f2c3e
F test/pager3.test 2323bf27fd5bd887b580247e5bce500ceee994b4
F test/pageropt.test 3ee6578891baaca967f0bd349e4abfa736229e1a
F test/pagesize.test e0a8b3fe80f8b8e808d94a00734c7a18c76c407e
-F test/permutations.test 1f7ead8d56d62633b2dd00c26868db35f0b3dcdf
+F test/permutations.test 49468b8b94e66e20a43a29b805bc1811569208cf
F test/pragma.test b55931bbd5dd543e56fd942dbf4b7439619b09a6
F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47
F test/printf.test 262a5acd3158f788e9bdf7f18d718f3af32ff6ef
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P 0d61960afd35721d6d07acd75288c20d2cd6fda1
-R a45c0ea79cdddeaf5b79e95fe71c1625
-U danielk1977
-Z d37cbd289bc865902ff5dd4aff605824
+P e3840fbf0adf824941a4b9b3cac3a869f195d6f8
+R 536eabce05a14041e4591c9d085fb224
+U drh
+Z 6161148b36887e1910794505f591cf40
-e3840fbf0adf824941a4b9b3cac3a869f195d6f8
\ No newline at end of file
+4ad096bda1fc5c7b66f71ff5b32a4085c9a40574
\ No newline at end of file
** file simultaneously, or one process from reading the database while
** another is writing.
**
-** @(#) $Id: pager.c,v 1.478 2008/08/25 07:12:29 danielk1977 Exp $
+** @(#) $Id: pager.c,v 1.479 2008/08/25 17:23:29 drh Exp $
*/
#ifndef SQLITE_OMIT_DISKIO
#include "sqliteInt.h"
static int hasHotJournal(Pager *pPager, int *pExists){
sqlite3_vfs *pVfs = pPager->pVfs;
int rc = SQLITE_OK;
+ int exists;
+ int locked;
+ assert( pPager!=0 );
+ assert( pPager->useJournal );
+ assert( pPager->fd->pMethods );
*pExists = 0;
- if( pPager->useJournal && pPager->fd->pMethods ){
- int exists;
- int locked;
-
- rc = sqlite3OsAccess(pVfs, pPager->zJournal, SQLITE_ACCESS_EXISTS, &exists);
- if( rc==SQLITE_OK && exists ){
- rc = sqlite3OsCheckReservedLock(pPager->fd, &locked);
- }
-
- if( rc==SQLITE_OK && exists && !locked ){
- int nPage;
- rc = sqlite3PagerPagecount(pPager, &nPage);
- if( rc==SQLITE_OK ){
- if( nPage==0 ){
- sqlite3OsDelete(pVfs, pPager->zJournal, 0);
- }else{
- *pExists = 1;
- }
+ rc = sqlite3OsAccess(pVfs, pPager->zJournal, SQLITE_ACCESS_EXISTS, &exists);
+ if( rc==SQLITE_OK && exists ){
+ rc = sqlite3OsCheckReservedLock(pPager->fd, &locked);
+ }
+ if( rc==SQLITE_OK && exists && !locked ){
+ int nPage;
+ rc = sqlite3PagerPagecount(pPager, &nPage);
+ if( rc==SQLITE_OK ){
+ if( nPage==0 ){
+ sqlite3OsDelete(pVfs, pPager->zJournal, 0);
+ }else{
+ *pExists = 1;
}
}
}
-
return rc;
}
** resolve all identifiers by associating them with a particular
** table and column.
**
-** $Id: resolve.c,v 1.3 2008/08/25 12:14:09 drh Exp $
+** $Id: resolve.c,v 1.4 2008/08/25 17:23:29 drh Exp $
*/
#include "sqliteInt.h"
#include <stdlib.h>
struct ExprList_item *pItem;
moreToDo = 0;
pEList = pSelect->pEList;
- if( pEList==0 ){
- return 1;
- }
+ assert( pEList!=0 );
for(i=0, pItem=pOrderBy->a; i<pOrderBy->nExpr; i++, pItem++){
int iCol = -1;
Expr *pE, *pDup;
}
#endif
pEList = pSelect->pEList;
- if( pEList==0 ){
- return 0;
- }
+ assert( pEList!=0 ); /* sqlite3SelectNew() guarantees this */
for(i=0, pItem=pOrderBy->a; i<pOrderBy->nExpr; i++, pItem++){
if( pItem->iCol ){
Expr *pE;
sqlite3ExprDelete(db, pE);
pE = sqlite3ExprDup(db, pEList->a[pItem->iCol-1].pExpr);
pItem->pExpr = pE;
- if( pE && pColl && flags ){
+ if( pE && flags ){
pE->pColl = pColl;
pE->flags |= flags;
}
/* The ORDER BY term is an integer constant. Again, set the column
** number so that sqlite3ResolveOrderGroupBy() will convert the
** order-by term to a copy of the result-set expression */
- if( iCol<1 || iCol>nResult ){
+ if( iCol<1 ){
resolveOutOfRangeError(pParse, zType, i+1, nResult);
return 1;
}
sqlite3 *db; /* Database connection */
- if( p==0 ) return WRC_Continue;
+ assert( p!=0 );
if( p->selFlags & SF_Resolved ){
return WRC_Prune;
}
/* Resolve names in the result set. */
pEList = p->pEList;
- if( !pEList ) return WRC_Abort;
+ assert( pEList!=0 );
for(i=0; i<pEList->nExpr; i++){
Expr *pX = pEList->a[i].pExpr;
if( sqlite3ResolveExprNames(&sNC, pX) ){
){
Walker w;
- if( p ){
- w.xExprCallback = resolveExprStep;
- w.xSelectCallback = resolveSelectStep;
- w.pParse = pParse;
- w.u.pNC = pOuterNC;
- sqlite3WalkSelect(&w, p);
- }
+ assert( p!=0 );
+ w.xExprCallback = resolveExprStep;
+ w.xSelectCallback = resolveSelectStep;
+ w.pParse = pParse;
+ w.u.pNC = pOuterNC;
+ sqlite3WalkSelect(&w, p);
}
** This file contains C code routines that are called by the parser
** to handle SELECT statements in SQLite.
**
-** $Id: select.c,v 1.469 2008/08/22 16:29:51 drh Exp $
+** $Id: select.c,v 1.470 2008/08/25 17:23:29 drh Exp $
*/
#include "sqliteInt.h"
pNew->addrOpenEphm[0] = -1;
pNew->addrOpenEphm[1] = -1;
pNew->addrOpenEphm[2] = -1;
- if( pNew==&standin) {
+ if( db->mallocFailed ) {
clearSelect(db, pNew);
+ if( pNew!=&standin ) sqlite3DbFree(db, pNew);
pNew = 0;
}
return pNew;
#
#***********************************************************************
#
-# $Id: permutations.test,v 1.21 2008/08/21 15:54:01 danielk1977 Exp $
+# $Id: permutations.test,v 1.22 2008/08/25 17:23:29 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
# Argument processing.
#
-set ::testmode [lindex $argv 0]
-set ::testfile [lindex $argv 1]
+#puts "PERM-DEBUG: argv=$argv"
+namespace eval ::perm {
+ set testmode [lindex $::argv 0]
+ set testfile [lindex $::argv 1]
+}
set argv [lrange $argv 2 end]
+#puts "PERM-DEBUG: testmode=$::perm::testmode"
set ::permutations_presql ""
set ::permutations_test_prefix ""
-if {$::testmode eq "veryquick"} {
- set ::testmode [list persistent_journal no_journal]
+if {$::perm::testmode eq "veryquick"} {
+ set ::perm::testmode [list persistent_journal no_journal]
set ISQUICK 1
}
-if {$::testmode eq "quick"} {
- set ::testmode [list persistent_journal no_journal autovacuum_ioerr]
+if {$::perm::testmode eq "quick"} {
+ set ::perm::testmode [list persistent_journal no_journal autovacuum_ioerr]
set ISQUICK 1
}
-if {$::testmode eq "all"} {
- set ::testmode {
+if {$::perm::testmode eq "all"} {
+ set ::perm::testmode {
memsubsys1 memsubsys2 singlethread multithread onefile utf16 exclusive
persistent_journal persistent_journal_error no_journal no_journal_error
autovacuum_ioerr no_mutex_try
}
}
-if {$::testmode eq "targets"} {
+if {$::perm::testmode eq "targets"} {
puts ""
puts -nonewline "veryquick "
puts "Same as persistent_journal and no_journal"
puts -nonewline "all "
puts "Everything except autovacuum_crash"
}
+puts "PERM-DEBUG: testmode=$::perm::testmode"
set EXCLUDE {
all.test in2.test onefile.test
set options(-presql) ""
set options(-description) "no description supplied (fixme)"
array set options $args
+ #puts "PERM-DEBUG: name=$name testfile=$::perm::testfile"
+ #puts "PERM-DEBUG: [array get options]"
- if {$::testmode eq "targets"} {
+ if {$::perm::testmode eq "targets"} {
puts [format "% -20s %s" $name [string trim $options(-description)]]
return
}
- if {$::testmode ne "" && [lsearch $::testmode $name]<0} return
+ if {$::perm::testmode ne "" && [lsearch $::perm::testmode $name]<0} {
+ puts "skipping permutation test $name..."
+ return
+ }
uplevel $options(-initialize)
set ::permutations_presql $options(-presql)
foreach file $options(-include) {
- if {[lsearch $options(-exclude) $file] < 0 && (
- $::testfile eq "" || $::testfile eq $file || "$::testfile.test" eq $file
- ) } {
+ if {[lsearch $options(-exclude) $file] < 0 &&
+ ( $::perm::testfile eq "" ||
+ $::perm::testfile eq $file ||
+ "$::perm::testfile.test" eq $file )
+ } {
uplevel source $::testdir/$file
+ } else {
+ # puts "skipping file $file"
}
}
ifcapable threadsafe {
run_tests "no_mutex_try" -description {
The sqlite3_mutex_try() interface always fails
- } -initialize {
+ } -exclude [concat $EXCLUDE mutex1.test mutex2.test] \
+ -initialize {
catch {db close}
sqlite3_shutdown
install_mutex_counters 1
# End of tests
#############################################################################
-if {$::testmode eq "targets"} { puts "" ; exit }
+if {$::perm::testmode eq "targets"} { puts "" ; exit }
# Restore the [sqlite3] command.
#