Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Merge the latest trunk changes into the WinRT branch (fixes various MSVC compiler warnings). |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | winrt |
Files: | files | file ages | folders |
SHA1: |
294a5cca5087b510c2483792631bbf98 |
User & Date: | mistachkin 2012-04-20 08:23:32.979 |
Context
2012-04-21
| ||
00:31 | Merge the latest trunk changes into the WinRT branch (fixes for tickets [2a5629202f] and [385a5b56b9]). (check-in: 25478dcff5 user: mistachkin tags: winrt) | |
2012-04-20
| ||
08:23 | Merge the latest trunk changes into the WinRT branch (fixes various MSVC compiler warnings). (check-in: 294a5cca50 user: mistachkin tags: winrt) | |
2012-04-19
| ||
18:04 | Fix harmless compiler warnings on x64 MSVC, mostly in test code, but also in tclsqlite.c and in the FTS4 module. (check-in: 3281972eaa user: drh tags: trunk) | |
2012-04-18
| ||
10:29 | Merge build tool updates from trunk. Also, modify MSVC makefile to allow for debugging of build tool issues. (check-in: b2a2fdb0ac user: mistachkin tags: winrt) | |
Changes
Changes to ext/fts3/fts3_term.c.
︙ | ︙ | |||
84 85 86 87 88 89 90 | *pzErr = sqlite3_mprintf( "wrong number of arguments to fts4term constructor" ); return SQLITE_ERROR; } zDb = argv[1]; | | | | 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | *pzErr = sqlite3_mprintf( "wrong number of arguments to fts4term constructor" ); return SQLITE_ERROR; } zDb = argv[1]; nDb = (int)strlen(zDb); zFts3 = argv[3]; nFts3 = (int)strlen(zFts3); rc = sqlite3_declare_vtab(db, FTS3_TERMS_SCHEMA); if( rc!=SQLITE_OK ) return rc; nByte = sizeof(Fts3termTable) + sizeof(Fts3Table) + nDb + nFts3 + 2; p = (Fts3termTable *)sqlite3_malloc(nByte); if( !p ) return SQLITE_NOMEM; |
︙ | ︙ |
Changes to ext/fts3/fts3_test.c.
︙ | ︙ | |||
386 387 388 389 390 391 392 | pCsr = (test_tokenizer_cursor *)sqlite3_malloc(sizeof(test_tokenizer_cursor)); if( pCsr==0 ){ rc = SQLITE_NOMEM; }else{ memset(pCsr, 0, sizeof(test_tokenizer_cursor)); pCsr->aInput = pInput; if( nBytes<0 ){ | | | 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 | pCsr = (test_tokenizer_cursor *)sqlite3_malloc(sizeof(test_tokenizer_cursor)); if( pCsr==0 ){ rc = SQLITE_NOMEM; }else{ memset(pCsr, 0, sizeof(test_tokenizer_cursor)); pCsr->aInput = pInput; if( nBytes<0 ){ pCsr->nInput = (int)strlen(pInput); }else{ pCsr->nInput = nBytes; } } *ppCursor = (sqlite3_tokenizer_cursor *)pCsr; return rc; |
︙ | ︙ | |||
439 440 441 442 443 444 445 | if( p==pEnd ){ rc = SQLITE_DONE; }else{ /* Advance to the end of the token */ const char *pToken = p; int nToken; while( p<pEnd && testIsTokenChar(*p) ) p++; | | | | | | 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 | if( p==pEnd ){ rc = SQLITE_DONE; }else{ /* Advance to the end of the token */ const char *pToken = p; int nToken; while( p<pEnd && testIsTokenChar(*p) ) p++; nToken = (int)(p-pToken); /* Copy the token into the buffer */ if( nToken>pCsr->nBuffer ){ sqlite3_free(pCsr->aBuffer); pCsr->aBuffer = sqlite3_malloc(nToken); } if( pCsr->aBuffer==0 ){ rc = SQLITE_NOMEM; }else{ int i; if( pCsr->iLangid & 0x00000001 ){ for(i=0; i<nToken; i++) pCsr->aBuffer[i] = pToken[i]; }else{ for(i=0; i<nToken; i++) pCsr->aBuffer[i] = testTolower(pToken[i]); } pCsr->iToken++; pCsr->iInput = (int)(p - pCsr->aInput); *ppToken = pCsr->aBuffer; *pnBytes = nToken; *piStartOffset = (int)(pToken - pCsr->aInput); *piEndOffset = (int)(p - pCsr->aInput); *piPosition = pCsr->iToken; } } return rc; } |
︙ | ︙ |
Changes to src/expr.c.
︙ | ︙ | |||
4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 | return WRC_Prune; } } } return WRC_Continue; } static int analyzeAggregatesInSelect(Walker *pWalker, Select *pSelect){ return WRC_Continue; } /* ** Analyze the given expression looking for aggregate functions and ** for variables that need to be added to the pParse->aAgg[] array. ** Make additional entries to the pParse->aAgg[] array as necessary. | > > | 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 | return WRC_Prune; } } } return WRC_Continue; } static int analyzeAggregatesInSelect(Walker *pWalker, Select *pSelect){ UNUSED_PARAMETER(pWalker); UNUSED_PARAMETER(pSelect); return WRC_Continue; } /* ** Analyze the given expression looking for aggregate functions and ** for variables that need to be added to the pParse->aAgg[] array. ** Make additional entries to the pParse->aAgg[] array as necessary. |
︙ | ︙ |
Changes to src/tclsqlite.c.
︙ | ︙ | |||
1159 1160 1161 1162 1163 1164 1165 | assert( pPreStmt==0 ); nVar = sqlite3_bind_parameter_count(pStmt); nByte = sizeof(SqlPreparedStmt) + nVar*sizeof(Tcl_Obj *); pPreStmt = (SqlPreparedStmt*)Tcl_Alloc(nByte); memset(pPreStmt, 0, nByte); pPreStmt->pStmt = pStmt; | | | 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 | assert( pPreStmt==0 ); nVar = sqlite3_bind_parameter_count(pStmt); nByte = sizeof(SqlPreparedStmt) + nVar*sizeof(Tcl_Obj *); pPreStmt = (SqlPreparedStmt*)Tcl_Alloc(nByte); memset(pPreStmt, 0, nByte); pPreStmt->pStmt = pStmt; pPreStmt->nSql = (int)(*pzOut - zSql); pPreStmt->zSql = sqlite3_sql(pStmt); pPreStmt->apParm = (Tcl_Obj **)&pPreStmt[1]; #ifdef SQLITE_TEST if( pPreStmt->zSql==0 ){ char *zCopy = Tcl_Alloc(pPreStmt->nSql + 1); memcpy(zCopy, zSql, pPreStmt->nSql); zCopy[pPreStmt->nSql] = '\0'; |
︙ | ︙ | |||
3466 3467 3468 3469 3470 3471 3472 | Tcl_AppendResult(interp,"unable to open file \"", argv[1], "\" for reading", 0); return TCL_ERROR; } MD5Init(&ctx); for(;;){ int n; | | | 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 | Tcl_AppendResult(interp,"unable to open file \"", argv[1], "\" for reading", 0); return TCL_ERROR; } MD5Init(&ctx); for(;;){ int n; n = (int)fread(zBuf, 1, sizeof(zBuf), in); if( n<=0 ) break; MD5Update(&ctx, (unsigned char*)zBuf, (unsigned)n); } fclose(in); MD5Final(digest, &ctx); converter = (void(*)(unsigned char*,char*))cd; converter(digest, zBuf); |
︙ | ︙ | |||
3512 3513 3514 3515 3516 3517 3518 | if( p==0 ) return; if( !p->isInit ){ MD5Init(p); } for(i=0; i<argc; i++){ const char *zData = (char*)sqlite3_value_text(argv[i]); if( zData ){ | | | 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 | if( p==0 ) return; if( !p->isInit ){ MD5Init(p); } for(i=0; i<argc; i++){ const char *zData = (char*)sqlite3_value_text(argv[i]); if( zData ){ MD5Update(p, (unsigned char*)zData, (int)strlen(zData)); } } } static void md5finalize(sqlite3_context *context){ MD5Context *p; unsigned char digest[16]; char zBuf[33]; |
︙ | ︙ |
Changes to src/test1.c.
︙ | ︙ | |||
796 797 798 799 800 801 802 | char *z; /* The space */ }; /* ** Append text to a dstr */ static void dstrAppend(struct dstr *p, const char *z, int divider){ | | | 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 | char *z; /* The space */ }; /* ** Append text to a dstr */ static void dstrAppend(struct dstr *p, const char *z, int divider){ int n = (int)strlen(z); if( p->nUsed + n + 2 > p->nAlloc ){ char *zNew; p->nAlloc = p->nAlloc*2 + n + 200; zNew = sqlite3_realloc(p->z, p->nAlloc); if( zNew==0 ){ sqlite3_free(p->z); memset(p, 0, sizeof(*p)); |
︙ | ︙ | |||
3605 3606 3607 3608 3609 3610 3611 | if( Tcl_GetIntFromObj(interp, objv[3], &bytes) ) return TCL_ERROR; rc = sqlite3_prepare(db, zSql, bytes, &pStmt, objc>=5 ? &zTail : 0); Tcl_ResetResult(interp); if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR; if( zTail && objc>=5 ){ if( bytes>=0 ){ | | | | 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 | if( Tcl_GetIntFromObj(interp, objv[3], &bytes) ) return TCL_ERROR; rc = sqlite3_prepare(db, zSql, bytes, &pStmt, objc>=5 ? &zTail : 0); Tcl_ResetResult(interp); if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR; if( zTail && objc>=5 ){ if( bytes>=0 ){ bytes = bytes - (int)(zTail-zSql); } if( (int)strlen(zTail)<bytes ){ bytes = (int)strlen(zTail); } Tcl_ObjSetVar2(interp, objv[4], 0, Tcl_NewStringObj(zTail, bytes), 0); } if( rc!=SQLITE_OK ){ assert( pStmt==0 ); sprintf(zBuf, "(%d) ", rc); Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0); |
︙ | ︙ | |||
3663 3664 3665 3666 3667 3668 3669 | rc = sqlite3_prepare_v2(db, zSql, bytes, &pStmt, objc>=5 ? &zTail : 0); assert(rc==SQLITE_OK || pStmt==0); Tcl_ResetResult(interp); if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR; if( zTail && objc>=5 ){ if( bytes>=0 ){ | | | 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 | rc = sqlite3_prepare_v2(db, zSql, bytes, &pStmt, objc>=5 ? &zTail : 0); assert(rc==SQLITE_OK || pStmt==0); Tcl_ResetResult(interp); if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR; if( zTail && objc>=5 ){ if( bytes>=0 ){ bytes = bytes - (int)(zTail-zSql); } Tcl_ObjSetVar2(interp, objv[4], 0, Tcl_NewStringObj(zTail, bytes), 0); } if( rc!=SQLITE_OK ){ assert( pStmt==0 ); sprintf(zBuf, "(%d) ", rc); Tcl_AppendResult(interp, zBuf, sqlite3_errmsg(db), 0); |
︙ | ︙ | |||
3764 3765 3766 3767 3768 3769 3770 | if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR; if( rc ){ return TCL_ERROR; } if( objc>=5 ){ if( zTail ){ | | | 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 | if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR; if( rc ){ return TCL_ERROR; } if( objc>=5 ){ if( zTail ){ objlen = objlen - (int)((u8 *)zTail-(u8 *)zSql); }else{ objlen = 0; } pTail = Tcl_NewByteArrayObj((u8 *)zTail, objlen); Tcl_IncrRefCount(pTail); Tcl_ObjSetVar2(interp, objv[4], 0, pTail, 0); Tcl_DecrRefCount(pTail); |
︙ | ︙ | |||
3824 3825 3826 3827 3828 3829 3830 | if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR; if( rc ){ return TCL_ERROR; } if( objc>=5 ){ if( zTail ){ | | | 3824 3825 3826 3827 3828 3829 3830 3831 3832 3833 3834 3835 3836 3837 3838 | if( sqlite3TestErrCode(interp, db, rc) ) return TCL_ERROR; if( rc ){ return TCL_ERROR; } if( objc>=5 ){ if( zTail ){ objlen = objlen - (int)((u8 *)zTail-(u8 *)zSql); }else{ objlen = 0; } pTail = Tcl_NewByteArrayObj((u8 *)zTail, objlen); Tcl_IncrRefCount(pTail); Tcl_ObjSetVar2(interp, objv[4], 0, pTail, 0); Tcl_DecrRefCount(pTail); |
︙ | ︙ |
Changes to src/test2.c.
︙ | ︙ | |||
543 544 545 546 547 548 549 | Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " N-MEGABYTES FILE\"", 0); return TCL_ERROR; } if( Tcl_GetInt(interp, argv[1], &n) ) return TCL_ERROR; pVfs = sqlite3_vfs_find(0); | | | 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 | Tcl_AppendResult(interp, "wrong # args: should be \"", argv[0], " N-MEGABYTES FILE\"", 0); return TCL_ERROR; } if( Tcl_GetInt(interp, argv[1], &n) ) return TCL_ERROR; pVfs = sqlite3_vfs_find(0); nFile = (int)strlen(argv[2]); zFile = sqlite3_malloc( nFile+2 ); if( zFile==0 ) return TCL_ERROR; memcpy(zFile, argv[2], nFile+1); zFile[nFile+1] = 0; rc = sqlite3OsOpenMalloc(pVfs, zFile, &fd, (SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_MAIN_DB), 0 ); |
︙ | ︙ |
Changes to src/test3.c.
︙ | ︙ | |||
76 77 78 79 80 81 82 | if( Tcl_GetInt(interp, argv[2], &nCache) ) return TCL_ERROR; nRefSqlite3++; if( nRefSqlite3==1 ){ sDb.pVfs = sqlite3_vfs_find(0); sDb.mutex = sqlite3MutexAlloc(SQLITE_MUTEX_RECURSIVE); sqlite3_mutex_enter(sDb.mutex); } | | | 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | if( Tcl_GetInt(interp, argv[2], &nCache) ) return TCL_ERROR; nRefSqlite3++; if( nRefSqlite3==1 ){ sDb.pVfs = sqlite3_vfs_find(0); sDb.mutex = sqlite3MutexAlloc(SQLITE_MUTEX_RECURSIVE); sqlite3_mutex_enter(sDb.mutex); } n = (int)strlen(argv[1]); zFilename = sqlite3_malloc( n+2 ); if( zFilename==0 ) return TCL_ERROR; memcpy(zFilename, argv[1], n+1); zFilename[n+1] = 0; rc = sqlite3BtreeOpen(sDb.pVfs, zFilename, &sDb, &pBt, 0, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_MAIN_DB); sqlite3_free(zFilename); |
︙ | ︙ |
Changes to src/test6.c.
︙ | ︙ | |||
464 465 466 467 468 469 470 | */ static int cfSync(sqlite3_file *pFile, int flags){ CrashFile *pCrash = (CrashFile *)pFile; int isCrash = 0; const char *zName = pCrash->zName; const char *zCrashFile = g.zCrashFile; | | | | 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 | */ static int cfSync(sqlite3_file *pFile, int flags){ CrashFile *pCrash = (CrashFile *)pFile; int isCrash = 0; const char *zName = pCrash->zName; const char *zCrashFile = g.zCrashFile; int nName = (int)strlen(zName); int nCrashFile = (int)strlen(zCrashFile); if( nCrashFile>0 && zCrashFile[nCrashFile-1]=='*' ){ nCrashFile--; if( nName>nCrashFile ) nName = nCrashFile; } #ifdef TRACE_CRASHTEST |
︙ | ︙ |
Changes to src/test8.c.
︙ | ︙ | |||
188 189 190 191 192 193 194 | nBytes = sizeof(char *) * nCol; for(ii=0; ii<nCol; ii++){ const char *zName = sqlite3_column_name(pStmt, ii); if( !zName ){ rc = SQLITE_NOMEM; goto out; } | | | 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | nBytes = sizeof(char *) * nCol; for(ii=0; ii<nCol; ii++){ const char *zName = sqlite3_column_name(pStmt, ii); if( !zName ){ rc = SQLITE_NOMEM; goto out; } nBytes += (int)strlen(zName)+1; } aCol = (char **)sqlite3MallocZero(nBytes); if( !aCol ){ rc = SQLITE_NOMEM; goto out; } |
︙ | ︙ | |||
1213 1214 1215 1216 1217 1218 1219 | echo_vtab *p = (echo_vtab *)vtab; if( simulateVtabError(p, "xRename") ){ return SQLITE_ERROR; } if( p->isPattern ){ | | | 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 | echo_vtab *p = (echo_vtab *)vtab; if( simulateVtabError(p, "xRename") ){ return SQLITE_ERROR; } if( p->isPattern ){ int nThis = (int)strlen(p->zThis); char *zSql = sqlite3_mprintf("ALTER TABLE %s RENAME TO %s%s", p->zTableName, zNewName, &p->zTableName[nThis] ); rc = sqlite3_exec(p->db, zSql, 0, 0, 0); sqlite3_free(zSql); } |
︙ | ︙ |
Changes to src/test_func.c.
︙ | ︙ | |||
198 199 200 201 202 203 204 | char *zAux = sqlite3_get_auxdata(pCtx, i); if( zAux ){ zRet[i*2] = '1'; assert( strcmp(zAux,z)==0 ); }else { zRet[i*2] = '0'; } | | | 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 | char *zAux = sqlite3_get_auxdata(pCtx, i); if( zAux ){ zRet[i*2] = '1'; assert( strcmp(zAux,z)==0 ); }else { zRet[i*2] = '0'; } n = (int)strlen(z) + 1; zAux = testContextMalloc(pCtx, n); if( zAux ){ memcpy(zAux, z, n); sqlite3_set_auxdata(pCtx, i, zAux, free_test_auxdata); } zRet[i*2+1] = ' '; } |
︙ | ︙ |
Changes to src/test_fuzzer.c.
︙ | ︙ | |||
304 305 306 307 308 309 310 | int rc = SQLITE_OK; /* Return code */ int nFrom; /* Size of string zFrom, in bytes */ int nTo; /* Size of string zTo, in bytes */ fuzzer_rule *pRule = 0; /* New rule object to return */ if( zFrom==0 ) zFrom = ""; if( zTo==0 ) zTo = ""; | | | | 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 | int rc = SQLITE_OK; /* Return code */ int nFrom; /* Size of string zFrom, in bytes */ int nTo; /* Size of string zTo, in bytes */ fuzzer_rule *pRule = 0; /* New rule object to return */ if( zFrom==0 ) zFrom = ""; if( zTo==0 ) zTo = ""; nFrom = (int)strlen(zFrom); nTo = (int)strlen(zTo); /* Silently ignore null transformations */ if( strcmp(zFrom, zTo)==0 ){ *ppRule = 0; return SQLITE_OK; } |
︙ | ︙ | |||
444 445 446 447 448 449 450 | ** [pqr] becomes pqr ** `mno` becomes mno */ static char *fuzzerDequote(const char *zIn){ int nIn; /* Size of input string, in bytes */ char *zOut; /* Output (dequoted) string */ | | | | 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 | ** [pqr] becomes pqr ** `mno` becomes mno */ static char *fuzzerDequote(const char *zIn){ int nIn; /* Size of input string, in bytes */ char *zOut; /* Output (dequoted) string */ nIn = (int)strlen(zIn); zOut = sqlite3_malloc(nIn+1); if( zOut ){ char q = zIn[0]; /* Quote character (if any ) */ if( q!='[' && q!= '\'' && q!='"' && q!='`' ){ memcpy(zOut, zIn, nIn+1); }else{ int iOut = 0; /* Index of next byte to write to output */ int iIn; /* Index of next byte to read from input */ if( q=='[' ) q = ']'; for(iIn=1; iIn<nIn; iIn++){ if( zIn[iIn]==q ) iIn++; zOut[iOut++] = zIn[iIn]; } } assert( (int)strlen(zOut)<=nIn ); } return zOut; } /* ** xDisconnect/xDestroy method for the fuzzer module. */ |
︙ | ︙ | |||
509 510 511 512 513 514 515 | *pzErr = sqlite3_mprintf( "%s: wrong number of CREATE VIRTUAL TABLE arguments", zModule ); rc = SQLITE_ERROR; }else{ int nModule; /* Length of zModule, in bytes */ | | | 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 | *pzErr = sqlite3_mprintf( "%s: wrong number of CREATE VIRTUAL TABLE arguments", zModule ); rc = SQLITE_ERROR; }else{ int nModule; /* Length of zModule, in bytes */ nModule = (int)strlen(zModule); pNew = sqlite3_malloc( sizeof(*pNew) + nModule + 1); if( pNew==0 ){ rc = SQLITE_NOMEM; }else{ char *zTab; /* Dequoted name of fuzzer data table */ memset(pNew, 0, sizeof(*pNew)); |
︙ | ︙ | |||
866 867 868 869 870 871 872 | const char *zWord, fuzzer_cost rBaseCost ){ fuzzer_stem *pNew; fuzzer_rule *pRule; unsigned int h; | | | | 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 | const char *zWord, fuzzer_cost rBaseCost ){ fuzzer_stem *pNew; fuzzer_rule *pRule; unsigned int h; pNew = sqlite3_malloc( sizeof(*pNew) + (int)strlen(zWord) + 1 ); if( pNew==0 ) return 0; memset(pNew, 0, sizeof(*pNew)); pNew->zBasis = (char*)&pNew[1]; pNew->nBasis = (int)strlen(zWord); memcpy(pNew->zBasis, zWord, pNew->nBasis+1); pRule = pCur->pVtab->pRule; while( fuzzerSkipRule(pRule, pNew, pCur->iRuleset) ){ pRule = pRule->pNext; } pNew->pRule = pRule; pNew->n = -1; |
︙ | ︙ | |||
993 994 995 996 997 998 999 | pCur->nullRule.nTo = 0; pCur->nullRule.zFrom = ""; pCur->iRowid = 1; assert( pCur->pStem==0 ); /* If the query term is longer than FUZZER_MX_OUTPUT_LENGTH bytes, this ** query will return zero rows. */ | | | 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 | pCur->nullRule.nTo = 0; pCur->nullRule.zFrom = ""; pCur->iRowid = 1; assert( pCur->pStem==0 ); /* If the query term is longer than FUZZER_MX_OUTPUT_LENGTH bytes, this ** query will return zero rows. */ if( (int)strlen(zWord)<FUZZER_MX_OUTPUT_LENGTH ){ pCur->pStem = pStem = fuzzerNewStem(pCur, zWord, (fuzzer_cost)0); if( pStem==0 ) return SQLITE_NOMEM; pStem->pRule = &pCur->nullRule; pStem->n = pStem->nBasis; }else{ pCur->rLimit = 0; } |
︙ | ︙ |
Changes to src/test_hexio.c.
︙ | ︙ | |||
122 123 124 125 126 127 128 | in = fopen(zFile, "r"); } if( in==0 ){ Tcl_AppendResult(interp, "cannot open input file ", zFile, 0); return TCL_ERROR; } fseek(in, offset, SEEK_SET); | | | 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | in = fopen(zFile, "r"); } if( in==0 ){ Tcl_AppendResult(interp, "cannot open input file ", zFile, 0); return TCL_ERROR; } fseek(in, offset, SEEK_SET); got = (int)fread(zBuf, 1, amt, in); fclose(in); if( got<0 ){ got = 0; } sqlite3TestBinToHex(zBuf, got); Tcl_AppendResult(interp, zBuf, 0); sqlite3_free(zBuf); |
︙ | ︙ | |||
174 175 176 177 178 179 180 | out = fopen(zFile, "r+"); } if( out==0 ){ Tcl_AppendResult(interp, "cannot open output file ", zFile, 0); return TCL_ERROR; } fseek(out, offset, SEEK_SET); | | | 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 | out = fopen(zFile, "r+"); } if( out==0 ){ Tcl_AppendResult(interp, "cannot open output file ", zFile, 0); return TCL_ERROR; } fseek(out, offset, SEEK_SET); written = (int)fwrite(aOut, 1, nOut, out); sqlite3_free(aOut); fclose(out); Tcl_SetObjResult(interp, Tcl_NewIntObj(written)); return TCL_OK; } /* |
︙ | ︙ |
Changes to src/test_journal.c.
︙ | ︙ | |||
286 287 288 289 290 291 292 | ** ** c) There is currently a reserved lock on the file. **/ static jt_file *locateDatabaseHandle(const char *zJournal){ jt_file *pMain = 0; enterJtMutex(); for(pMain=g.pList; pMain; pMain=pMain->pNext){ | | | | 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 | ** ** c) There is currently a reserved lock on the file. **/ static jt_file *locateDatabaseHandle(const char *zJournal){ jt_file *pMain = 0; enterJtMutex(); for(pMain=g.pList; pMain; pMain=pMain->pNext){ int nName = (int)(strlen(zJournal) - strlen("-journal")); if( (pMain->flags&SQLITE_OPEN_MAIN_DB) && ((int)strlen(pMain->zName)==nName) && 0==memcmp(pMain->zName, zJournal, nName) && (pMain->eLock>=SQLITE_LOCK_RESERVED) ){ break; } } leaveJtMutex(); |
︙ | ︙ | |||
719 720 721 722 723 724 725 | /* ** Delete the file located at zPath. If the dirSync argument is true, ** ensure the file-system modifications are synced to disk before ** returning. */ static int jtDelete(sqlite3_vfs *pVfs, const char *zPath, int dirSync){ | | | 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 | /* ** Delete the file located at zPath. If the dirSync argument is true, ** ensure the file-system modifications are synced to disk before ** returning. */ static int jtDelete(sqlite3_vfs *pVfs, const char *zPath, int dirSync){ int nPath = (int)strlen(zPath); if( nPath>8 && 0==strcmp("-journal", &zPath[nPath-8]) ){ /* Deleting a journal file. The end of a transaction. */ jt_file *pMain = locateDatabaseHandle(zPath); if( pMain ){ closeTransaction(pMain); } } |
︙ | ︙ |
Changes to src/test_multiplex.c.
︙ | ︙ | |||
646 647 648 649 650 651 652 | int rc; sqlite3_vfs *pOrigVfs = gMultiplex.pOrigVfs; /* Real VFS */ rc = pOrigVfs->xDelete(pOrigVfs, zName, syncDir); if( rc==SQLITE_OK ){ /* If the main chunk was deleted successfully, also delete any subsequent ** chunks - starting with the last (highest numbered). */ | | | 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 | int rc; sqlite3_vfs *pOrigVfs = gMultiplex.pOrigVfs; /* Real VFS */ rc = pOrigVfs->xDelete(pOrigVfs, zName, syncDir); if( rc==SQLITE_OK ){ /* If the main chunk was deleted successfully, also delete any subsequent ** chunks - starting with the last (highest numbered). */ int nName = (int)strlen(zName); char *z; z = sqlite3_malloc(nName + 5); if( z==0 ){ rc = SQLITE_IOERR_NOMEM; }else{ int iChunk = 0; int bExists; |
︙ | ︙ |
Changes to src/test_onefile.c.
︙ | ︙ | |||
602 603 604 605 606 607 608 | } eType = ((flags&(SQLITE_OPEN_MAIN_DB))?DATABASE_FILE:JOURNAL_FILE); p->base.pMethods = &fs_io_methods; p->eType = eType; assert(strlen("-journal")==8); | | | 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 | } eType = ((flags&(SQLITE_OPEN_MAIN_DB))?DATABASE_FILE:JOURNAL_FILE); p->base.pMethods = &fs_io_methods; p->eType = eType; assert(strlen("-journal")==8); nName = (int)strlen(zName)-((eType==JOURNAL_FILE)?8:0); pReal=pFsVfs->pFileList; for(; pReal && strncmp(pReal->zName, zName, nName); pReal=pReal->pNext); if( !pReal ){ int real_flags = (flags&~(SQLITE_OPEN_MAIN_DB))|SQLITE_OPEN_TEMP_DB; sqlite3_int64 size; sqlite3_file *pRealFile; |
︙ | ︙ | |||
683 684 685 686 687 688 689 | ** returning. */ static int fsDelete(sqlite3_vfs *pVfs, const char *zPath, int dirSync){ int rc = SQLITE_OK; fs_vfs_t *pFsVfs = (fs_vfs_t *)pVfs; fs_real_file *pReal; sqlite3_file *pF; | | | 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 | ** returning. */ static int fsDelete(sqlite3_vfs *pVfs, const char *zPath, int dirSync){ int rc = SQLITE_OK; fs_vfs_t *pFsVfs = (fs_vfs_t *)pVfs; fs_real_file *pReal; sqlite3_file *pF; int nName = (int)strlen(zPath) - 8; assert(strlen("-journal")==8); assert(strcmp("-journal", &zPath[nName])==0); pReal = pFsVfs->pFileList; for(; pReal && strncmp(pReal->zName, zPath, nName); pReal=pReal->pNext); if( pReal ){ |
︙ | ︙ | |||
713 714 715 716 717 718 719 | const char *zPath, int flags, int *pResOut ){ fs_vfs_t *pFsVfs = (fs_vfs_t *)pVfs; fs_real_file *pReal; int isJournal = 0; | | | 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 | const char *zPath, int flags, int *pResOut ){ fs_vfs_t *pFsVfs = (fs_vfs_t *)pVfs; fs_real_file *pReal; int isJournal = 0; int nName = (int)strlen(zPath); if( flags!=SQLITE_ACCESS_EXISTS ){ sqlite3_vfs *pParent = ((fs_vfs_t *)pVfs)->pParent; return pParent->xAccess(pParent, zPath, flags, pResOut); } assert(strlen("-journal")==8); |
︙ | ︙ |
Changes to src/test_osinst.c.
︙ | ︙ | |||
667 668 669 670 671 672 673 | put32bits(&zRec[20], offset); p->nBuf += 24; } static void vfslog_string(sqlite3_vfs *pVfs, const char *zStr){ VfslogVfs *p = (VfslogVfs *)pVfs; unsigned char *zRec; | | | 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 | put32bits(&zRec[20], offset); p->nBuf += 24; } static void vfslog_string(sqlite3_vfs *pVfs, const char *zStr){ VfslogVfs *p = (VfslogVfs *)pVfs; unsigned char *zRec; int nStr = zStr ? (int)strlen(zStr) : 0; if( (4+nStr+p->nBuf)>sizeof(p->aBuf) ){ vfslog_flush(p); } zRec = (unsigned char *)&p->aBuf[p->nBuf]; put32bits(&zRec[0], nStr); if( zStr ){ memcpy(&zRec[4], zStr, nStr); |
︙ | ︙ | |||
716 717 718 719 720 721 722 | int nVfs; pParent = sqlite3_vfs_find(zParentVfs); if( !pParent ){ return SQLITE_ERROR; } | | | 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 | int nVfs; pParent = sqlite3_vfs_find(zParentVfs); if( !pParent ){ return SQLITE_ERROR; } nVfs = (int)strlen(zVfs); nByte = sizeof(VfslogVfs) + pParent->szOsFile + nVfs+1+pParent->mxPathname+1; p = (VfslogVfs *)sqlite3_malloc(nByte); memset(p, 0, nByte); p->pVfs = pParent; p->pLog = (sqlite3_file *)&p[1]; memcpy(&p->base, &vfslog_vfs, sizeof(sqlite3_vfs)); |
︙ | ︙ |
Changes to src/test_quota.c.
︙ | ︙ | |||
340 341 342 343 344 345 346 | int createFlag /* Try to create the file if not found */ ){ quotaFile *pFile = pGroup->pFiles; while( pFile && strcmp(pFile->zFilename, zName)!=0 ){ pFile = pFile->pNext; } if( pFile==0 && createFlag ){ | | | 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 | int createFlag /* Try to create the file if not found */ ){ quotaFile *pFile = pGroup->pFiles; while( pFile && strcmp(pFile->zFilename, zName)!=0 ){ pFile = pFile->pNext; } if( pFile==0 && createFlag ){ int nName = (int)(strlen(zName) & 0x3fffffff); pFile = (quotaFile *)sqlite3_malloc( sizeof(*pFile) + nName + 1 ); if( pFile ){ memset(pFile, 0, sizeof(*pFile)); pFile->zFilename = (char*)&pFile[1]; memcpy(pFile->zFilename, zName, nName+1); pFile->pNext = pGroup->pFiles; if( pGroup->pFiles ) pGroup->pFiles->ppPrev = &pFile->pNext; |
︙ | ︙ | |||
418 419 420 421 422 423 424 | /* ** Translate UTF8 to MBCS for use in fopen() calls. Return a pointer to the ** translated text.. Call quota_mbcs_free() to deallocate any memory ** used to store the returned pointer when done. */ static char *quota_utf8_to_mbcs(const char *zUtf8){ #if SQLITE_OS_WIN | | | 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 | /* ** Translate UTF8 to MBCS for use in fopen() calls. Return a pointer to the ** translated text.. Call quota_mbcs_free() to deallocate any memory ** used to store the returned pointer when done. */ static char *quota_utf8_to_mbcs(const char *zUtf8){ #if SQLITE_OS_WIN size_t n; /* Bytes in zUtf8 */ int nWide; /* number of UTF-16 characters */ int nMbcs; /* Bytes of MBCS */ LPWSTR zTmpWide; /* The UTF16 text */ char *zMbcs; /* The MBCS text */ int codepage; /* Code page used by fopen() */ n = strlen(zUtf8); |
︙ | ︙ | |||
896 897 898 899 900 901 902 | quotaGroup *pGroup; quotaEnter(); pGroup = gQuota.pGroup; while( pGroup && strcmp(pGroup->zPattern, zPattern)!=0 ){ pGroup = pGroup->pNext; } if( pGroup==0 ){ | | | 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 | quotaGroup *pGroup; quotaEnter(); pGroup = gQuota.pGroup; while( pGroup && strcmp(pGroup->zPattern, zPattern)!=0 ){ pGroup = pGroup->pNext; } if( pGroup==0 ){ int nPattern = (int)(strlen(zPattern) & 0x3fffffff); if( iLimit<=0 ){ quotaLeave(); return SQLITE_OK; } pGroup = (quotaGroup *)sqlite3_malloc( sizeof(*pGroup) + nPattern + 1 ); if( pGroup==0 ){ quotaLeave(); |
︙ | ︙ | |||
1238 1239 1240 1241 1242 1243 1244 | } /* ** Remove a managed file. Update quotas accordingly. */ int sqlite3_quota_remove(const char *zFilename){ char *zFull; /* Full pathname for zFilename */ | | | 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 | } /* ** Remove a managed file. Update quotas accordingly. */ int sqlite3_quota_remove(const char *zFilename){ char *zFull; /* Full pathname for zFilename */ size_t nFull; /* Number of bytes in zFilename */ int rc; /* Result code */ quotaGroup *pGroup; /* Group containing zFilename */ quotaFile *pFile; /* A file in the group */ quotaFile *pNextFile; /* next file in the group */ int diff; /* Difference between filenames */ char c; /* First character past end of pattern */ |
︙ | ︙ | |||
1578 1579 1580 1581 1582 1583 1584 | int objc, Tcl_Obj *CONST objv[] ){ quota_FILE *p; char *zBuf; int sz; int nElem; | | | 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 | int objc, Tcl_Obj *CONST objv[] ){ quota_FILE *p; char *zBuf; int sz; int nElem; size_t got; if( objc!=4 ){ Tcl_WrongNumArgs(interp, 1, objv, "HANDLE SIZE NELEM"); return TCL_ERROR; } p = sqlite3TestTextToPtr(Tcl_GetString(objv[1])); if( Tcl_GetIntFromObj(interp, objv[2], &sz) ) return TCL_ERROR; |
︙ | ︙ | |||
1613 1614 1615 1616 1617 1618 1619 | int objc, Tcl_Obj *CONST objv[] ){ quota_FILE *p; char *zBuf; int sz; int nElem; | | | | 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 | int objc, Tcl_Obj *CONST objv[] ){ quota_FILE *p; char *zBuf; int sz; int nElem; size_t got; if( objc!=5 ){ Tcl_WrongNumArgs(interp, 1, objv, "HANDLE SIZE NELEM CONTENT"); return TCL_ERROR; } p = sqlite3TestTextToPtr(Tcl_GetString(objv[1])); if( Tcl_GetIntFromObj(interp, objv[2], &sz) ) return TCL_ERROR; if( Tcl_GetIntFromObj(interp, objv[3], &nElem) ) return TCL_ERROR; zBuf = Tcl_GetString(objv[4]); got = sqlite3_quota_fwrite(zBuf, sz, nElem, p); Tcl_SetObjResult(interp, Tcl_NewWideIntObj(got)); return TCL_OK; } /* ** tclcmd: sqlite3_quota_fclose HANDLE */ static int test_quota_fclose( |
︙ | ︙ |
Changes to src/test_vfs.c.
︙ | ︙ | |||
780 781 782 783 784 785 786 | } /* Search for a TestvfsBuffer. Create a new one if required. */ for(pBuffer=p->pBuffer; pBuffer; pBuffer=pBuffer->pNext){ if( 0==strcmp(pFd->zFilename, pBuffer->zFile) ) break; } if( !pBuffer ){ | | | 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 | } /* Search for a TestvfsBuffer. Create a new one if required. */ for(pBuffer=p->pBuffer; pBuffer; pBuffer=pBuffer->pNext){ if( 0==strcmp(pFd->zFilename, pBuffer->zFile) ) break; } if( !pBuffer ){ int nByte = sizeof(TestvfsBuffer) + (int)strlen(pFd->zFilename) + 1; pBuffer = (TestvfsBuffer *)ckalloc(nByte); memset(pBuffer, 0, nByte); pBuffer->zFile = (char *)&pBuffer[1]; strcpy(pBuffer->zFile, pFd->zFilename); pBuffer->pNext = p->pBuffer; p->pBuffer = pBuffer; } |
︙ | ︙ | |||
862 863 864 865 866 867 868 | TestvfsFd *pFd = tvfsGetFd(pFile); Testvfs *p = (Testvfs *)(pFd->pVfs->pAppData); int nLock; char zLock[80]; if( p->pScript && p->mask&TESTVFS_SHMLOCK_MASK ){ sqlite3_snprintf(sizeof(zLock), zLock, "%d %d", ofst, n); | | | | 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 | TestvfsFd *pFd = tvfsGetFd(pFile); Testvfs *p = (Testvfs *)(pFd->pVfs->pAppData); int nLock; char zLock[80]; if( p->pScript && p->mask&TESTVFS_SHMLOCK_MASK ){ sqlite3_snprintf(sizeof(zLock), zLock, "%d %d", ofst, n); nLock = (int)strlen(zLock); if( flags & SQLITE_SHM_LOCK ){ strcpy(&zLock[nLock], " lock"); }else{ strcpy(&zLock[nLock], " unlock"); } nLock += (int)strlen(&zLock[nLock]); if( flags & SQLITE_SHM_SHARED ){ strcpy(&zLock[nLock], " shared"); }else{ strcpy(&zLock[nLock], " exclusive"); } tvfsExecTcl(p, "xShmLock", Tcl_NewStringObj(pFd->pShm->zFile, -1), pFd->pShmId, |
︙ | ︙ | |||
1392 1393 1394 1395 1396 1397 1398 | } if( szOsFile<sizeof(TestvfsFile) ){ szOsFile = sizeof(TestvfsFile); } zVfs = Tcl_GetString(objv[1]); | | | 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 | } if( szOsFile<sizeof(TestvfsFile) ){ szOsFile = sizeof(TestvfsFile); } zVfs = Tcl_GetString(objv[1]); nByte = sizeof(Testvfs) + (int)strlen(zVfs)+1; p = (Testvfs *)ckalloc(nByte); memset(p, 0, nByte); p->iDevchar = -1; p->iSectorsize = -1; /* Create the new object command before querying SQLite for a default VFS ** to use for 'real' IO operations. This is because creating the new VFS |
︙ | ︙ |
Changes to test/fts4merge3.test.
︙ | ︙ | |||
40 41 42 43 44 45 46 | set msg "this takes around 12 seconds" do_test "1.1 ($msg)" { fts3_build_db_2 20000 } {} # Run some queries on it, using the old and new versions. do_test 1.2 { sql1 "SELECT docid FROM t2 WHERE t2 MATCH 'abc'" } {1485} do_test 1.3 { sql2 "SELECT docid FROM t2 WHERE t2 MATCH 'abc'" } {1485} | | > > > | 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | set msg "this takes around 12 seconds" do_test "1.1 ($msg)" { fts3_build_db_2 20000 } {} # Run some queries on it, using the old and new versions. do_test 1.2 { sql1 "SELECT docid FROM t2 WHERE t2 MATCH 'abc'" } {1485} do_test 1.3 { sql2 "SELECT docid FROM t2 WHERE t2 MATCH 'abc'" } {1485} do_test 1.4 { set x [sql2 "PRAGMA page_count"] expr {$x>=1284 && $x<=1286} } {1} do_test 1.5 { sql2 { SELECT level, count(*) FROM t2_segdir GROUP BY level ORDER BY 1 } } [list 0 15 1 1 2 14 3 4] # Run some incr-merge operations on the db. for {set i 0} {$i<10} {incr i} { do_test 1.6.$i.1 { sql1 { INSERT INTO t2(t2) VALUES('merge=2,2') } } {} |
︙ | ︙ |