Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Move RowHashBlock.nUsed to RowHash.nUsed. Fix a typo in a comment in test_async.c. (CVS 6533) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
799d31d99fd18a6f99862433384e37d6 |
User & Date: | danielk1977 2009-04-21 18:20:45.000 |
Context
2009-04-22
| ||
00:47 | Extend the Rowset object to contain all the capabilities of Rowhash in addition to its legacy capabilities. Use Rowset to replace Rowhash. In addition to requiring less code, This removes the 2^32 result row limitation, uses less memory, and gives better bounds on worst-case performance. The Rowhash implementation has yet to be removed. (CVS 6534) (check-in: b101cf70b7 user: drh tags: trunk) | |
2009-04-21
| ||
18:20 | Move RowHashBlock.nUsed to RowHash.nUsed. Fix a typo in a comment in test_async.c. (CVS 6533) (check-in: 799d31d99f user: danielk1977 tags: trunk) | |
17:23 | Fix a segfault that followed a malloc failure introduced by (6527). (CVS 6532) (check-in: 08e71b1140 user: danielk1977 tags: trunk) | |
Changes
Changes to src/rowhash.c.
︙ | |||
27 28 29 30 31 32 33 | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | - + | ** The insert batch number is a parameter to the TEST primitive. The ** hash table is rebuilt whenever the batch number increases. TEST ** operations only look for INSERTs that occurred in prior batches. ** ** The caller is responsible for insuring that there are no duplicate ** INSERTs. ** |
︙ | |||
121 122 123 124 125 126 127 | 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | - + | ** The linked list of RowHashBlock objects also provides a way to sequentially ** scan all elements in the RowHash. This sequential scan is used when ** rebuilding the hash table. The hash table is rebuilt after every ** batch of inserts. */ struct RowHashBlock { struct RowHashBlockData { |
︙ | |||
266 267 268 269 270 271 272 | 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 | - + + + | /* Allocate the hash-table. */ if( allocHashTable(&p->pHash, p->nHeight, &nLeaf) ){ return SQLITE_NOMEM; } /* Insert all values into the hash-table. */ for(pBlock=p->pBlock; pBlock; pBlock=pBlock->data.pNext){ |
︙ | |||
350 351 352 353 354 355 356 | 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 | - + - + + - - + + | } p->db = db; *pp = p; } /* If the current RowHashBlock is full, or if the first RowHashBlock has ** not yet been allocated, allocate one now. */ |
︙ |
Changes to src/test_async.c.
1 2 3 4 5 6 7 8 9 10 11 12 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | - + | /* ** 2005 December 14 ** ** 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. ** ************************************************************************* ** |
︙ | |||
69 70 71 72 73 74 75 | 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | - + | ** Multiple connections from within a single process that use this ** implementation of asynchronous IO may access a single database ** file concurrently. From the point of view of the user, if all ** connections are from within a single process, there is no difference ** between the concurrency offered by "normal" SQLite and SQLite ** using the asynchronous backend. ** |
︙ |