Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Change the multiplexor VFS so that xTruncate is a no-op on database files. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ee1e012256ae8010b6b6c4895a74b688 |
User & Date: | dan 2011-12-12 18:55:44.020 |
Context
2011-12-12
| ||
19:48 | Fix os_unix.c so that, unless 8.3 filenames are actually in use, journal and wal file permissions are assigned correctly even if SQLITE_ENABLE_8_3_NAMES is defined. (check-in: 169e12295c user: dan tags: trunk) | |
18:55 | Change the multiplexor VFS so that xTruncate is a no-op on database files. (check-in: ee1e012256 user: dan tags: trunk) | |
18:21 | Fix for the xFileSize method of test_multiplex.c when used on a file opened with the DELETEONCLOSE flag set. (check-in: 713071c493 user: dan tags: trunk) | |
Changes
Changes to src/test_multiplex.c.
︙ | ︙ | |||
745 746 747 748 749 750 751 | if( !pGroup->bEnabled ){ sqlite3_file *pSubOpen = multiplexSubOpen(pGroup, 0, &rc, NULL); if( pSubOpen==0 ){ rc = SQLITE_IOERR_TRUNCATE; }else{ rc = pSubOpen->pMethods->xTruncate(pSubOpen, size); } | | | 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 | if( !pGroup->bEnabled ){ sqlite3_file *pSubOpen = multiplexSubOpen(pGroup, 0, &rc, NULL); if( pSubOpen==0 ){ rc = SQLITE_IOERR_TRUNCATE; }else{ rc = pSubOpen->pMethods->xTruncate(pSubOpen, size); } }else if( (pGroup->flags & SQLITE_OPEN_MAIN_DB)==0 ){ int rc2; int i; sqlite3_file *pSubOpen; sqlite3_vfs *pOrigVfs = gMultiplex.pOrigVfs; /* Real VFS */ /* delete the chunks above the truncate limit */ for(i=(int)(size / pGroup->szChunk)+1; i<pGroup->nReal; i++){ multiplexSubClose(pGroup, i, pOrigVfs); |
︙ | ︙ |
Added test/multiplex2.test.
> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | # 2010 October 29 # # The author disclaims copyright to this source code. In place of # a legal notice, here is a blessing: # # May you do good and not evil. # May you find forgiveness for yourself and forgive others. # May you share freely, never taking more than you give. # #*********************************************************************** # set testdir [file dirname $argv0] source $testdir/tester.tcl source $testdir/malloc_common.tcl source $testdir/lock_common.tcl do_multiclient_test tn { code1 { catch { sqlite3_multiplex_initialize "" 0 } } code2 { catch { sqlite3_multiplex_initialize "" 0 } } code1 { db close } code2 { db2 close } code1 { sqlite3 db test.db -vfs multiplex } code2 { sqlite3 db2 test.db -vfs multiplex } code1 { sqlite3_multiplex_control db main chunk_size [expr 1024*1024] } code2 { sqlite3_multiplex_control db2 main chunk_size [expr 1024*1024] } sql1 { CREATE TABLE t1(a, b); INSERT INTO t1 VALUES(randomblob(10), randomblob(4000)); -- 1 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 2 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 4 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 8 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 16 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 32 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 64 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 128 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 256 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 512 SELECT count(*) FROM t1; } do_test multiplex-1.$tn.1 { sql1 { SELECT count(*) FROM t1 } } 512 do_test multiplex-1.$tn.2 { sql2 { SELECT count(*) FROM t1 } } 512 sql2 { DELETE FROM t1 ; VACUUM } do_test multiplex-1.$tn.3 { sql1 { SELECT count(*) FROM t1 } } 0 sql1 { INSERT INTO t1 VALUES(randomblob(10), randomblob(4000)); -- 1 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 2 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 4 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 8 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 16 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 32 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 64 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 128 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 256 INSERT INTO t1 SELECT randomblob(10), randomblob(4000) FROM t1; -- 512 SELECT count(*) FROM t1; } do_test multiplex-1.$tn.4 { sql2 { SELECT count(*) FROM t1 } } 512 } catch { sqlite3_multiplex_shutdown } finish_test |