]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the --stats and --summary options to the wordcount.c test program.
authordrh <drh@noemail.net>
Thu, 7 Nov 2013 19:43:21 +0000 (19:43 +0000)
committerdrh <drh@noemail.net>
Thu, 7 Nov 2013 19:43:21 +0000 (19:43 +0000)
FossilOrigin-Name: 8aa21e6791d408c8f018bd779e09cb7e7179f884

manifest
manifest.uuid
test/wordcount.c

index 963c610298d017fdd201b5f1ab5c9dcb4d188881..ed50f198f97291f9380557fc7272fc9b510b12d8 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Increase\sthe\sversion\snumber\sto\s3.8.2.
-D 2013-11-07T18:40:39.882
+C Add\sthe\s--stats\sand\s--summary\soptions\sto\sthe\swordcount.c\stest\sprogram.
+D 2013-11-07T19:43:21.798
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in d12e4455cf7a36e42d3949876c1c3b88ff70867a
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -1083,7 +1083,7 @@ F test/without_rowid1.test aaa26da19d543cd8d3d2d0e686dfa255556c15c8
 F test/without_rowid2.test af260339f79d13cb220288b67cd287fbcf81ad99
 F test/without_rowid3.test eac3d5c8a1924725b58503a368f2cbd24fd6c8a0
 F test/without_rowid4.test 4e08bcbaee0399f35d58b5581881e7a6243d458a
-F test/wordcount.c 77aaf31e8107bc8aa22adea9f7ed9a4525157d8b
+F test/wordcount.c c1ed122d6d8c288c7f21922ad64bba206ac51646
 F test/zeroblob.test caaecfb4f908f7bc086ed238668049f96774d688
 F test/zerodamage.test 209d7ed441f44cc5299e4ebffbef06fd5aabfefd
 F tool/build-all-msvc.bat 1bac6adc3fdb4d9204f21d17b14be25778370e48 x
@@ -1135,7 +1135,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P f02ee5463084cef45ae412c51211b66de7e86baf
-R c1238a589294d1c15421f0bf326b2f50
+P 9ad5b74c26c5a18068a2418a2092a05c226912c2
+R 7eb08ca6a9c5e8c1ab9bbee56e904b5c
 U drh
-Z 818626e2278c5a358e5fcb9ad988230a
+Z ae0666d0d2115aaaa9008a758df6593e
index ca27b5f91fab4427f06bacfe6fdc58291af740a9..fbffe55460201a9f8335d9c72c6141d59fbbb575 100644 (file)
@@ -1 +1 @@
-9ad5b74c26c5a18068a2418a2092a05c226912c2
\ No newline at end of file
+8aa21e6791d408c8f018bd779e09cb7e7179f884
\ No newline at end of file
index b9f71091b2822020103bb0509073bd6e6ae1faa5..a90d989aff302ea1cef133cbebfbd60de2067ae7 100644 (file)
@@ -20,6 +20,8 @@
 **     --update             Use UPDATE mode
 **     --nocase             Add the NOCASE collating sequence to the words.
 **     --trace              Enable sqlite3_trace() output.
+**     --summary            Show summary information on the collected data.
+**     --stats              Show sqlite3_status() results at the end.
 **
 ** Modes:
 **
@@ -72,6 +74,20 @@ static void traceCallback(void *NotUsed, const char *zSql){
   printf("%s;\n", zSql);
 }
 
+/* An sqlite3_exec() callback that prints results on standard output,
+** each column separated by a single space. */
+static int printResult(void *NotUsed, int nArg, char **azArg, char **azNm){
+  int i;
+  const char *zFormat = "%s";
+  for(i=0; i<nArg; i++){
+    printf(zFormat, azArg[i]);
+    zFormat = " %s";
+  }
+  printf("\n");
+  return 0;
+}
+
+
 /* Define operating modes */
 #define MODE_INSERT     0
 #define MODE_REPLACE    1
