Fossil SCM
dbstat command: account for tags named wiki-X which are not wiki pages, fix ordering of event/forumpost queries which caused event (tech-note) count to get overwritten by forumpost count.
Commit
28a60efcf99db20350b555c932a0a33c8ceca91725dc609c4cec7a082802add0
Parent
88a93432050c52b…
1 file changed
+7
-3
+7
-3
| --- src/stat.c | ||
| +++ src/stat.c | ||
| @@ -392,29 +392,33 @@ | ||
| 392 | 392 | } |
| 393 | 393 | n = db_int(0, "SELECT COUNT(*) FROM event e WHERE e.type='ci'"); |
| 394 | 394 | fossil_print("%*s%,d\n", colWidth, "check-ins:", n); |
| 395 | 395 | n = db_int(0, "SELECT count(*) FROM filename /*scan*/"); |
| 396 | 396 | fossil_print("%*s%,d across all branches\n", colWidth, "files:", n); |
| 397 | - n = db_int(0, "SELECT count(*) FROM tag /*scan*/" | |
| 398 | - " WHERE tagname GLOB 'wiki-*'"); | |
| 397 | + n = db_int(0, "SELECT count(*) FROM (" | |
| 398 | + "SELECT DISTINCT substr(tagname,6) " | |
| 399 | + "FROM tag JOIN tagxref USING('tagid')" | |
| 400 | + " WHERE tagname GLOB 'wiki-*'" | |
| 401 | + " AND TYPEOF(tagxref.value+0)='integer'" | |
| 402 | + ")"); | |
| 399 | 403 | m = db_int(0, "SELECT COUNT(*) FROM event WHERE type='w'"); |
| 400 | 404 | fossil_print("%*s%,d (%,d changes)\n", colWidth, "wiki-pages:", n, m); |
| 401 | 405 | n = db_int(0, "SELECT count(*) FROM tag /*scan*/" |
| 402 | 406 | " WHERE tagname GLOB 'tkt-*'"); |
| 403 | 407 | m = db_int(0, "SELECT COUNT(*) FROM event WHERE type='t'"); |
| 404 | 408 | fossil_print("%*s%,d (%,d changes)\n", colWidth, "tickets:", n, m); |
| 405 | 409 | n = db_int(0, "SELECT COUNT(*) FROM event WHERE type='e'"); |
| 410 | + fossil_print("%*s%,d\n", colWidth, "events:", n); | |
| 406 | 411 | if( db_table_exists("repository","forumpost") ){ |
| 407 | 412 | n = db_int(0, "SELECT count(*) FROM forumpost/*scan*/"); |
| 408 | 413 | if( n>0 ){ |
| 409 | 414 | int nThread = db_int(0, "SELECT count(*) FROM forumpost" |
| 410 | 415 | " WHERE froot=fpid"); |
| 411 | 416 | fossil_print("%*s%,d (on %,d threads)\n", colWidth, "forum-posts:", |
| 412 | 417 | n, nThread); |
| 413 | 418 | } |
| 414 | 419 | } |
| 415 | - fossil_print("%*s%,d\n", colWidth, "events:", n); | |
| 416 | 420 | n = db_int(0, "SELECT COUNT(*) FROM event WHERE type='g'"); |
| 417 | 421 | fossil_print("%*s%,d\n", colWidth, "tag-changes:", n); |
| 418 | 422 | z = db_text(0, "SELECT datetime(mtime) || ' - about ' ||" |
| 419 | 423 | " CAST(julianday('now') - mtime AS INTEGER)" |
| 420 | 424 | " || ' days ago' FROM event " |
| 421 | 425 |
| --- src/stat.c | |
| +++ src/stat.c | |
| @@ -392,29 +392,33 @@ | |
| 392 | } |
| 393 | n = db_int(0, "SELECT COUNT(*) FROM event e WHERE e.type='ci'"); |
| 394 | fossil_print("%*s%,d\n", colWidth, "check-ins:", n); |
| 395 | n = db_int(0, "SELECT count(*) FROM filename /*scan*/"); |
| 396 | fossil_print("%*s%,d across all branches\n", colWidth, "files:", n); |
| 397 | n = db_int(0, "SELECT count(*) FROM tag /*scan*/" |
| 398 | " WHERE tagname GLOB 'wiki-*'"); |
| 399 | m = db_int(0, "SELECT COUNT(*) FROM event WHERE type='w'"); |
| 400 | fossil_print("%*s%,d (%,d changes)\n", colWidth, "wiki-pages:", n, m); |
| 401 | n = db_int(0, "SELECT count(*) FROM tag /*scan*/" |
| 402 | " WHERE tagname GLOB 'tkt-*'"); |
| 403 | m = db_int(0, "SELECT COUNT(*) FROM event WHERE type='t'"); |
| 404 | fossil_print("%*s%,d (%,d changes)\n", colWidth, "tickets:", n, m); |
| 405 | n = db_int(0, "SELECT COUNT(*) FROM event WHERE type='e'"); |
| 406 | if( db_table_exists("repository","forumpost") ){ |
| 407 | n = db_int(0, "SELECT count(*) FROM forumpost/*scan*/"); |
| 408 | if( n>0 ){ |
| 409 | int nThread = db_int(0, "SELECT count(*) FROM forumpost" |
| 410 | " WHERE froot=fpid"); |
| 411 | fossil_print("%*s%,d (on %,d threads)\n", colWidth, "forum-posts:", |
| 412 | n, nThread); |
| 413 | } |
| 414 | } |
| 415 | fossil_print("%*s%,d\n", colWidth, "events:", n); |
| 416 | n = db_int(0, "SELECT COUNT(*) FROM event WHERE type='g'"); |
| 417 | fossil_print("%*s%,d\n", colWidth, "tag-changes:", n); |
| 418 | z = db_text(0, "SELECT datetime(mtime) || ' - about ' ||" |
| 419 | " CAST(julianday('now') - mtime AS INTEGER)" |
| 420 | " || ' days ago' FROM event " |
| 421 |
| --- src/stat.c | |
| +++ src/stat.c | |
| @@ -392,29 +392,33 @@ | |
| 392 | } |
| 393 | n = db_int(0, "SELECT COUNT(*) FROM event e WHERE e.type='ci'"); |
| 394 | fossil_print("%*s%,d\n", colWidth, "check-ins:", n); |
| 395 | n = db_int(0, "SELECT count(*) FROM filename /*scan*/"); |
| 396 | fossil_print("%*s%,d across all branches\n", colWidth, "files:", n); |
| 397 | n = db_int(0, "SELECT count(*) FROM (" |
| 398 | "SELECT DISTINCT substr(tagname,6) " |
| 399 | "FROM tag JOIN tagxref USING('tagid')" |
| 400 | " WHERE tagname GLOB 'wiki-*'" |
| 401 | " AND TYPEOF(tagxref.value+0)='integer'" |
| 402 | ")"); |
| 403 | m = db_int(0, "SELECT COUNT(*) FROM event WHERE type='w'"); |
| 404 | fossil_print("%*s%,d (%,d changes)\n", colWidth, "wiki-pages:", n, m); |
| 405 | n = db_int(0, "SELECT count(*) FROM tag /*scan*/" |
| 406 | " WHERE tagname GLOB 'tkt-*'"); |
| 407 | m = db_int(0, "SELECT COUNT(*) FROM event WHERE type='t'"); |
| 408 | fossil_print("%*s%,d (%,d changes)\n", colWidth, "tickets:", n, m); |
| 409 | n = db_int(0, "SELECT COUNT(*) FROM event WHERE type='e'"); |
| 410 | fossil_print("%*s%,d\n", colWidth, "events:", n); |
| 411 | if( db_table_exists("repository","forumpost") ){ |
| 412 | n = db_int(0, "SELECT count(*) FROM forumpost/*scan*/"); |
| 413 | if( n>0 ){ |
| 414 | int nThread = db_int(0, "SELECT count(*) FROM forumpost" |
| 415 | " WHERE froot=fpid"); |
| 416 | fossil_print("%*s%,d (on %,d threads)\n", colWidth, "forum-posts:", |
| 417 | n, nThread); |
| 418 | } |
| 419 | } |
| 420 | n = db_int(0, "SELECT COUNT(*) FROM event WHERE type='g'"); |
| 421 | fossil_print("%*s%,d\n", colWidth, "tag-changes:", n); |
| 422 | z = db_text(0, "SELECT datetime(mtime) || ' - about ' ||" |
| 423 | " CAST(julianday('now') - mtime AS INTEGER)" |
| 424 | " || ' days ago' FROM event " |
| 425 |