-C speedtest1.html:\swhen\svfs==kvvfs,\sincrease\s--size\sfrom\s2\sto\s4,\sas\senabled\sby\s[a4d40f6346e7].\s--size\s5\sis\s4.96mb\sout\sof\s(supposedly)\s5mb,\swhich\sworks\sbut\sis\sa\sbit\stoo\sclose\sto\sthe\sedge.
-D 2022-10-27T14:41:38.247
+C Change\sthe\sname\sof\sthe\s".recover"\scommand\soption\s"--freelist-corrupt"\sto\s"--ignore-freelist".
+D 2022-10-27T18:19:45.230
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F src/resolve.c efea4e5fbecfd6d0a9071b0be0d952620991673391b6ffaaf4c277b0bb674633
F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
F src/select.c 8a709a8e19b32d2c411eaae1a10e2ee214cf740288859a9f9a362fcb2f50eaf1
-F src/shell.c.in 02634e7996d087f24cb585aaec6296989e7addf306b6befc27a9a4d391262ea7
+F src/shell.c.in af6bf3efa19b22c72058427e3d7f7814b72929aee1bd58fd39b992c0f8383b60
F src/sqlite.h.in d9c8a6243fc0a1c270d69db33758e34b810af3462f9bc5b4af113b347e07c69d
F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
F src/sqlite3ext.h 5336beea1868d99d2f62e628dbea55e97267dbff8193291ab175e960c5df9141
F test/randexpr1.test eda062a97e60f9c38ae8d806b03b0ddf23d796df
F test/rbu.test 168573d353cd0fd10196b87b0caa322c144ef736
F test/rdonly.test 64e2696c322e3538df0b1ed624e21f9a23ed9ff8
-F test/recover.test ccb8c2623902a92ebb76770edd075cb4f75a4760bb7afde38026572c6e79070d
+F test/recover.test cd81539661b9a6263d68f7bfd1440f4ac0aeb68f0fa0370db32a9e706da89de7
F test/regexp1.test 83c631617357150f8054ca1d1fed40a552b0d0f8eb7a7f090c3be02cee9f9913
F test/regexp2.test 55ed41da802b0e284ac7e2fe944be3948f93ff25abbca0361a609acfed1368b5
F test/reindex.test cd9d6021729910ece82267b4f5e1b5ac2911a7566c43b43c176a6a4732e2118d
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P a4d40f6346e7eb2a5239684dba86f297358122768a4d4bf6786b6028f4300e04
-R 99c4e795333d2dc1049d59bf743d209d
-U stephan
-Z 2931f3e9dccb9e9bedf9ff1781ba6005
+P a608d584a8a68ebaf8566cffc9c33f59309b710e7b29229a15bef529702f35d5
+R acdd9868710d658cbd45f34ba638ca6b
+U dan
+Z 87ba6aaecfad0a3a8476812a05f3df34
# Remove this line to create a well-formed Fossil manifest.
-a608d584a8a68ebaf8566cffc9c33f59309b710e7b29229a15bef529702f35d5
\ No newline at end of file
+afce8443ace57c3c99c6810be98f05ed716ae504b68098726c869843c643bbf0
\ No newline at end of file
#endif
#if SQLITE_SHELL_HAVE_RECOVER
".recover Recover as much data as possible from corrupt db.",
- " --freelist-corrupt Assume the freelist is corrupt",
+ " --ignore-freelist Ignore pages that appear to be on db freelist",
" --recovery-db NAME Store recovery metadata in database file NAME",
" --lost-and-found TABLE Alternative name for the lost-and-found table",
" --no-rowids Do not attempt to recover rowid values",
int rc = SQLITE_OK;
const char *zRecoveryDb = ""; /* Name of "recovery" database */
const char *zLAF = "lost_and_found";
- int bFreelist = 1; /* 0 if --freelist-corrupt is specified */
+ int bFreelist = 1; /* 0 if --ignore-freelist is specified */
int bRowids = 1; /* 0 if --no-rowids */
sqlite3_recover *p = 0;
int i = 0;
int n;
if( z[0]=='-' && z[1]=='-' ) z++;
n = strlen30(z);
- if( n<=17 && memcmp("-freelist-corrupt", z, n)==0 ){
+ if( n<=17 && memcmp("-ignore-freelist", z, n)==0 ){
bFreelist = 0;
}else
if( n<=12 && memcmp("-recovery-db", z, n)==0 && i<(nArg-1) ){
}
}
-proc do_recover_test {tn {tsql {}} {res {}}} {
- set fd [open "|$::CLI test.db .recover"]
+proc recover_with_opts {opts} {
+ set cmd ".recover $opts"
+ set fd [open [list |$::CLI test.db $cmd]]
fconfigure $fd -encoding binary
fconfigure $fd -translation binary
set sql [read $fd]
forcedelete test.db2
sqlite3 db2 test.db2
execsql $sql db2
+ db2 close
+}
+
+proc do_recover_test {tn {tsql {}} {res {}}} {
+ recover_with_opts ""
+
+ sqlite3 db2 test.db2
if {$tsql==""} {
uplevel [list do_test $tn [list compare_dbs db db2] {}]
} else {
reset_db
do_recover_test 3.0
+#-------------------------------------------------------------------------
+reset_db
+do_execsql_test 4.0 {
+ CREATE TABLE t1(a, b, c);
+ CREATE TABLE t2(d, e, f);
+ CREATE TABLE t3(g, h, i);
+
+ INSERT INTO t2 VALUES(1, 2, 3);
+ INSERT INTO t2 VALUES('a', 'b', 'c');
+
+ INSERT INTO t3 VALUES('one', 'two', 'three');
+ DROP TABLE t1;
+ DROP TABLE t2;
+}
+
+recover_with_opts ""
+sqlite3 db2 test.db2
+do_execsql_test -db db2 4.1.1 {
+ SELECT name FROM sqlite_schema
+} {t3 lost_and_found}
+do_execsql_test -db db2 4.1.2 {
+ SELECT id, c0, c1, c2 FROM lost_and_found
+} {1 1 2 3 2 a b c}
+db2 close
+
+recover_with_opts -ignore-freelist
+sqlite3 db2 test.db2
+do_execsql_test -db db2 4.2.1 {
+ SELECT name FROM sqlite_schema
+} {t3}
+do_execsql_test -db db2 4.2.2 {
+ SELECT * FROM t3
+} {one two three}
+db2 close
+
finish_test