** two or three significant digits, with the decimal point being the fourth
** character.
*/
-static void diskusedPercent(DiskUsed *p, double r){
+static void diskusedPercent(
+ DiskUsed *p, /* Context of the disk-usage analysis */
+ sqlite3_int64 num, /* Numerator of the fraction */
+ sqlite3_int64 denom /* Denominator of the fraction. Might be zero! */
+){
char zNum[100];
char *zDP;
int nLeadingDigit;
int sz;
+ double r;
+ if( num==0 ){
+ r = 0.0;
+ }else if( denom==0 ){
+ sqlite3_str_appendchar(p->pOut, 1, '\n');
+ return;
+ }else{
+ r = num*100.0/(double)denom;
+ }
sqlite3_snprintf(sizeof(zNum)-5, zNum, r>=10.0 ? "%.3g" :"%.2g", r);
sz = (int)strlen(zNum);
zDP = strchr(zNum, '.');
storage = total_pages*pgsz;
diskusedLine(p, "Bytes of storage consumed", "%lld\n", storage);
diskusedLine(p, "Bytes of payload", "%-11lld ", payload);
- diskusedPercent(p, payload*100.0/(double)storage);
+ diskusedPercent(p, payload, storage);
if( ovfl_cnt>0 ){
diskusedLine(p, "Bytes of payload in overflow","%-11lld ",ovfl_payload);
- diskusedPercent(p, ovfl_payload*100.0/(double)payload);
+ diskusedPercent(p, ovfl_payload, payload);
}
total_unused = leaf_unused + int_unused + ovfl_unused;
total_meta = storage - payload - total_unused;
diskusedLine(p, "Bytes of metadata","%-11lld ", total_meta);
- diskusedPercent(p, total_meta*100.0/(double)storage);
+ diskusedPercent(p, total_meta, storage);
if( cnt==1 ){
diskusedLine(p, "B-tree depth", "%lld\n", depth);
if( int_cell>1 ){
diskusedLine(p, "Maximum single-entry payload", "%lld\n", mx_payload);
if( nentry>0 ){
diskusedLine(p, "Entries that use overflow", "%-11lld ", ovfl_cnt);
- diskusedPercent(p, ovfl_cnt*100.0/(double)nentry);
+ diskusedPercent(p, ovfl_cnt, nentry);
}
if( int_pages>0 ){
diskusedLine(p, "Index pages used", "%lld\n", int_pages);
diskusedLine(p, "Unused bytes on overflow pages", "%lld\n", ovfl_unused);
}
diskusedLine(p, "Unused bytes on all pages", "%-11lld ", total_unused);
- diskusedPercent(p, total_unused*100.0/(double)storage);
+ diskusedPercent(p, total_unused, storage);
}
return diskusedStmtFinish(p, rc, pStmt);
}
"SELECT sum(leaf_pages+int_pages+ovfl_pages) FROM temp.%s", s.zSU);
if( rc ) return;
diskusedLine(&s, "Pages that store data", "%-11lld ", nPageInUse);
- diskusedPercent(&s, (nPageInUse*100.0)/(double)nPage);
+ diskusedPercent(&s, nPageInUse, nPage);
nFreeList = 0;
rc = diskusedSqlInt(&s, &nFreeList, "PRAGMA \"%w\".freelist_count",s.zSchema);
if( rc ) return;
diskusedLine(&s, "Pages on the freelist", "%-11lld ", nFreeList);
- diskusedPercent(&s, (nFreeList*100.0)/(double)nPage);
+ diskusedPercent(&s, nFreeList, nPage);
ii = 0;
rc = diskusedSqlInt(&s, &ii, "PRAGMA \"%w\".auto_vacuum", s.zSchema);
ii = (sqlite3_int64)ceil(rAvPage);
}
diskusedLine(&s, "Pages of auto-vacuum overhead", "%-11lld ", ii);
- diskusedPercent(&s, (ii*100.0)/(double)nPage);
+ diskusedPercent(&s, ii, nPage);
ii = 0;
rc = diskusedSqlInt(&s, &ii,
s.zSU);
if( rc ) return;
diskusedLine(&s, "Bytes of payload", "%-11lld ", ii);
- diskusedPercent(&s, ii*100.0/(double)(pgsz*nPage));
+ diskusedPercent(&s, ii, pgsz*nPage);
diskusedTitle(&s, "Page counts for all tables with their indexes");
pStmt = diskusedPrepare(&s,
while( (rc = sqlite3_step(pStmt))==SQLITE_ROW ){
sqlite3_int64 nn = sqlite3_column_int64(pStmt,1);
diskusedLine(&s, (const char*)sqlite3_column_text(pStmt,0), "%-11lld ", nn);
- diskusedPercent(&s, (nn*100.0)/(double)nPage);
+ diskusedPercent(&s, nn, nPage);
}
if( diskusedStmtFinish(&s, rc, pStmt) ) return;
while( (rc = sqlite3_step(pStmt))==SQLITE_ROW ){
sqlite3_int64 nn = sqlite3_column_int64(pStmt,1);
diskusedLine(&s, (const char*)sqlite3_column_text(pStmt,0), "%-11lld ", nn);
- diskusedPercent(&s, (nn*100.0)/(double)nPage);
+ diskusedPercent(&s, nn, nPage);
}
if( diskusedStmtFinish(&s, rc, pStmt) ) return;
-C Reduce\sthe\ssize\sof\stest\scases\sfor\sthe\sclosure\sextension\sso\sthat\sthey\nrun\sfaster.\s\sThe\sclosure\sextension\sis\snot\simportant\sfor\sanything\sanymore\nand\sis\sretained\smostly\sfor\shistorical\sreference.\s\sThere\sis\sno\spoint\sin\nburning\sCPU\scycles\stesting\sit\swith\slarge\scases.
-D 2026-08-02T17:22:13.875
+C Take\scare\sto\savoid\strying\sto\scompute\s0.0/0.0\sin\sthe\sdiskused\sextension.\nIf\ssuch\sa\svalue\sneeds\sto\sbe\sdisplayed,\sshow\sthe\sresult\sas\s0.0.\n[bugs:/info/2026-08-02T12:48:58Z|Bug\s2026-08-02T12:48:58Z]
+D 2026-08-02T18:27:00.100
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F ext/misc/csv.c 5ca451b9ce77322c4ce8476766e7ed18160e5c8b19e7cab76e13006d631b9e8f
F ext/misc/dbdump.c 678f1b9ae2317b4473f65d03132a2482c3f4b08920799ed80feedd2941a06680
F ext/misc/decimal.c 0e5504e949c45df8cc69e3754bfa4f35cb341f7c055e74187693cc1f2c33afbd
-F ext/misc/diskused.c 0ef61ab38a877430e104d24c6d55f172634563f584bb08af2f33eaa04acaf5eb
+F ext/misc/diskused.c 6cf94f90cb4254ad5a90fc5992d594f3b0f4e0fa635c3549859b57d77153adda
F ext/misc/eval.c d4ea2d9898fbe4d30d38ff675ee51958d3bb0601a145bade56dee8b8f438cc5b
F ext/misc/explain.c 04c9270fd8cf93a9bceb12d2f5f67e3f09a4e58b3e0efe14d24531444d2fffdf
F ext/misc/fileio.c f32d7488e229cc52283b6f8d9370b004aa92e7a3054aef320cbdbdecb08c4ee5
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P fccfd5c410c875c35b72475d442c9c1d384deaef1859ba05586841d6c0909e0d
-R 90778cc7b21b2749b9c21414bec95aee
+P 73350e128141ab21d8f4c1213a1cca4e153151d85e39643defd438341ed53d14
+R 5bb920d14f7dcd9ab98e3e630f8b621c
U drh
-Z f0ac2f799c0844b946d3f34a21fe99fa
+Z 5eb04644ba4cea841862ebf0d141d049
# Remove this line to create a well-formed Fossil manifest.