@@ -85,6 +101,8 @@ int main(int argc, char **argv){
   int iMode = MODE_INSERT;      /* One of MODE_xxxxx */
   int useNocase = 0;            /* True for --nocase */
   int doTrace = 0;              /* True for --trace */
+  int showStats = 0;            /* True for --stats */
+  int showSummary = 0;          /* True for --summary */
   int i, j;                     /* Loop counters */
   sqlite3 *db;                  /* The SQLite database connection */
   char *zSql;                   /* Constructed SQL statement */
@@ -115,6 +133,10 @@ int main(int argc, char **argv){
         useNocase = 1;
       }else if( strcmp(z,"trace")==0 ){
         doTrace = 1;
+      }else if( strcmp(z,"stats")==0 ){
+        showStats = 1;
+      }else if( strcmp(z,"summary")==0 ){
+        showSummary = 1;
       }else{
         fatal_error("unknown option: %s\n", argv[i]);
       }
@@ -257,47 +279,61 @@ int main(int argc, char **argv){
   sqlite3_finalize(pUpdate);
   sqlite3_finalize(pSelect);
 
+  if( showSummary ){
+    sqlite3_exec(db, 
+      "SELECT '-- count(*):  ', count(*) FROM wordcount;\n"
+      "SELECT '-- sum(cnt):  ', sum(cnt) FROM wordcount;\n"
+      "SELECT '-- avg(cnt):  ', avg(cnt) FROM wordcount;\n"
+      "SELECT '-- sum(cnt=1):', sum(cnt=1) FROM wordcount;\n"
+      "SELECT '-- top 10:    ', group_concat(word, ', ') FROM "
+         "(SELECT word FROM wordcount ORDER BY cnt DESC LIMIT 10);\n",
+      printResult, 0, 0);
+  }
+
   /* Database connection statistics printed after both prepared statements
   ** have been finalized */
-  sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_USED, &iCur, &iHiwtr, 0);
-  printf("-- Lookaside Slots Used:        %d (max %d)\n", iCur,iHiwtr);
-  sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_HIT, &iCur, &iHiwtr, 0);
-  printf("-- Successful lookasides:       %d\n", iHiwtr);
-  sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE, &iCur, &iHiwtr, 0);
-  printf("-- Lookaside size faults:       %d\n", iHiwtr);
-  sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL, &iCur, &iHiwtr, 0);
-  printf("-- Lookaside OOM faults:        %d\n", iHiwtr);
-  sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_USED, &iCur, &iHiwtr, 0);
-  printf("-- Pager Heap Usage:            %d bytes\n", iCur);
-  sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_HIT, &iCur, &iHiwtr, 1);
-  printf("-- Page cache hits:             %d\n", iCur);
-  sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_MISS, &iCur, &iHiwtr, 1);
-  printf("-- Page cache misses:           %d\n", iCur); 
-  sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_WRITE, &iCur, &iHiwtr, 1);
-  printf("-- Page cache writes:           %d\n", iCur); 
-  sqlite3_db_status(db, SQLITE_DBSTATUS_SCHEMA_USED, &iCur, &iHiwtr, 0);
-  printf("-- Schema Heap Usage:           %d bytes\n", iCur); 
-  sqlite3_db_status(db, SQLITE_DBSTATUS_STMT_USED, &iCur, &iHiwtr, 0);
-  printf("-- Statement Heap Usage:        %d bytes\n", iCur); 
+  if( showStats ){
+    sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_USED, &iCur, &iHiwtr, 0);
+    printf("-- Lookaside Slots Used:        %d (max %d)\n", iCur,iHiwtr);
+    sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_HIT, &iCur, &iHiwtr, 0);
+    printf("-- Successful lookasides:       %d\n", iHiwtr);
+    sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE, &iCur,&iHiwtr,0);
+    printf("-- Lookaside size faults:       %d\n", iHiwtr);
+    sqlite3_db_status(db, SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL, &iCur,&iHiwtr,0);
+    printf("-- Lookaside OOM faults:        %d\n", iHiwtr);
+    sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_USED, &iCur, &iHiwtr, 0);
+    printf("-- Pager Heap Usage:            %d bytes\n", iCur);
+    sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_HIT, &iCur, &iHiwtr, 1);
+    printf("-- Page cache hits:             %d\n", iCur);
+    sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_MISS, &iCur, &iHiwtr, 1);
+    printf("-- Page cache misses:           %d\n", iCur); 
+    sqlite3_db_status(db, SQLITE_DBSTATUS_CACHE_WRITE, &iCur, &iHiwtr, 1);
+    printf("-- Page cache writes:           %d\n", iCur); 
+    sqlite3_db_status(db, SQLITE_DBSTATUS_SCHEMA_USED, &iCur, &iHiwtr, 0);
+    printf("-- Schema Heap Usage:           %d bytes\n", iCur); 
+    sqlite3_db_status(db, SQLITE_DBSTATUS_STMT_USED, &iCur, &iHiwtr, 0);
+    printf("-- Statement Heap Usage:        %d bytes\n", iCur); 
+  }
 
   sqlite3_close(db);
 
   /* Global memory usage statistics printed after the database connection
   ** has closed.  Memory usage should be zero at this point. */
