# program.
#
+# Special case:
+#
+# sqlite3_checker --test FILENAME ARGS
+#
+# uses FILENAME in place of this script.
+#
+if {[lindex $argv 0]=="--test" && [llength $argv]>2} {
+ set file [lindex $argv 1]
+ set argv [lrange $argv 2 end]
+ source $file
+ exit 0
+}
+
+# Emulate a TCL shell
+#
proc tclsh {} {
set line {}
while {![eof stdin]} {
}
}
+# Print a usage message on standard error, then quit.
+#
proc usage {} {
set argv0 [file rootname [file tail [info nameofexecutable]]]
puts stderr "Usage: $argv0 OPTIONS database-filename"
Options:
+ --freelist Perform a freelist check
+
--tclsh Run the built-in TCL interpreter interactively (for debugging)
--version Show the version number of SQLite
set file_to_analyze {}
append argv {}
+set bFreelistCheck 0
+set bSummary 1
foreach arg $argv {
if {[regexp {^-+tclsh$} $arg]} {
tclsh
mem close
exit 0
}
+ if {[regexp {^-+freelist$} $arg]} {
+ set bFreelistCheck 1
+ set bSummary 0
+ continue
+ }
if {[regexp {^-} $arg]} {
puts stderr "Unknown option: $arg"
usage
puts stderr "File is not readable: $root_filename"
exit 1
}
+
+if {[catch {sqlite3 db $file_to_analyze} res]} {
+ puts stderr "Cannot open datababase $root_filename: $res"
+ exit 1
+}
+
+if {$bFreelistCheck} {
+ puts "freelist-check:"
+ flush stdout
+ puts [db one {SELECT checkfreelist('main')}]
+}
+if {$bSummary} {
+ set scale 0
+ set pgsz [db one {PRAGMA page_size}]
+ db eval {SELECT nPage*$pgsz AS sz, name, tbl_name
+ FROM sqlite_btreeinfo
+ WHERE type='index'
+ ORDER BY 1 DESC, name} {
+ if {$scale==0} {
+ if {$sz>10000000} {
+ set scale 1000000.0
+ set unit MB
+ } else {
+ set scale 1000.0
+ set unit KB
+ }
+ }
+ puts [format {%7.1f %s index %s of table %s} \
+ [expr {$sz/$scale}] $unit $name $tbl_name]
+ }
+}
-C Merge\sall\srecent\senhancements\sfrom\strunk.
-D 2017-10-31T18:15:36.138
+C Begin\sputting\sfunctionality\sinto\sthe\ssqlite3_checker\sbinary.
+D 2017-11-01T00:10:34.144
F Makefile.in b142eb20482922153ebc77b261cdfd0a560ed05a81e9f6d9a2b0e8192922a1d2
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc a55372a22454e742ba7c8f6edf05b83213ec01125166ad7dcee0567e2f7fc81b
F ext/repair/checkfreelist.c 0abb84b4545016d57ba1a2aa8884c72c73ed838968909858c03bc1f38fb6b054
F ext/repair/checkindex.c f33d90ed6a556ad03511f7932891c2fd47ad93ddc998a4ab8bb56f4adf6fb206
F ext/repair/sqlite3_checker.c.in 16d62615dfce1ff3eeac83d1a77fe376a7b660afa9db07e1fdd8b964dcc41510
-F ext/repair/sqlite3_checker.tcl 61437f3eb4de9ba044e0b72532dc13b7e0cf1a06e63c76198b1ef577cabe2de4
+F ext/repair/sqlite3_checker.tcl cc94d391dae61c5076cadd4789caa8a0cf19701a5f5cd19d329b77d2fe47a967
F ext/rtree/README 6315c0d73ebf0ec40dedb5aa0e942bc8b54e3761
F ext/rtree/rtree.c cc91b6905bf55512c6ebc7dfdd37ac81c86f1753db8cfa6d62f0ee864464044f
F ext/rtree/rtree.h 834dbcb82dc85b2481cde6a07cdadfddc99e9b9e
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 0c22f0d6d19e595c0577b0bad416522e71647f54d2eb5cda587e2ccc5f63dd6a bb39744f4b2b25c10d293e85db7579e2a99c639fdab45e93d1de75952b68b2de
-R 6d1ce2918085f767aa6a41a268922785
+P 24adf90ffb3ce9ff3c26efef0357f3a47312e8d11dc391ef2cc7e6873ef25895
+R f819f4cdc6b92e91586a5e2d567aa2dc
U drh
-Z 59d272efca4b8d35d600b1005fb03cf7
+Z e7d1ee3ba646c59ecaada1f36dfcbcb9
-24adf90ffb3ce9ff3c26efef0357f3a47312e8d11dc391ef2cc7e6873ef25895
\ No newline at end of file
+e82e883b93128e4d1105a82abe8d1860c0a15505b6ca421e187b9bbbc2fdc659
\ No newline at end of file