Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Further refinements to the faststat1.c utility. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | est_count_pragma |
Files: | files | file ages | folders |
SHA1: |
b051fd19bc5b4e5805154b40beb70367 |
User & Date: | drh 2016-10-25 19:21:18.947 |
Context
2016-10-25
| ||
19:39 | Simplifications to faststat1.c. Fix a bug in sqlite3MovetoProportional() for very large b-trees. (check-in: f7f78147c5 user: drh tags: est_count_pragma) | |
19:21 | Further refinements to the faststat1.c utility. (check-in: b051fd19bc user: drh tags: est_count_pragma) | |
18:28 | Enhance faststat1.c to deal better with WITHOUT ROWID tables. (check-in: 65444f2e35 user: drh tags: est_count_pragma) | |
Changes
Changes to tool/faststat1.c.
︙ | ︙ | |||
201 202 203 204 205 206 207 | apValue = (sqlite3_value**)&aCnt[nCol]; zRes = (char*)&apValue[nCol]; szRes = 30*(nCol+1); iLimit = n>10000 ? 100 : 20000; pStmt = db_prepare("PRAGMA btree_sample(\"%w\",0.0,%lld)", zIdx, n*2); | | > > > | 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | apValue = (sqlite3_value**)&aCnt[nCol]; zRes = (char*)&apValue[nCol]; szRes = 30*(nCol+1); iLimit = n>10000 ? 100 : 20000; pStmt = db_prepare("PRAGMA btree_sample(\"%w\",0.0,%lld)", zIdx, n*2); for(i=0; i<=N_SPAN; i++){ k = 0; while( k<iLimit && (rc = sqlite3_step(pStmt))==SQLITE_ROW ){ int iFirst; for(iFirst=0; iFirst<nCol; iFirst++){ if( apValue[iFirst]==0 ) break; if( columnNotEqual(pStmt, iFirst, apValue[iFirst]) ) break; } for(j=iFirst; j<nCol; j++){ aCnt[j]++; sqlite3_value_free(apValue[j]); apValue[j] = sqlite3_value_dup(sqlite3_column_value(pStmt,j)); } if( k==0 && iFirst==nCol ){ nRow += n/(N_SPAN+1) - iLimit; } nRow++; k++; } sqlite3_finalize(pStmt); if( rc!=SQLITE_ROW || i==N_SPAN-1 ) break; pStmt = db_prepare("PRAGMA btree_sample(\"%w\",%g,%lld)", zIdx, ((double)i)/(double)N_SPAN, n*2); |
︙ | ︙ | |||
402 403 404 405 406 407 408 | }else{ cmdlineError("unknown argument: %s", argv[i]); } } if( zDb==0 ){ cmdlineError("database filename required"); } | | | 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 | }else{ cmdlineError("unknown argument: %s", argv[i]); } } if( zDb==0 ){ cmdlineError("database filename required"); } rc = sqlite3_open_v2(zDb, &g.db, SQLITE_OPEN_READONLY, 0); if( rc ){ cmdlineError("cannot open database file \"%s\"", zDb); } rc = sqlite3_exec(g.db, "SELECT * FROM sqlite_master", 0, 0, &zErrMsg); if( rc || zErrMsg ){ cmdlineError("\"%s\" does not appear to be a valid SQLite database", zDb); } |
︙ | ︙ |