Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | When recycling an lsm cursor, reset the flags field. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | prefix-mmap |
Files: | files | file ages | folders |
SHA1: |
4d830d87e42c7aab45add1327c5292a2 |
User & Date: | dan 2013-03-07 18:36:56.305 |
Context
2013-03-07
| ||
19:54 | Fix a compressed database mode bug. check-in: 84e9aca245 user: dan tags: prefix-mmap | |
18:36 | When recycling an lsm cursor, reset the flags field. check-in: 4d830d87e4 user: dan tags: prefix-mmap | |
2013-03-06
| ||
20:15 | Allow accessing a prefix of the database file using mmap and the remainder using read and write. check-in: abe0420724 user: dan tags: prefix-mmap | |
Changes
Changes to lsm-test/lsmtest_tdb3.c.
︙ | ︙ | |||
986 987 988 989 990 991 992 | } int test_lsm_small_open( const char *zFile, int bClear, TestDb **ppDb ){ | | | 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 | } int test_lsm_small_open( const char *zFile, int bClear, TestDb **ppDb ){ const char *zCfg = "page_size=256 block_size=64 mmap=1024"; return testLsmOpen(zCfg, zFile, bClear, ppDb); } int test_lsm_lomem_open( const char *zFilename, int bClear, TestDb **ppDb |
︙ | ︙ |
Changes to src/kvlsm.c.
︙ | ︙ | |||
464 465 466 467 468 469 470 | struct Config { const char *zParam; int eParam; } aConfig[] = { { "lsm_mmap", LSM_CONFIG_MMAP }, { "lsm_page_size", LSM_CONFIG_PAGE_SIZE }, { "lsm_block_size", LSM_CONFIG_BLOCK_SIZE }, | | > < < < | 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 | struct Config { const char *zParam; int eParam; } aConfig[] = { { "lsm_mmap", LSM_CONFIG_MMAP }, { "lsm_page_size", LSM_CONFIG_PAGE_SIZE }, { "lsm_block_size", LSM_CONFIG_BLOCK_SIZE }, { "lsm_multiple_processes", LSM_CONFIG_MULTIPLE_PROCESSES }, { "lsm_automerge", LSM_CONFIG_AUTOMERGE } }; memset(pNew, 0, sizeof(KVLsm)); pNew->base.pStoreVfunc = &kvlsmMethods; pNew->base.pEnv = pEnv; rc = lsm_new(0, &pNew->pDb); if( rc==SQLITE4_OK ){ int i; for(i=0; i<ArraySize(aConfig); i++){ const char *zVal = sqlite4_uri_parameter(zName, aConfig[i].zParam); if( zVal ){ int nVal = sqlite4Atoi(zVal); lsm_config(pNew->pDb, aConfig[i].eParam, &nVal); } } |
︙ | ︙ |
Changes to src/lsm_file.c.
︙ | ︙ | |||
333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 | #ifdef NDEBUG # define assert_lists_are_ok(x) #else static Page *fsPageFindInHash(FileSystem *pFS, Pgno iPg, int *piHash); static void assert_lists_are_ok(FileSystem *pFS){ Page *p; assert( pFS->nMapLimit>=0 ); /* Check that all pages in the LRU list have nRef==0, pointers to buffers ** in heap memory, and corresponding entries in the hash table. */ for(p=pFS->pLruFirst; p; p=p->pLruNext){ assert( p==pFS->pLruFirst || p->pLruPrev!=0 ); assert( p==pFS->pLruLast || p->pLruNext!=0 ); assert( p->pLruPrev==0 || p->pLruPrev->pLruNext==p ); assert( p->pLruNext==0 || p->pLruNext->pLruPrev==p ); assert( p->nRef==0 ); assert( p->flags & PAGE_FREE ); assert( p==fsPageFindInHash(pFS, p->iPg, 0) ); } } #endif /* ** Wrappers around the VFS methods of the lsm_env object: ** ** lsmEnvOpen() | > > | 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 | #ifdef NDEBUG # define assert_lists_are_ok(x) #else static Page *fsPageFindInHash(FileSystem *pFS, Pgno iPg, int *piHash); static void assert_lists_are_ok(FileSystem *pFS){ #if 0 Page *p; assert( pFS->nMapLimit>=0 ); /* Check that all pages in the LRU list have nRef==0, pointers to buffers ** in heap memory, and corresponding entries in the hash table. */ for(p=pFS->pLruFirst; p; p=p->pLruNext){ assert( p==pFS->pLruFirst || p->pLruPrev!=0 ); assert( p==pFS->pLruLast || p->pLruNext!=0 ); assert( p->pLruPrev==0 || p->pLruPrev->pLruNext==p ); assert( p->pLruNext==0 || p->pLruNext->pLruPrev==p ); assert( p->nRef==0 ); assert( p->flags & PAGE_FREE ); assert( p==fsPageFindInHash(pFS, p->iPg, 0) ); } #endif } #endif /* ** Wrappers around the VFS methods of the lsm_env object: ** ** lsmEnvOpen() |
︙ | ︙ |
Changes to src/lsm_shared.c.
︙ | ︙ | |||
507 508 509 510 511 512 513 | } /* If the db handle is read-write, then connect to the system now. Run ** recovery as necessary. Or, if this is a read-only database handle, ** defer attempting to connect to the system until a read-transaction ** is opened. */ if( pDb->bReadonly==0 ){ | < < < > > > | 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 | } /* If the db handle is read-write, then connect to the system now. Run ** recovery as necessary. Or, if this is a read-only database handle, ** defer attempting to connect to the system until a read-transaction ** is opened. */ if( pDb->bReadonly==0 ){ if( rc==LSM_OK ){ rc = lsmFsConfigure(pDb); } if( rc==LSM_OK ){ rc = doDbConnect(pDb); } } return rc; } static void dbDeferClose(lsm_db *pDb){ if( pDb->pFS ){ |
︙ | ︙ |
Changes to src/lsm_sorted.c.
︙ | ︙ | |||
2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 | bOld = (lsmTreeHasOld(pDb) && pDb->treehdr.iOldLog!=pDb->pClient->iLogOff); if( !bOld && pCsr->apTreeCsr[1] ){ lsmTreeCursorDestroy(pCsr->apTreeCsr[1]); pCsr->apTreeCsr[1] = 0; }else if( bOld && !pCsr->apTreeCsr[1] ){ rc = lsmTreeCursorNew(pDb, 1, &pCsr->apTreeCsr[1]); } }else{ pCsr = multiCursorNew(pDb, &rc); if( rc==LSM_OK ) rc = multiCursorInit(pCsr, pDb->pClient); } if( rc!=LSM_OK ){ | > > | 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 | bOld = (lsmTreeHasOld(pDb) && pDb->treehdr.iOldLog!=pDb->pClient->iLogOff); if( !bOld && pCsr->apTreeCsr[1] ){ lsmTreeCursorDestroy(pCsr->apTreeCsr[1]); pCsr->apTreeCsr[1] = 0; }else if( bOld && !pCsr->apTreeCsr[1] ){ rc = lsmTreeCursorNew(pDb, 1, &pCsr->apTreeCsr[1]); } pCsr->flags = (CURSOR_IGNORE_SYSTEM | CURSOR_IGNORE_DELETE); }else{ pCsr = multiCursorNew(pDb, &rc); if( rc==LSM_OK ) rc = multiCursorInit(pCsr, pDb->pClient); } if( rc!=LSM_OK ){ |
︙ | ︙ |