Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Increase test coverage of bitvec.c slightly. Fix the line length on a comment in bitvec.c. (CVS 6432) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
ca3aa3ba7d751be1c2bcd100a203cd9c |
User & Date: | drh 2009-04-01 23:49:04.000 |
Context
2009-04-02
| ||
09:07 | Enforce the run-time sqlite3_limit() length limit on zeroblob(), not just the compile-time SQLITE_MAX_LENGTH limit. (CVS 6433) (check-in: a04f9e7959 user: drh tags: trunk) | |
2009-04-01
| ||
23:49 | Increase test coverage of bitvec.c slightly. Fix the line length on a comment in bitvec.c. (CVS 6432) (check-in: ca3aa3ba7d user: drh tags: trunk) | |
23:09 | Mark untestable branches of memjournal.c as such. Reduce the size of a single block allocation to a power of two. Reenable the inmemory_journal permutation test. (CVS 6431) (check-in: 05c182a5db user: drh tags: trunk) | |
Changes
Changes to src/bitvec.c.
︙ | ︙ | |||
30 31 32 33 34 35 36 | ** Clear operations are exceedingly rare. There are usually between ** 5 and 500 set operations per Bitvec object, though the number of sets can ** sometimes grow into tens of thousands or larger. The size of the ** Bitvec object is the number of pages in the database file at the ** start of a transaction, and is thus usually less than a few thousand, ** but can be as large as 2 billion for a really big database. ** | | | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | ** Clear operations are exceedingly rare. There are usually between ** 5 and 500 set operations per Bitvec object, though the number of sets can ** sometimes grow into tens of thousands or larger. The size of the ** Bitvec object is the number of pages in the database file at the ** start of a transaction, and is thus usually less than a few thousand, ** but can be as large as 2 billion for a really big database. ** ** @(#) $Id: bitvec.c,v 1.14 2009/04/01 23:49:04 drh Exp $ */ #include "sqliteInt.h" /* Size of the Bitvec structure in bytes. */ #define BITVEC_SZ 512 /* Round the union size down to the nearest pointer boundary, since that's how |
︙ | ︙ | |||
90 91 92 93 94 95 96 | ** values between 1 and iDivisor. apSub[1] holds values between ** iDivisor+1 and 2*iDivisor. apSub[N] holds values between ** N*iDivisor+1 and (N+1)*iDivisor. Each subbitmap is normalized ** to hold deal with values between 1 and iDivisor. */ struct Bitvec { u32 iSize; /* Maximum bit index. Max iSize is 4,294,967,296. */ | | | > | 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 | ** values between 1 and iDivisor. apSub[1] holds values between ** iDivisor+1 and 2*iDivisor. apSub[N] holds values between ** N*iDivisor+1 and (N+1)*iDivisor. Each subbitmap is normalized ** to hold deal with values between 1 and iDivisor. */ struct Bitvec { u32 iSize; /* Maximum bit index. Max iSize is 4,294,967,296. */ u32 nSet; /* Number of bits that are set - only valid for aHash ** element. Max is BITVEC_NINT. For BITVEC_SZ of 512, ** this would be 125. */ u32 iDivisor; /* Number of bits handled by each apSub[] entry. */ /* Should >=0 for apSub element. */ /* Max iDivisor is max(u32) / BITVEC_NPTR + 1. */ /* For a BITVEC_SZ of 512, this would be 34,359,739. */ union { BITVEC_TELEM aBitmap[BITVEC_NELEM]; /* Bitmap representation */ u32 aHash[BITVEC_NINT]; /* Hash table representation */ |
︙ | ︙ | |||
373 374 375 376 377 378 379 | /* Test to make sure the linear array exactly matches the ** Bitvec object. Start with the assumption that they do ** match (rc==0). Change rc to non-zero if a discrepancy ** is found. */ rc = sqlite3BitvecTest(0,0) + sqlite3BitvecTest(pBitvec, sz+1) | | > | 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 | /* Test to make sure the linear array exactly matches the ** Bitvec object. Start with the assumption that they do ** match (rc==0). Change rc to non-zero if a discrepancy ** is found. */ rc = sqlite3BitvecTest(0,0) + sqlite3BitvecTest(pBitvec, sz+1) + sqlite3BitvecTest(pBitvec, 0) + (sqlite3BitvecSize(pBitvec) - sz); for(i=1; i<=sz; i++){ if( (TESTBIT(pV,i))!=sqlite3BitvecTest(pBitvec,i) ){ rc = i; break; } } |
︙ | ︙ |
Changes to test/bitvec.test.
1 2 3 4 5 6 7 8 9 10 11 12 13 | # 2008 February 18 # # 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. # #*********************************************************************** # # Unit testing of the Bitvec object. # | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # 2008 February 18 # # 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. # #*********************************************************************** # # Unit testing of the Bitvec object. # # $Id: bitvec.test,v 1.4 2009/04/01 23:49:04 drh Exp $ # set testdir [file dirname $argv0] source $testdir/tester.tcl # The built-in test logic must be operational in order for # this test to work. |
︙ | ︙ | |||
135 136 137 138 139 140 141 142 143 144 145 146 147 148 | sqlite3BitvecBuiltinTest 4000 {3 10 2 4000 1 1 0} } 0 do_test bitvec-2.5 { sqlite3BitvecBuiltinTest 5000 {3 20 2 5000 1 1 0} } 0 do_test bitvec-2.6 { sqlite3BitvecBuiltinTest 50000 {3 60 2 50000 1 1 0} } 0 # This procedure runs sqlite3BitvecBuiltinTest with argments "n" and # "program". But it also causes a malloc error to occur after the # "failcnt"-th malloc. The result should be "0" if no malloc failure # occurs or "-1" if there is a malloc failure. # | > > > > > > > > | 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | sqlite3BitvecBuiltinTest 4000 {3 10 2 4000 1 1 0} } 0 do_test bitvec-2.5 { sqlite3BitvecBuiltinTest 5000 {3 20 2 5000 1 1 0} } 0 do_test bitvec-2.6 { sqlite3BitvecBuiltinTest 50000 {3 60 2 50000 1 1 0} } 0 do_test bitvec-2.7 { sqlite3BitvecBuiltinTest 5000 { 1 25 121 125 1 50 121 125 2 25 121 125 0 } } 0 # This procedure runs sqlite3BitvecBuiltinTest with argments "n" and # "program". But it also causes a malloc error to occur after the # "failcnt"-th malloc. The result should be "0" if no malloc failure # occurs or "-1" if there is a malloc failure. # |
︙ | ︙ |