Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix compiler warnings in LSM1, especially in the test logic. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
9bd3be92b8add7bd0d7bc4b0742b2dd2 |
User & Date: | drh 2017-07-03 21:09:28.601 |
Context
2017-07-04
| ||
12:50 | Fix a problem in the lempar.c Lemon template for YYSTACKDEPTH<=0 introduced by check-in [36e54cd8b1fb37] (check-in: 268a40f44c user: drh tags: trunk) | |
2017-07-03
| ||
21:09 | Fix compiler warnings in LSM1, especially in the test logic. (check-in: 9bd3be92b8 user: drh tags: trunk) | |
20:19 | Fix a bug in lsm queries on levels undergoing incremental an merge that contain range-delete markers. (check-in: b2c2487928 user: dan tags: trunk) | |
Changes
Changes to ext/lsm1/lsm-test/lsmtest.h.
︙ | ︙ | |||
228 229 230 231 232 233 234 235 236 237 238 239 240 241 | char *testDatasourceName(const DatasourceDefn *); Datasource *testDatasourceNew(const DatasourceDefn *); void testDatasourceFree(Datasource *); void testDatasourceEntry(Datasource *, int, void **, int *, void **, int *); /* End of test_datasource.c interface. *************************************************************************/ void testWriteDatasource(TestDb *, Datasource *, int, int *); void testWriteDatasourceRange(TestDb *, Datasource *, int, int, int *); void testDeleteDatasource(TestDb *, Datasource *, int, int *); void testDeleteDatasourceRange(TestDb *, Datasource *, int, int, int *); | > > > > > > | 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 | char *testDatasourceName(const DatasourceDefn *); Datasource *testDatasourceNew(const DatasourceDefn *); void testDatasourceFree(Datasource *); void testDatasourceEntry(Datasource *, int, void **, int *, void **, int *); /* End of test_datasource.c interface. *************************************************************************/ void testDatasourceFetch( TestDb *pDb, /* Database handle */ Datasource *pData, int iKey, int *pRc /* IN/OUT: Error code */ ); void testWriteDatasource(TestDb *, Datasource *, int, int *); void testWriteDatasourceRange(TestDb *, Datasource *, int, int, int *); void testDeleteDatasource(TestDb *, Datasource *, int, int *); void testDeleteDatasourceRange(TestDb *, Datasource *, int, int, int *); |
︙ | ︙ |
Changes to ext/lsm1/lsm-test/lsmtest2.c.
︙ | ︙ | |||
238 239 240 241 242 243 244 245 246 247 248 249 250 251 | *pRc = 1; test_failed(); } } } } static void testCompareCksumBtdb( const char *zFile, /* Path to LSM database */ const char *zExpect1, /* Expected checksum 1 */ const char *zExpect2, /* Expected checksum 2 (or NULL) */ int *pRc /* IN/OUT: Test case error code */ ){ if( *pRc==0 ){ | > | 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 | *pRc = 1; test_failed(); } } } } #if 0 /* not used */ static void testCompareCksumBtdb( const char *zFile, /* Path to LSM database */ const char *zExpect1, /* Expected checksum 1 */ const char *zExpect2, /* Expected checksum 2 (or NULL) */ int *pRc /* IN/OUT: Test case error code */ ){ if( *pRc==0 ){ |
︙ | ︙ | |||
274 275 276 277 278 279 280 281 282 283 284 285 286 287 | } *pRc = 1; test_failed(); } } } } /* Above this point are reusable test routines. Not clear that they ** should really be in this file. *************************************************************************/ /* ** This test verifies that if a system crash occurs while doing merge work | > | 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 | } *pRc = 1; test_failed(); } } } } #endif /* not used */ /* Above this point are reusable test routines. Not clear that they ** should really be in this file. *************************************************************************/ /* ** This test verifies that if a system crash occurs while doing merge work |
︙ | ︙ | |||
480 481 482 483 484 485 486 | struct Test *p = &aTest[i]; if( testCaseBegin(pRc, zPattern, "%s", p->zTest) ){ p->x(p->bCompress, pRc); testCaseFinish(*pRc); } } } | < | 482 483 484 485 486 487 488 | struct Test *p = &aTest[i]; if( testCaseBegin(pRc, zPattern, "%s", p->zTest) ){ p->x(p->bCompress, pRc); testCaseFinish(*pRc); } } } |
Changes to ext/lsm1/lsm-test/lsmtest_main.c.
︙ | ︙ | |||
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | void testCommit(TestDb *pDb, int iTrans, int *pRc){ if( *pRc==0 ){ int rc; rc = tdb_commit(pDb, iTrans); testSetError(rc); } } static void testRollback(TestDb *pDb, int iTrans, int *pRc){ if( *pRc==0 ){ int rc; rc = tdb_rollback(pDb, iTrans); testSetError(rc); } } void testWriteStr( TestDb *pDb, /* Database handle */ const char *zKey, /* Key to query database for */ const char *zVal, /* Value to write */ int *pRc /* IN/OUT: Error code */ ){ int nVal = (zVal ? strlen(zVal) : 0); testWrite(pDb, (void *)zKey, strlen(zKey), (void *)zVal, nVal, pRc); } static void testDeleteStr(TestDb *pDb, const char *zKey, int *pRc){ testDelete(pDb, (void *)zKey, strlen(zKey), pRc); } | > > > | | 111 112 113 114 115 116 117 118 119 120 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 146 147 148 149 | void testCommit(TestDb *pDb, int iTrans, int *pRc){ if( *pRc==0 ){ int rc; rc = tdb_commit(pDb, iTrans); testSetError(rc); } } #if 0 /* unused */ static void testRollback(TestDb *pDb, int iTrans, int *pRc){ if( *pRc==0 ){ int rc; rc = tdb_rollback(pDb, iTrans); testSetError(rc); } } #endif void testWriteStr( TestDb *pDb, /* Database handle */ const char *zKey, /* Key to query database for */ const char *zVal, /* Value to write */ int *pRc /* IN/OUT: Error code */ ){ int nVal = (zVal ? strlen(zVal) : 0); testWrite(pDb, (void *)zKey, strlen(zKey), (void *)zVal, nVal, pRc); } #if 0 /* unused */ static void testDeleteStr(TestDb *pDb, const char *zKey, int *pRc){ testDelete(pDb, (void *)zKey, strlen(zKey), pRc); } #endif void testFetchStr( TestDb *pDb, /* Database handle */ const char *zKey, /* Key to query database for */ const char *zVal, /* Value to write */ int *pRc /* IN/OUT: Error code */ ){ int nVal = (zVal ? strlen(zVal) : 0); |
︙ | ︙ | |||
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 364 365 366 367 368 | zLib = tdb_library_name(*ppDb); testClose(ppDb); *pRc = tdb_open(zLib, 0, 0, ppDb); } } static void testSystemSelect(const char *zSys, int *piSel, int *pRc){ if( *pRc==0 ){ struct SysName { const char *zName; } *aName; int nSys; int i; for(nSys=0; tdb_system_name(nSys); nSys++); aName = malloc(sizeof(struct SysName) * (nSys+1)); for(i=0; i<=nSys; i++){ aName[i].zName = tdb_system_name(i); } *pRc = testArgSelect(aName, "db", zSys, piSel); free(aName); } } char *testMallocVPrintf(const char *zFormat, va_list ap){ int nByte; va_list copy; char *zRet; __va_copy(copy, ap); | > > | 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 | zLib = tdb_library_name(*ppDb); testClose(ppDb); *pRc = tdb_open(zLib, 0, 0, ppDb); } } #if 0 /* unused */ static void testSystemSelect(const char *zSys, int *piSel, int *pRc){ if( *pRc==0 ){ struct SysName { const char *zName; } *aName; int nSys; int i; for(nSys=0; tdb_system_name(nSys); nSys++); aName = malloc(sizeof(struct SysName) * (nSys+1)); for(i=0; i<=nSys; i++){ aName[i].zName = tdb_system_name(i); } *pRc = testArgSelect(aName, "db", zSys, piSel); free(aName); } } #endif char *testMallocVPrintf(const char *zFormat, va_list ap){ int nByte; va_list copy; char *zRet; __va_copy(copy, ap); |
︙ | ︙ | |||
537 538 539 540 541 542 543 544 545 546 547 548 549 550 | static void flushPrev(FILE *pOut){ if( prev.nData ){ fprintf(pOut, "w %s %lld %d %d\n", "d", prev.iOff, prev.nData, prev.nUs); prev.nData = 0; } } static void do_speed_write_hook2( void *pCtx, int bLog, i64 iOff, int nData, int nUs ){ | > | 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 | static void flushPrev(FILE *pOut){ if( prev.nData ){ fprintf(pOut, "w %s %lld %d %d\n", "d", prev.iOff, prev.nData, prev.nUs); prev.nData = 0; } } #if 0 /* unused */ static void do_speed_write_hook2( void *pCtx, int bLog, i64 iOff, int nData, int nUs ){ |
︙ | ︙ | |||
561 562 563 564 565 566 567 568 569 570 571 572 573 574 | }else{ prev.iOff = iOff; prev.nData = nData; prev.nUs = nUs; } } } #define ST_REPEAT 0 #define ST_WRITE 1 #define ST_PAUSE 2 #define ST_FETCH 3 #define ST_SCAN 4 #define ST_NSCAN 5 | > | 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 | }else{ prev.iOff = iOff; prev.nData = nData; prev.nUs = nUs; } } } #endif #define ST_REPEAT 0 #define ST_WRITE 1 #define ST_PAUSE 2 #define ST_FETCH 3 #define ST_SCAN 4 #define ST_NSCAN 5 |
︙ | ︙ | |||
658 659 660 661 662 663 664 | if( i+1==nArg ){ testPrintError("option %s requires an argument\n", aOpt[iSel].zOpt); return 1; } if( aOpt[iSel].eVal>=0 ){ aParam[aOpt[iSel].eVal] = atoi(azArg[i+1]); }else{ | < | 665 666 667 668 669 670 671 672 673 674 675 676 677 678 | if( i+1==nArg ){ testPrintError("option %s requires an argument\n", aOpt[iSel].zOpt); return 1; } if( aOpt[iSel].eVal>=0 ){ aParam[aOpt[iSel].eVal] = atoi(azArg[i+1]); }else{ zSystem = azArg[i+1]; bLsm = 0; #if 0 for(j=0; zSystem[j]; j++){ if( zSystem[j]=='=' ) bLsm = 1; } #endif |
︙ | ︙ |
Changes to ext/lsm1/lsm-test/lsmtest_mem.c.
︙ | ︙ | |||
322 323 324 325 326 327 328 | LsmMutex *p = (LsmMutex *)pTm->pMutex; pTm->xFree(p); } static void *tmLsmMalloc(int n){ return malloc(n); } static void tmLsmFree(void *ptr){ free(ptr); } static void *tmLsmRealloc(void *ptr, int n){ return realloc(ptr, n); } | | | | 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 | LsmMutex *p = (LsmMutex *)pTm->pMutex; pTm->xFree(p); } static void *tmLsmMalloc(int n){ return malloc(n); } static void tmLsmFree(void *ptr){ free(ptr); } static void *tmLsmRealloc(void *ptr, int n){ return realloc(ptr, n); } static void *tmLsmEnvMalloc(lsm_env *p, size_t n){ return tmMalloc((TmGlobal *)(p->pMemCtx), n); } static void tmLsmEnvFree(lsm_env *p, void *ptr){ tmFree((TmGlobal *)(p->pMemCtx), ptr); } static void *tmLsmEnvRealloc(lsm_env *p, void *ptr, size_t n){ return tmRealloc((TmGlobal *)(p->pMemCtx), ptr, n); } void testMallocInstall(lsm_env *pEnv){ TmGlobal *pGlobal; LsmMutex *pMutex; assert( pEnv->pMemCtx==0 ); |
︙ | ︙ | |||
366 367 368 369 370 371 372 | pEnv->xFree = tmLsmEnvFree; } void testMallocUninstall(lsm_env *pEnv){ TmGlobal *p = (TmGlobal *)pEnv->pMemCtx; pEnv->pMemCtx = 0; if( p ){ | | | | | 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 | pEnv->xFree = tmLsmEnvFree; } void testMallocUninstall(lsm_env *pEnv){ TmGlobal *p = (TmGlobal *)pEnv->pMemCtx; pEnv->pMemCtx = 0; if( p ){ pEnv->xMalloc = p->xSaveMalloc; pEnv->xRealloc = p->xSaveRealloc; pEnv->xFree = p->xSaveFree; p->xDelMutex(p); tmLsmFree(p); } } void testMallocCheck( lsm_env *pEnv, |
︙ | ︙ |
Changes to ext/lsm1/lsm_vtab.c.
︙ | ︙ | |||
455 456 457 458 459 460 461 | int j; for(j=1; j<nVal; j++){ x = (x<<8) | aVal[j]; } if( aVal[0]==SQLITE_INTEGER ){ sqlite3_result_int64(ctx, *(sqlite3_int64*)&x); }else{ | > > > | | 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 | int j; for(j=1; j<nVal; j++){ x = (x<<8) | aVal[j]; } if( aVal[0]==SQLITE_INTEGER ){ sqlite3_result_int64(ctx, *(sqlite3_int64*)&x); }else{ double r; assert( sizeof(r)==sizeof(x) ); memcpy(&r, &x, sizeof(r)); sqlite3_result_double(ctx, r); } break; } case SQLITE_TEXT: { sqlite3_result_text(ctx, (char*)&aVal[1], nVal-1, SQLITE_TRANSIENT); break; } |
︙ | ︙ | |||
662 663 664 665 666 667 668 | case SQLITE_FLOAT: { sqlite3_uint64 x; unsigned char aVal[9]; int i; if( eType==SQLITE_INTEGER ){ *(sqlite3_int64*)&x = sqlite3_value_int64(pValue); }else{ | | > > | 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 | case SQLITE_FLOAT: { sqlite3_uint64 x; unsigned char aVal[9]; int i; if( eType==SQLITE_INTEGER ){ *(sqlite3_int64*)&x = sqlite3_value_int64(pValue); }else{ double r = sqlite3_value_double(pValue); assert( sizeof(r)==sizeof(x) ); memcpy(&x, &r, sizeof(r)); } for(i=8; x>0 && i>=1; i--){ aVal[i] = x & 0xff; x >>= 8; } aVal[i] = eType; rc = lsm_insert(p->pDb, pKey, nKey, &aVal[i], 9-i); |
︙ | ︙ |