-C Disable\ssome\svery\sexpensive\sasserts\sin\spcache.c\sthat\sare\stoo\sslow\sfor\sall.test.\s(CVS\s5616)
-D 2008-08-26T19:08:00
+C All\sthe\spage_size\spragma\sto\schange\sthe\spage\ssize\son\sa\snew\s:memory:\sdatabase,\nbut\snot\sa\svacuumed\s:memory:\sdatabase.\s\sTicket\s#3335\s(CVS\s5617)
+D 2008-08-26T21:07:27
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 9dfaca6cd443228326b1837fbb712b9cbde9a0e0
+F src/pager.c 66836244eac6b1a46e8c26e3dd3c143031bf28e5
F src/pager.h 3b9c138d2e744b9d6e61d4c2742301e3bf464864
F src/parse.y d0f76d2cb8d6883d5600dc20beb961a6022b94b8
F src/pcache.c 006714ad89db3c488526246e6ed6b130e457f01b
F src/update.c f2cf6f00d542956bd49ba4b9815c2900d9225bf2
F src/utf.c c63e6f69082f85c19ab88d62dedaf91d71ac1a50
F src/util.c afe659ccc05d1f8af9e8631dabfec3ee3a7144af
-F src/vacuum.c a5b10ae21ffbb73c79b7fa17e2ff40dc8ff33440
+F src/vacuum.c fd77433d0c26d3ff1eb96eab017a1787ac5aa642
F src/vdbe.c adcc179a31d71466b7b4f20ab77555e1e137bfe5
F src/vdbe.h 41c99aaad9167c1b5431993db446de74b2f71fc3
F src/vdbeInt.h b48c74d86a9fb62b707a3186ccca76bb32f1c6be
F test/pager2.test 070983b89a308adaba525a2f9c1ba0592c72fa3d
F test/pager3.test 2323bf27fd5bd887b580247e5bce500ceee994b4
F test/pageropt.test 3ee6578891baaca967f0bd349e4abfa736229e1a
-F test/pagesize.test e0a8b3fe80f8b8e808d94a00734c7a18c76c407e
+F test/pagesize.test 0d9ff3fedfce6e5ffe8fa7aca9b6d3433a2e843b
F test/permutations.test cd043a0e8eb1487aa8486c5d9b75ad7a88128041
F test/pragma.test b55931bbd5dd543e56fd942dbf4b7439619b09a6
F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47
F test/utf16align.test 7360e84472095518c56746f76b1f9d4dce99fb4d
F test/vacuum.test 0bc75ee74ab9c69322d6563aa2287375697e630b
F test/vacuum2.test e7c5f5bf5e1f2266ca668d420393820cf501fdfc
-F test/vacuum3.test 54a7152f004fb1647702c2f7be9a7e7abfafd70e
+F test/vacuum3.test f39ad1428347c5808cd2da7578c470f186a4d0ce
F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102
F test/veryquick.test e265401afefa994cdf2fe4b6f286b1e87c2f9b9d
F test/view.test 7fba28a47f76541f6aea9542f62f3412e3519bad
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P 9e511e161bcb077450d31fca5dd20c2557f103b3
-R 1ce47647904dad33d524c97e4b2f240b
-U danielk1977
-Z 36ed8c7bfd4a032646271d9bbcb5d47b
+P 555dad900fad874099556d44c464ea9f64687ca0
+R 13266d9013275d3da810529c8b3c4107
+U drh
+Z 5391d7f9c881bbaeba1d5a1fec437229
-555dad900fad874099556d44c464ea9f64687ca0
\ No newline at end of file
+226a9056783247679fcf442e10807a1f2707f463
\ No newline at end of file
** file simultaneously, or one process from reading the database while
** another is writing.
**
-** @(#) $Id: pager.c,v 1.480 2008/08/26 18:05:48 danielk1977 Exp $
+** @(#) $Id: pager.c,v 1.481 2008/08/26 21:07:27 drh Exp $
*/
#ifndef SQLITE_OMIT_DISKIO
#include "sqliteInt.h"
u16 pageSize = *pPageSize;
assert( pageSize==0 || (pageSize>=512 && pageSize<=SQLITE_MAX_PAGE_SIZE) );
if( pageSize && pageSize!=pPager->pageSize
- && !pPager->memDb && sqlite3PcacheRefCount(pPager->pPCache)==0
+ && (pPager->memDb==0 || pPager->dbSize==0)
+ && sqlite3PcacheRefCount(pPager->pPCache)==0
){
char *pNew = (char *)sqlite3PageMalloc(pageSize);
if( !pNew ){
}else{
pager_reset(pPager);
pPager->pageSize = pageSize;
- setSectorSize(pPager);
+ if( !pPager->memDb ) setSectorSize(pPager);
sqlite3PageFree(pPager->pTmpSpace);
pPager->pTmpSpace = pNew;
sqlite3PcacheSetPageSize(pPager->pPCache, pageSize);
*/
int sqlite3PagerSync(Pager *pPager){
int rc;
- rc = sqlite3OsSync(pPager->fd, pPager->sync_flags);
+ if( MEMDB ){
+ rc = SQLITE_OK;
+ }else{
+ rc = sqlite3OsSync(pPager->fd, pPager->sync_flags);
+ }
return rc;
}
** Most of the code in this file may be omitted by defining the
** SQLITE_OMIT_VACUUM macro.
**
-** $Id: vacuum.c,v 1.82 2008/08/23 16:17:56 danielk1977 Exp $
+** $Id: vacuum.c,v 1.83 2008/08/26 21:07:27 drh Exp $
*/
#include "sqliteInt.h"
#include "vdbeInt.h"
int sqlite3RunVacuum(char **pzErrMsg, sqlite3 *db){
int rc = SQLITE_OK; /* Return code from service routines */
Btree *pMain; /* The database being vacuumed */
+ Pager *pMainPager; /* Pager for database being vacuumed */
Btree *pTemp; /* The temporary database we vacuum into */
char *zSql = 0; /* SQL statements */
int saved_flags; /* Saved value of the db->flags */
int saved_nChange; /* Saved value of db->nChange */
int saved_nTotalChange; /* Saved value of db->nTotalChange */
Db *pDb = 0; /* Database to detach at end of vacuum */
+ int isMemDb; /* True is vacuuming a :memory: database */
int nRes;
/* Save the current value of the write-schema flag before setting it. */
goto end_of_vacuum;
}
pMain = db->aDb[0].pBt;
+ pMainPager = sqlite3BtreePager(pMain);
+ isMemDb = sqlite3PagerFile(pMainPager)->pMethods==0;
/* Attach the temporary database as 'vacuum_db'. The synchronous pragma
** can be set to 'off' for this file, as it is not recovered if a crash
#endif
if( sqlite3BtreeSetPageSize(pTemp, sqlite3BtreeGetPageSize(pMain), nRes)
- || sqlite3BtreeSetPageSize(pTemp, db->nextPagesize, nRes)
+ || (!isMemDb && sqlite3BtreeSetPageSize(pTemp, db->nextPagesize, nRes))
|| db->mallocFailed
){
rc = SQLITE_NOMEM;
# This file implements regression tests for SQLite library.
# This file implements tests for the page_size PRAGMA.
#
-# $Id: pagesize.test,v 1.12 2007/04/06 21:42:22 drh Exp $
+# $Id: pagesize.test,v 1.13 2008/08/26 21:07:27 drh Exp $
set testdir [file dirname $argv0]
if {[info exists SQLITE_MAX_PAGE_SIZE]
&& $SQLITE_MAX_PAGE_SIZE<$PGSZ} continue
ifcapable memorydb {
- do_test pagesize-2.$PGSZ.0 {
+ do_test pagesize-2.$PGSZ.0.1 {
db close
sqlite3 db :memory:
execsql "PRAGMA page_size=$PGSZ;"
execsql {PRAGMA page_size}
- } 1024
+ } $PGSZ
+ do_test pagesize-2.$PGSZ.0.2 {
+ execsql {CREATE TABLE t1(x UNIQUE, y UNIQUE, z UNIQUE)}
+ execsql {PRAGMA page_size}
+ } $PGSZ
+ do_test pagesize-2.$PGSZ.0.3 {
+ execsql {
+ INSERT INTO t1 VALUES(1,2,3);
+ INSERT INTO t1 VALUES(2,3,4);
+ SELECT * FROM t1;
+ }
+ } {1 2 3 2 3 4}
}
do_test pagesize-2.$PGSZ.1 {
db close
# focus of this file is changing the database page size using a
# VACUUM statement.
#
-# $Id: vacuum3.test,v 1.8 2008/08/23 16:17:56 danielk1977 Exp $
+# $Id: vacuum3.test,v 1.9 2008/08/26 21:07:27 drh Exp $
set testdir [file dirname $argv0]
source $testdir/tester.tcl
execsql { SELECT * FROM abc } db2
} {1 2 3 4 5 6}
+# Unable to change the page-size of an in-memory using vacuum.
db2 close
+sqlite3 db2 :memory:
+do_test vacuum3-5.1 {
+ db2 eval {
+ CREATE TABLE t1(x);
+ INSERT INTO t1 VALUES(1234);
+ PRAGMA page_size=4096;
+ VACUUM;
+ SELECT * FROM t1;
+ }
+} {1234}
+do_test vacuum3-5.2 {
+ db2 eval {
+ PRAGMA page_size
+ }
+} {1024}
set create_database_sql {
BEGIN;