Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix an uninitialized variable and a misuse of memcpy(). |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | stat3-trunk |
Files: | files | file ages | folders |
SHA1: |
ee110d5a4a6f29400bb632a9a18c7dcd |
User & Date: | drh 2011-09-22 00:28:55.958 |
Context
2011-09-22
| ||
18:46 | Fix an issue in ANALYZE when STAT3 is disabled but both sqlite_stat2 and sqlite_stat3 tables exist. Also add testability tweaks to the STAT3 code. (check-in: 3ca7e449e2 user: drh tags: stat3-trunk) | |
00:28 | Fix an uninitialized variable and a misuse of memcpy(). (check-in: ee110d5a4a user: drh tags: stat3-trunk) | |
2011-09-21
| ||
00:09 | Pull in the latest changes from trunk. Update the STAT3 documentation. (check-in: 63fc3e4bea user: drh tags: stat3-trunk) | |
Changes
Changes to src/analyze.c.
︙ | ︙ | |||
335 336 337 338 339 340 341 | if( nEq>p->a[iMin].nEq || (nEq==p->a[iMin].nEq && h>p->a[iMin].iHash) ){ doInsert = 1; } } if( !doInsert ) return; if( p->nSample==p->mxSample ){ if( iMin<p->nSample ){ | | | 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 | if( nEq>p->a[iMin].nEq || (nEq==p->a[iMin].nEq && h>p->a[iMin].iHash) ){ doInsert = 1; } } if( !doInsert ) return; if( p->nSample==p->mxSample ){ if( iMin<p->nSample ){ memmove(&p->a[iMin], &p->a[iMin+1], sizeof(p->a[0])*(p->nSample-iMin-1)); } pSample = &p->a[p->nSample-1]; }else{ pSample = &p->a[p->nSample++]; } pSample->iRowid = rowid; pSample->nEq = nEq; |
︙ | ︙ |
Changes to src/where.c.
︙ | ︙ | |||
2921 2922 2923 2924 2925 2926 2927 | /* Loop over all indices looking for the best one to use */ for(; pProbe; pIdx=pProbe=pProbe->pNext){ const tRowcnt * const aiRowEst = pProbe->aiRowEst; double cost; /* Cost of using pProbe */ double nRow; /* Estimated number of rows in result set */ | | | 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 | /* Loop over all indices looking for the best one to use */ for(; pProbe; pIdx=pProbe=pProbe->pNext){ const tRowcnt * const aiRowEst = pProbe->aiRowEst; double cost; /* Cost of using pProbe */ double nRow; /* Estimated number of rows in result set */ double log10N = (double)1; /* base-10 logarithm of nRow (inexact) */ int rev; /* True to scan in reverse order */ int wsFlags = 0; Bitmask used = 0; /* The following variables are populated based on the properties of ** index being evaluated. They are then used to determine the expected ** cost and number of rows returned. |
︙ | ︙ |