Fossil SCM
Make use of the new "aggregate mode" for the DBSTAT virtual table when computing the /repo-tabsize page, both as a test of DBSTAT and because the new mode is usually faster.
Commit
cc86de732a71c94b1843e1908b14028b80c825368229a8da8d15c0f28a105a36
Parent
e472ad36d663230…
1 file changed
+4
-4
+4
-4
| --- src/stat.c | ||
| +++ src/stat.c | ||
| @@ -606,13 +606,13 @@ | ||
| 606 | 606 | "CREATE TEMP TABLE trans(name TEXT PRIMARY KEY,tabname TEXT)WITHOUT ROWID;" |
| 607 | 607 | "INSERT INTO trans(name,tabname)" |
| 608 | 608 | " SELECT name, tbl_name FROM repository.sqlite_master;" |
| 609 | 609 | "CREATE TEMP TABLE piechart(amt REAL, label TEXT);" |
| 610 | 610 | "INSERT INTO piechart(amt,label)" |
| 611 | - " SELECT count(*), " | |
| 611 | + " SELECT sum(pageno)," | |
| 612 | 612 | " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)" |
| 613 | - " FROM dbstat('repository')" | |
| 613 | + " FROM dbstat('repository',TRUE)" | |
| 614 | 614 | " GROUP BY 2 ORDER BY 2;" |
| 615 | 615 | ); |
| 616 | 616 | nPageFree = db_int(0, "PRAGMA repository.freelist_count"); |
| 617 | 617 | if( nPageFree>0 ){ |
| 618 | 618 | db_multi_exec( |
| @@ -632,13 +632,13 @@ | ||
| 632 | 632 | "DELETE FROM trans;" |
| 633 | 633 | "INSERT INTO trans(name,tabname)" |
| 634 | 634 | " SELECT name, tbl_name FROM localdb.sqlite_master;" |
| 635 | 635 | "DELETE FROM piechart;" |
| 636 | 636 | "INSERT INTO piechart(amt,label)" |
| 637 | - " SELECT count(*), " | |
| 637 | + " SELECT sum(pageno), " | |
| 638 | 638 | " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)" |
| 639 | - " FROM dbstat('localdb')" | |
| 639 | + " FROM dbstat('localdb',TRUE)" | |
| 640 | 640 | " GROUP BY 2 ORDER BY 2;" |
| 641 | 641 | ); |
| 642 | 642 | nPageFree = db_int(0, "PRAGMA localdb.freelist_count"); |
| 643 | 643 | if( nPageFree>0 ){ |
| 644 | 644 | db_multi_exec( |
| 645 | 645 |
| --- src/stat.c | |
| +++ src/stat.c | |
| @@ -606,13 +606,13 @@ | |
| 606 | "CREATE TEMP TABLE trans(name TEXT PRIMARY KEY,tabname TEXT)WITHOUT ROWID;" |
| 607 | "INSERT INTO trans(name,tabname)" |
| 608 | " SELECT name, tbl_name FROM repository.sqlite_master;" |
| 609 | "CREATE TEMP TABLE piechart(amt REAL, label TEXT);" |
| 610 | "INSERT INTO piechart(amt,label)" |
| 611 | " SELECT count(*), " |
| 612 | " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)" |
| 613 | " FROM dbstat('repository')" |
| 614 | " GROUP BY 2 ORDER BY 2;" |
| 615 | ); |
| 616 | nPageFree = db_int(0, "PRAGMA repository.freelist_count"); |
| 617 | if( nPageFree>0 ){ |
| 618 | db_multi_exec( |
| @@ -632,13 +632,13 @@ | |
| 632 | "DELETE FROM trans;" |
| 633 | "INSERT INTO trans(name,tabname)" |
| 634 | " SELECT name, tbl_name FROM localdb.sqlite_master;" |
| 635 | "DELETE FROM piechart;" |
| 636 | "INSERT INTO piechart(amt,label)" |
| 637 | " SELECT count(*), " |
| 638 | " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)" |
| 639 | " FROM dbstat('localdb')" |
| 640 | " GROUP BY 2 ORDER BY 2;" |
| 641 | ); |
| 642 | nPageFree = db_int(0, "PRAGMA localdb.freelist_count"); |
| 643 | if( nPageFree>0 ){ |
| 644 | db_multi_exec( |
| 645 |
| --- src/stat.c | |
| +++ src/stat.c | |
| @@ -606,13 +606,13 @@ | |
| 606 | "CREATE TEMP TABLE trans(name TEXT PRIMARY KEY,tabname TEXT)WITHOUT ROWID;" |
| 607 | "INSERT INTO trans(name,tabname)" |
| 608 | " SELECT name, tbl_name FROM repository.sqlite_master;" |
| 609 | "CREATE TEMP TABLE piechart(amt REAL, label TEXT);" |
| 610 | "INSERT INTO piechart(amt,label)" |
| 611 | " SELECT sum(pageno)," |
| 612 | " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)" |
| 613 | " FROM dbstat('repository',TRUE)" |
| 614 | " GROUP BY 2 ORDER BY 2;" |
| 615 | ); |
| 616 | nPageFree = db_int(0, "PRAGMA repository.freelist_count"); |
| 617 | if( nPageFree>0 ){ |
| 618 | db_multi_exec( |
| @@ -632,13 +632,13 @@ | |
| 632 | "DELETE FROM trans;" |
| 633 | "INSERT INTO trans(name,tabname)" |
| 634 | " SELECT name, tbl_name FROM localdb.sqlite_master;" |
| 635 | "DELETE FROM piechart;" |
| 636 | "INSERT INTO piechart(amt,label)" |
| 637 | " SELECT sum(pageno), " |
| 638 | " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)" |
| 639 | " FROM dbstat('localdb',TRUE)" |
| 640 | " GROUP BY 2 ORDER BY 2;" |
| 641 | ); |
| 642 | nPageFree = db_int(0, "PRAGMA localdb.freelist_count"); |
| 643 | if( nPageFree>0 ){ |
| 644 | db_multi_exec( |
| 645 |