-  sqlite3_status(SQLITE_STATUS_MEMORY_USED, &iCur, &iHiwtr, 0);
-  printf("-- Memory Used (bytes):         %d (max %d)\n", iCur,iHiwtr);
-  sqlite3_status(SQLITE_STATUS_MALLOC_COUNT, &iCur, &iHiwtr, 0);
-  printf("-- Outstanding Allocations:     %d (max %d)\n", iCur,iHiwtr);
-  sqlite3_status(SQLITE_STATUS_PAGECACHE_OVERFLOW, &iCur, &iHiwtr, 0);
-  printf("-- Pcache Overflow Bytes:       %d (max %d)\n", iCur,iHiwtr);
-  sqlite3_status(SQLITE_STATUS_SCRATCH_OVERFLOW, &iCur, &iHiwtr, 0);
-  printf("-- Scratch Overflow Bytes:      %d (max %d)\n", iCur,iHiwtr);
-  sqlite3_status(SQLITE_STATUS_MALLOC_SIZE, &iCur, &iHiwtr, 0);
-  printf("-- Largest Allocation:          %d bytes\n",iHiwtr);
-  sqlite3_status(SQLITE_STATUS_PAGECACHE_SIZE, &iCur, &iHiwtr, 0);
-  printf("-- Largest Pcache Allocation:   %d bytes\n",iHiwtr);
-  sqlite3_status(SQLITE_STATUS_SCRATCH_SIZE, &iCur, &iHiwtr, 0);
-  printf("-- Largest Scratch Allocation:  %d bytes\n", iHiwtr);
-
+  if( showStats ){
+    sqlite3_status(SQLITE_STATUS_MEMORY_USED, &iCur, &iHiwtr, 0);
+    printf("-- Memory Used (bytes):         %d (max %d)\n", iCur,iHiwtr);
+    sqlite3_status(SQLITE_STATUS_MALLOC_COUNT, &iCur, &iHiwtr, 0);
+    printf("-- Outstanding Allocations:     %d (max %d)\n", iCur,iHiwtr);
+    sqlite3_status(SQLITE_STATUS_PAGECACHE_OVERFLOW, &iCur, &iHiwtr, 0);
+    printf("-- Pcache Overflow Bytes:       %d (max %d)\n", iCur,iHiwtr);
+    sqlite3_status(SQLITE_STATUS_SCRATCH_OVERFLOW, &iCur, &iHiwtr, 0);
+    printf("-- Scratch Overflow Bytes:      %d (max %d)\n", iCur,iHiwtr);
+    sqlite3_status(SQLITE_STATUS_MALLOC_SIZE, &iCur, &iHiwtr, 0);
+    printf("-- Largest Allocation:          %d bytes\n",iHiwtr);
+    sqlite3_status(SQLITE_STATUS_PAGECACHE_SIZE, &iCur, &iHiwtr, 0);
+    printf("-- Largest Pcache Allocation:   %d bytes\n",iHiwtr);
+    sqlite3_status(SQLITE_STATUS_SCRATCH_SIZE, &iCur, &iHiwtr, 0);
+    printf("-- Largest Scratch Allocation:  %d bytes\n", iHiwtr);
+  }
   return 0;
 }