Fossil SCM

Use the DBSTAT virtual table as a table-valued function instead of creating a TEMP instance of the table, while generating the /repo-tabsize page.

drh 2016-09-28 16:15 trunk
Commit 14f83bc04992c48e225564f4b904e1b1acc00f8b
1 file changed +4 -7
+4 -7
--- src/stat.c
+++ src/stat.c
@@ -422,19 +422,18 @@
422422
style_submenu_element("Stat", "Repository Stats", "stat");
423423
if( g.perm.Admin ){
424424
style_submenu_element("Schema", "Repository Schema", "repo_schema");
425425
}
426426
db_multi_exec(
427
- "CREATE VIRTUAL TABLE temp.dbx USING dbstat(repository);"
428427
"CREATE TEMP TABLE trans(name TEXT PRIMARY KEY,tabname TEXT)WITHOUT ROWID;"
429428
"INSERT INTO trans(name,tabname)"
430429
" SELECT name, tbl_name FROM repository.sqlite_master;"
431430
"CREATE TEMP TABLE piechart(amt REAL, label TEXT);"
432431
"INSERT INTO piechart(amt,label)"
433432
" SELECT count(*), "
434
- " coalesce((SELECT tabname FROM trans WHERE trans.name=dbx.name),name)"
435
- " FROM dbx"
433
+ " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)"
434
+ " FROM dbstat('repository')"
436435
" GROUP BY 2 ORDER BY 2;"
437436
);
438437
nPageFree = db_int(0, "PRAGMA repository.freelist_count");
439438
if( nPageFree>0 ){
440439
db_multi_exec(
@@ -449,20 +448,18 @@
449448
piechart_render(800,500,PIE_OTHER|PIE_PERCENT);
450449
@ </svg></center>
451450
452451
if( g.localOpen ){
453452
db_multi_exec(
454
- "DROP TABLE temp.dbx;"
455
- "CREATE VIRTUAL TABLE temp.dbx USING dbstat(localdb);"
456453
"DELETE FROM trans;"
457454
"INSERT INTO trans(name,tabname)"
458455
" SELECT name, tbl_name FROM localdb.sqlite_master;"
459456
"DELETE FROM piechart;"
460457
"INSERT INTO piechart(amt,label)"
461458
" SELECT count(*), "
462
- " coalesce((SELECT tabname FROM trans WHERE trans.name=dbx.name),name)"
463
- " FROM dbx"
459
+ " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)"
460
+ " FROM dbstat('localdb')"
464461
" GROUP BY 2 ORDER BY 2;"
465462
);
466463
nPageFree = db_int(0, "PRAGMA localdb.freelist_count");
467464
if( nPageFree>0 ){
468465
db_multi_exec(
469466
--- src/stat.c
+++ src/stat.c
@@ -422,19 +422,18 @@
422 style_submenu_element("Stat", "Repository Stats", "stat");
423 if( g.perm.Admin ){
424 style_submenu_element("Schema", "Repository Schema", "repo_schema");
425 }
426 db_multi_exec(
427 "CREATE VIRTUAL TABLE temp.dbx USING dbstat(repository);"
428 "CREATE TEMP TABLE trans(name TEXT PRIMARY KEY,tabname TEXT)WITHOUT ROWID;"
429 "INSERT INTO trans(name,tabname)"
430 " SELECT name, tbl_name FROM repository.sqlite_master;"
431 "CREATE TEMP TABLE piechart(amt REAL, label TEXT);"
432 "INSERT INTO piechart(amt,label)"
433 " SELECT count(*), "
434 " coalesce((SELECT tabname FROM trans WHERE trans.name=dbx.name),name)"
435 " FROM dbx"
436 " GROUP BY 2 ORDER BY 2;"
437 );
438 nPageFree = db_int(0, "PRAGMA repository.freelist_count");
439 if( nPageFree>0 ){
440 db_multi_exec(
@@ -449,20 +448,18 @@
449 piechart_render(800,500,PIE_OTHER|PIE_PERCENT);
450 @ </svg></center>
451
452 if( g.localOpen ){
453 db_multi_exec(
454 "DROP TABLE temp.dbx;"
455 "CREATE VIRTUAL TABLE temp.dbx USING dbstat(localdb);"
456 "DELETE FROM trans;"
457 "INSERT INTO trans(name,tabname)"
458 " SELECT name, tbl_name FROM localdb.sqlite_master;"
459 "DELETE FROM piechart;"
460 "INSERT INTO piechart(amt,label)"
461 " SELECT count(*), "
462 " coalesce((SELECT tabname FROM trans WHERE trans.name=dbx.name),name)"
463 " FROM dbx"
464 " GROUP BY 2 ORDER BY 2;"
465 );
466 nPageFree = db_int(0, "PRAGMA localdb.freelist_count");
467 if( nPageFree>0 ){
468 db_multi_exec(
469
--- src/stat.c
+++ src/stat.c
@@ -422,19 +422,18 @@
422 style_submenu_element("Stat", "Repository Stats", "stat");
423 if( g.perm.Admin ){
424 style_submenu_element("Schema", "Repository Schema", "repo_schema");
425 }
426 db_multi_exec(
 
427 "CREATE TEMP TABLE trans(name TEXT PRIMARY KEY,tabname TEXT)WITHOUT ROWID;"
428 "INSERT INTO trans(name,tabname)"
429 " SELECT name, tbl_name FROM repository.sqlite_master;"
430 "CREATE TEMP TABLE piechart(amt REAL, label TEXT);"
431 "INSERT INTO piechart(amt,label)"
432 " SELECT count(*), "
433 " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)"
434 " FROM dbstat('repository')"
435 " GROUP BY 2 ORDER BY 2;"
436 );
437 nPageFree = db_int(0, "PRAGMA repository.freelist_count");
438 if( nPageFree>0 ){
439 db_multi_exec(
@@ -449,20 +448,18 @@
448 piechart_render(800,500,PIE_OTHER|PIE_PERCENT);
449 @ </svg></center>
450
451 if( g.localOpen ){
452 db_multi_exec(
 
 
453 "DELETE FROM trans;"
454 "INSERT INTO trans(name,tabname)"
455 " SELECT name, tbl_name FROM localdb.sqlite_master;"
456 "DELETE FROM piechart;"
457 "INSERT INTO piechart(amt,label)"
458 " SELECT count(*), "
459 " coalesce((SELECT tabname FROM trans WHERE trans.name=dbstat.name),name)"
460 " FROM dbstat('localdb')"
461 " GROUP BY 2 ORDER BY 2;"
462 );
463 nPageFree = db_int(0, "PRAGMA localdb.freelist_count");
464 if( nPageFree>0 ){
465 db_multi_exec(
466

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button