Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix another lsmtest build problem. Add the "-trans BOOLEAN" option to "lsmtest speed2". |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | lsm-vtab |
Files: | files | file ages | folders |
SHA3-256: |
61853bc171e7c3af1db6a33ac8b1ad21 |
User & Date: | dan 2017-06-07 19:46:18.561 |
Context
2017-06-15
| ||
15:06 | Merge the latest changes from trunk. (check-in: 60105c2253 user: drh tags: lsm-vtab) | |
2017-06-07
| ||
19:46 | Fix another lsmtest build problem. Add the "-trans BOOLEAN" option to "lsmtest speed2". (check-in: 61853bc171 user: dan tags: lsm-vtab) | |
2017-06-06
| ||
16:14 | Fix a threading problem in lsm test code. (check-in: 501238b9fb user: dan tags: lsm-vtab) | |
Changes
Changes to ext/lsm1/Makefile.
︙ | ︙ | |||
43 44 45 46 47 48 49 | # all: lsm.so LSMOPTS = -DLSM_MUTEX_PTHREADS=1 -I$(LSMDIR) lsm.so: $(LSMOBJ) $(TCCX) -shared -o lsm.so $(LSMOBJ) | | | | | 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # all: lsm.so LSMOPTS = -DLSM_MUTEX_PTHREADS=1 -I$(LSMDIR) lsm.so: $(LSMOBJ) $(TCCX) -shared -o lsm.so $(LSMOBJ) %.o: $(LSMDIR)/%.c $(LSMHDR) sqlite3.h $(TCCX) $(LSMOPTS) -c $< lsmtest$(EXE): $(LSMOBJ) $(LSMTESTSRC) $(LSMTESTHDR) sqlite3.o # $(TCPPX) -c $(TOP)/lsm-test/lsmtest_tdb2.cc $(TCCX) $(LSMOPTS) $(LSMTESTSRC) $(LSMOBJ) sqlite3.o -o lsmtest$(EXE) $(THREADLIB) |
Changes to ext/lsm1/lsm-test/lsmtest_main.c.
1 |
| | | 1 2 3 4 5 6 7 8 9 | #include "stdarg.h" #include "lsmtest.h" #include "stdio.h" #include "assert.h" #include "string.h" #include "stdlib.h" #include <sqlite3.h> |
︙ | ︙ | |||
359 360 361 362 363 364 365 | } char *testMallocVPrintf(const char *zFormat, va_list ap){ int nByte; va_list copy; char *zRet; | | | 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 | } char *testMallocVPrintf(const char *zFormat, va_list ap){ int nByte; va_list copy; char *zRet; __va_copy(copy, ap); nByte = vsnprintf(0, 0, zFormat, copy); va_end(copy); assert( nByte>=0 ); zRet = (char *)testMalloc(nByte+1); vsnprintf(zRet, nByte+1, zFormat, ap); return zRet; |
︙ | ︙ | |||
568 569 570 571 572 573 574 575 576 577 578 579 580 581 | #define ST_WRITE 1 #define ST_PAUSE 2 #define ST_FETCH 3 #define ST_SCAN 4 #define ST_NSCAN 5 #define ST_KEYSIZE 6 #define ST_VALSIZE 7 static void print_speed_test_help(){ printf( "\n" "Repeat the following $repeat times:\n" " 1. Insert $write key-value pairs. One transaction for each write op.\n" | > | 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 | #define ST_WRITE 1 #define ST_PAUSE 2 #define ST_FETCH 3 #define ST_SCAN 4 #define ST_NSCAN 5 #define ST_KEYSIZE 6 #define ST_VALSIZE 7 #define ST_TRANS 8 static void print_speed_test_help(){ printf( "\n" "Repeat the following $repeat times:\n" " 1. Insert $write key-value pairs. One transaction for each write op.\n" |
︙ | ︙ | |||
589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 | " -repeat $repeat (default value 10)\n" " -write $write (default value 10000)\n" " -pause $pause (default value 0)\n" " -fetch $fetch (default value 0)\n" " -keysize $keysize (default value 12)\n" " -valsize $valsize (default value 100)\n" " -system $system (default value \"lsm\")\n" "\n" ); } int do_speed_test2(int nArg, char **azArg){ struct Option { const char *zOpt; int eVal; int iDefault; } aOpt[] = { { "-repeat", ST_REPEAT, 10}, { "-write", ST_WRITE, 10000}, { "-pause", ST_PAUSE, 0}, { "-fetch", ST_FETCH, 0}, { "-scan", ST_SCAN, 0}, { "-nscan", ST_NSCAN, 0}, { "-keysize", ST_KEYSIZE, 12}, { "-valsize", ST_VALSIZE, 100}, { "-system", -1, 0}, { "help", -2, 0}, {0, 0, 0} }; int i; | > > | | 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 | " -repeat $repeat (default value 10)\n" " -write $write (default value 10000)\n" " -pause $pause (default value 0)\n" " -fetch $fetch (default value 0)\n" " -keysize $keysize (default value 12)\n" " -valsize $valsize (default value 100)\n" " -system $system (default value \"lsm\")\n" " -trans $trans (default value 0)\n" "\n" ); } int do_speed_test2(int nArg, char **azArg){ struct Option { const char *zOpt; int eVal; int iDefault; } aOpt[] = { { "-repeat", ST_REPEAT, 10}, { "-write", ST_WRITE, 10000}, { "-pause", ST_PAUSE, 0}, { "-fetch", ST_FETCH, 0}, { "-scan", ST_SCAN, 0}, { "-nscan", ST_NSCAN, 0}, { "-keysize", ST_KEYSIZE, 12}, { "-valsize", ST_VALSIZE, 100}, { "-trans", ST_TRANS, 0}, { "-system", -1, 0}, { "help", -2, 0}, {0, 0, 0} }; int i; int aParam[9]; int rc = 0; int bReadonly = 0; int nContent = 0; TestDb *pDb; Datasource *pData; DatasourceDefn defn = { TEST_DATASOURCE_RANDOM, 0, 0, 0, 0 }; |
︙ | ︙ | |||
708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 | int iFetch; int nWrite = aParam[ST_WRITE]; if( bReadonly ){ msWrite = 0; }else{ testTimeInit(); testWriteDatasourceRange(pDb, pData, i*nWrite, nWrite, &rc); msWrite = testTimeGet(); nContent += nWrite; } if( aParam[ST_PAUSE] ){ if( aParam[ST_PAUSE]/1000 ) sleep(aParam[ST_PAUSE]/1000); if( aParam[ST_PAUSE]%1000 ) usleep(1000 * (aParam[ST_PAUSE]%1000)); } if( aParam[ST_FETCH] ){ testTimeInit(); for(iFetch=0; iFetch<aParam[ST_FETCH]; iFetch++){ int iKey = testPrngValue(i*nWrite+iFetch) % nContent; #ifndef NDEBUG testDatasourceFetch(pDb, pData, iKey, &rc); #else void *pKey; int nKey; /* Database key to query for */ void *pVal; int nVal; /* Result of query */ testDatasourceEntry(pData, iKey, &pKey, &nKey, 0, 0); rc = tdb_fetch(pDb, pKey, nKey, &pVal, &nVal); if( rc==0 && nVal<0 ) rc = 1; if( rc ) break; #endif } msFetch = testTimeGet(); }else{ msFetch = 0; } if( i==(aParam[ST_REPEAT]-1) ){ testTimeInit(); | > > > > > > | 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 | int iFetch; int nWrite = aParam[ST_WRITE]; if( bReadonly ){ msWrite = 0; }else{ testTimeInit(); if( aParam[ST_TRANS] ) testBegin(pDb, 2, &rc); testWriteDatasourceRange(pDb, pData, i*nWrite, nWrite, &rc); if( aParam[ST_TRANS] ) testCommit(pDb, 0, &rc); msWrite = testTimeGet(); nContent += nWrite; } if( aParam[ST_PAUSE] ){ if( aParam[ST_PAUSE]/1000 ) sleep(aParam[ST_PAUSE]/1000); if( aParam[ST_PAUSE]%1000 ) usleep(1000 * (aParam[ST_PAUSE]%1000)); } if( aParam[ST_FETCH] ){ testTimeInit(); if( aParam[ST_TRANS] ) testBegin(pDb, 1, &rc); for(iFetch=0; iFetch<aParam[ST_FETCH]; iFetch++){ int iKey = testPrngValue(i*nWrite+iFetch) % nContent; #ifndef NDEBUG testDatasourceFetch(pDb, pData, iKey, &rc); #else void *pKey; int nKey; /* Database key to query for */ void *pVal; int nVal; /* Result of query */ testDatasourceEntry(pData, iKey, &pKey, &nKey, 0, 0); rc = tdb_fetch(pDb, pKey, nKey, &pVal, &nVal); if( rc==0 && nVal<0 ) rc = 1; if( rc ) break; #endif } if( aParam[ST_TRANS] ) testCommit(pDb, 0, &rc); msFetch = testTimeGet(); }else{ msFetch = 0; } if( i==(aParam[ST_REPEAT]-1) ){ testTimeInit(); |
︙ | ︙ |
Changes to ext/lsm1/lsm-test/lsmtest_tdb.c.
︙ | ︙ | |||
689 690 691 692 693 694 695 696 697 698 699 700 701 702 | sqlite3_exec(pDb->db, zPragma, 0, 0, 0); sqlite3_free(zPragma); /* sqlite3_exec(pDb->db, "PRAGMA locking_mode=EXCLUSIVE", 0, 0, 0); */ sqlite3_exec(pDb->db, "PRAGMA synchronous=OFF", 0, 0, 0); sqlite3_exec(pDb->db, "PRAGMA journal_mode=WAL", 0, 0, 0); sqlite3_exec(pDb->db, "PRAGMA wal_autocheckpoint=4096", 0, 0, 0); *ppDb = (TestDb *)pDb; return 0; } /* ** End wrapper for SQLite. *************************************************************************/ | > > > > > > > | 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 | sqlite3_exec(pDb->db, zPragma, 0, 0, 0); sqlite3_free(zPragma); /* sqlite3_exec(pDb->db, "PRAGMA locking_mode=EXCLUSIVE", 0, 0, 0); */ sqlite3_exec(pDb->db, "PRAGMA synchronous=OFF", 0, 0, 0); sqlite3_exec(pDb->db, "PRAGMA journal_mode=WAL", 0, 0, 0); sqlite3_exec(pDb->db, "PRAGMA wal_autocheckpoint=4096", 0, 0, 0); if( zSpec ){ rc = sqlite3_exec(pDb->db, zSpec, 0, 0, 0); if( rc!=SQLITE_OK ){ sql_close((TestDb *)pDb); return rc; } } *ppDb = (TestDb *)pDb; return 0; } /* ** End wrapper for SQLite. *************************************************************************/ |
︙ | ︙ |
Changes to ext/lsm1/lsm-test/lsmtest_tdb3.c.
︙ | ︙ | |||
504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 | testFree(pDb->aFile[1].aSector); memset(pDb, sizeof(LsmDb), 0x11); testFree((char *)pDb->pBuf); testFree((char *)pDb); return rc; } static int waitOnCheckpointer(LsmDb *pDb, lsm_db *db){ int nSleep = 0; int nKB; int rc; do { nKB = 0; rc = lsm_info(db, LSM_INFO_CHECKPOINT_SIZE, &nKB); if( rc!=LSM_OK || nKB<pDb->nMtMaxCkpt ) break; usleep(5000); nSleep += 5; }while( 1 ); #if 0 if( nSleep ) printf("# waitOnCheckpointer(): nSleep=%d\n", nSleep); #endif return rc; } | > > > > > < < | 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 | testFree(pDb->aFile[1].aSector); memset(pDb, sizeof(LsmDb), 0x11); testFree((char *)pDb->pBuf); testFree((char *)pDb); return rc; } static void mt_signal_worker(LsmDb*, int); static int waitOnCheckpointer(LsmDb *pDb, lsm_db *db){ int nSleep = 0; int nKB; int rc; do { nKB = 0; rc = lsm_info(db, LSM_INFO_CHECKPOINT_SIZE, &nKB); if( rc!=LSM_OK || nKB<pDb->nMtMaxCkpt ) break; #ifdef LSM_MUTEX_PTHREADS mt_signal_worker(pDb, 1); #endif usleep(5000); nSleep += 5; }while( 1 ); #if 0 if( nSleep ) printf("# waitOnCheckpointer(): nSleep=%d\n", nSleep); #endif return rc; } static int waitOnWorker(LsmDb *pDb){ int rc; int nLimit = -1; int nSleep = 0; rc = lsm_config(pDb->db, LSM_CONFIG_AUTOFLUSH, &nLimit); do { |
︙ | ︙ | |||
787 788 789 790 791 792 793 794 795 796 797 798 799 800 | #ifdef HAVE_ZLIB { "compression", 0, TEST_COMPRESSION }, #endif { 0, 0 } }; const char *z = zStr; int nThread = 1; assert( db ); while( z[0] ){ const char *zStart; /* Skip whitespace */ while( *z==' ' ) z++; | > > | 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 | #ifdef HAVE_ZLIB { "compression", 0, TEST_COMPRESSION }, #endif { 0, 0 } }; const char *z = zStr; int nThread = 1; if( zStr==0 ) return 0; assert( db ); while( z[0] ){ const char *zStart; /* Skip whitespace */ while( *z==' ' ) z++; |
︙ | ︙ |