]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge further changes from trunk, including fix to dbdata.c.
authordan <Dan Kennedy>
Wed, 26 Oct 2022 18:22:22 +0000 (18:22 +0000)
committerdan <Dan Kennedy>
Wed, 26 Oct 2022 18:22:22 +0000 (18:22 +0000)
FossilOrigin-Name: bcf6b48d52c1ce656899f50bd508c0920cae8cf2ef3c0758a7633981f0f0f484

1  2 
Makefile.in
ext/recover/dbdata.c
ext/recover/recovercorrupt2.test
manifest
manifest.uuid
src/shell.c.in

diff --cc Makefile.in
Simple merge
index 29a6497beffab7eeedc8381e23f01d4afe758b83,32d529bb41bd26f9fbab475ba8977e7c5ad5e504..2c297e086c0e0167fed545fa85fcb4954dde1226
@@@ -844,10 -791,9 +857,10 @@@ static int dbdataColumn
            sqlite3_result_int64(ctx, pCsr->iIntkey);
          }else{
            sqlite3_int64 iType;
-           dbdataGetVarint(pCsr->pHdrPtr, &iType);
+           dbdataGetVarintU32(pCsr->pHdrPtr, &iType);
            dbdataValue(
 -              ctx, iType, pCsr->pPtr, &pCsr->pRec[pCsr->nRec] - pCsr->pPtr
 +              ctx, pCsr->enc, iType, pCsr->pPtr, 
 +              &pCsr->pRec[pCsr->nRec] - pCsr->pPtr
            );
          }
          break;
index cb5fa05baa9ad373f97ad8222e266fc9cf0d558f,0000000000000000000000000000000000000000..6b8fbeeeec5f661977c6c682b60426221164b321
mode 100644,000000..100644
--- /dev/null
@@@ -1,75 -1,0 +1,117 @@@
 +# 2022 August 28
 +#
 +# The author disclaims copyright to this source code.  In place of
 +# a legal notice, here is a blessing:
 +#
 +#    May you do good and not evil.
 +#    May you find forgiveness for yourself and forgive others.
 +#    May you share freely, never taking more than you give.
 +#
 +#***********************************************************************
 +#
 +
 +if {![info exists testdir]} {
 +  set testdir [file join [file dirname [info script]] .. .. test]
 +} 
 +source [file join [file dirname [info script]] recover_common.tcl]
 +source $testdir/tester.tcl
 +
 +set testprefix recovercorrupt2
 +
 +do_execsql_test 1.0 {
 +  PRAGMA page_size = 512;
 +  CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c);
 +  INSERT INTO t1 VALUES(1, 2, 3);
 +  INSERT INTO t1 VALUES(2, hex(randomblob(100)), randomblob(200));
 +  CREATE INDEX i1 ON t1(b, c);
 +  CREATE TABLE t2(a PRIMARY KEY, b, c) WITHOUT ROWID;
 +  INSERT INTO t2 VALUES(1, 2, 3);
 +  INSERT INTO t2 VALUES(2, hex(randomblob(100)), randomblob(200));
 +  ANALYZE;
 +  PRAGMA writable_schema = 1;
 +  UPDATE sqlite_schema SET sql = 'CREATE INDEX i1 ON o(world)' WHERE name='i1'; 
 +  DELETE FROM sqlite_schema WHERE name='sqlite_stat4';
 +}
 +
 +do_test 1.1 {
 +  set R [sqlite3_recover_init db main test.db2]
 +  $R run
 +  $R finish
 +} {}
 +
 +sqlite3 db2 test.db2
 +do_execsql_test -db db2 1.2 {
 +  SELECT sql FROM sqlite_schema
 +} {
 +  {CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c)}
 +  {CREATE TABLE t2(a PRIMARY KEY, b, c) WITHOUT ROWID} 
 +  {CREATE TABLE sqlite_stat1(tbl,idx,stat)} 
 +}
 +db2 close
 +
 +do_execsql_test 1.3 {
 +  PRAGMA writable_schema = 1;
 +  UPDATE sqlite_schema SET sql = 'CREATE TABLE t2 syntax error!' WHERE name='t2';
 +}
 +
 +do_test 1.4 {
 +  set R [sqlite3_recover_init db main test.db2]
 +  $R run
 +  $R finish
 +} {}
 +
 +sqlite3 db2 test.db2
 +do_execsql_test -db db2 1.5 {
 +  SELECT sql FROM sqlite_schema
 +} {
 +  {CREATE TABLE t1(a INTEGER PRIMARY KEY, b, c)}
 +  {CREATE TABLE sqlite_stat1(tbl,idx,stat)} 
 +}
 +db2 close
 +
++#-------------------------------------------------------------------------
++#
++reset_db
++do_test 2.0 {
++  sqlite3 db {}
++  db deserialize [decode_hexdb {
++| size 8192 pagesize 4096 filename x3.db
++| page 1 offset 0
++|      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
++|     16: 10 00 01 01 00 40 20 20 00 00 00 02 00 00 00 02   .....@  ........
++|     32: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04   ................
++|     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
++|     80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02   ................
++|     96: 00 2e 63 00 0d 00 00 00 01 0f d8 00 0f d8 00 00   ..c.............
++|   4048: 00 00 00 00 00 00 00 00 26 01 06 17 11 11 01 39   ........&......9
++|   4064: 74 61 62 6c 65 74 31 74 31 02 43 52 45 41 54 45   tablet1t1.CREATE
++|   4080: 20 54 41 42 4c 45 20 74 31 28 61 2c 62 2c 63 29    TABLE t1(a,b,c)
++| page 2 offset 4096
++|      0: 0d 00 00 00 01 0f ce 00 0f ce 00 00 00 00 00 00   ................
++|   4032: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff   ..............(.
++|   4048: ff ff ff ff ff ff ff 28 04 27 25 23 61 61 61 61   .........'%#aaaa
++|   4064: 61 61 61 61 61 61 61 61 61 62 62 62 62 62 62 62   aaaaaaaaabbbbbbb
++|   4080: 62 62 62 62 62 63 63 63 63 63 63 63 63 63 63 63   bbbbbccccccccccc
++| end x3.db
++}]} {}
++
++do_test 2.1 {
++  set R [sqlite3_recover_init db main test.db2]
++  $R run
++  $R finish
++} {}
++
++sqlite3 db2 test.db2
++do_execsql_test -db db2 2.2 {
++  SELECT sql FROM sqlite_schema
++} {
++  {CREATE TABLE t1(a,b,c)}
++}
++do_execsql_test -db db2 2.3 {
++  SELECT * FROM t1
++} {}
++db2 close
 +
 +
 +finish_test
 +
diff --cc manifest
index 03116d77d8c67734dd9e2753539fd12a002a10a7,7edad4429da231a9ba89562e2014d103a5c77d3c..e9680fd7eef7fb95f8693b3ef17b29dbd5765f9f
+++ b/manifest
@@@ -1,11 -1,11 +1,11 @@@
- C Merge\slatest\strunk\schanges\swith\sthis\sbranch.
- D 2022-10-25T11:05:31.760
 -C Make\sthe\sshell\s.recover\scommand\sand\sthe\sdbdata.c\smodule\smore\srobust\sin\sthe\sface\sof\scorrupted\sdatabases.
 -D 2022-10-26T18:04:34.995
++C Merge\sfurther\schanges\sfrom\strunk,\sincluding\sfix\sto\sdbdata.c.
++D 2022-10-26T18:22:22.756
  F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
  F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
  F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
- F Makefile.in b3d8ebf01cb78204988ee21e6b0d2d28c87f7d1f2b47ac23ed7a89802e68cb40
 -F Makefile.in f1d0ee0aad6cc81de195ab1da015eb7f4d16c76697266ab2a84706f868b0c736
++F Makefile.in 579150683deaff2d8e70559a3a117a82a740b2491d4ecb56debb6a6f7c1705cd
  F Makefile.linux-gcc f609543700659711fbd230eced1f01353117621dccae7b9fb70daa64236c5241
 -F Makefile.msc 905b7205ef708fea740b17f35d8a8ec7a7aa1e034ee53b708b75c094eeab4e21
 +F Makefile.msc ea790f1db3c02b62cb13416a680fa909b54bc1e0533cca222db0dae3f7af3db9
  F README.md 8b8df9ca852aeac4864eb1e400002633ee6db84065bd01b78c33817f97d31f5e
  F VERSION 8868ddfa6e1eee218286021a94b3e22d13e550c76c72d878857547ca001de24a
  F aclocal.m4 a5c22d164aff7ed549d53a90fa56d56955281f50
@@@ -385,22 -386,6 +385,22 @@@ F ext/rbu/rbuvacuum4.test a78898e438a44
  F ext/rbu/sqlite3rbu.c 8737cabdfbee84bb25a7851ecef8b1312be332761238da9be6ddb10c62ad4291
  F ext/rbu/sqlite3rbu.h 1dc88ab7bd32d0f15890ea08d23476c4198d3da3056985403991f8c9cd389812
  F ext/rbu/test_rbu.c 03f6f177096a5f822d68d8e4069ad8907fe572c62ff2d19b141f59742821828a
- F ext/recover/dbdata.c ca7b235fa2396e8fc2e950826872f820f31268ac2cb51368b0d655bb71568f07
++F ext/recover/dbdata.c a7b2fc6750139a7bb3455d784063d43f98c28f226b7f84d88270f1c083dc6b72
 +F ext/recover/recover1.test 93acc42f95259f8b34050ad75873685a305da76d6cb1727d003f45157a4a6402
 +F ext/recover/recover_common.tcl 6679af7dffc858e345053a91c9b0a897595b4a13007aceffafca75304ccb137c
 +F ext/recover/recoverclobber.test 294dcc894124ab4ca3a7b35766630742a3d25810fceac22220beb64f70a33a60
 +F ext/recover/recovercorrupt.test 6540aae95e17398dd70b44518367fd56588c44962cb276d2623a0fedba9efe9e
- F ext/recover/recovercorrupt2.test a131d8005337c092e2dfa3b84909ed67ae82d22399a8cfb8c984b2939969ca42
++F ext/recover/recovercorrupt2.test dff0c9f52888ae5956b1892ce502db42e6f51a666230369251bbbca923be541f
 +F ext/recover/recoverfault.test 3a0a32b9fc216592b97775d69220695b0926980c0f7424b7a59144e47d7cb568
 +F ext/recover/recoverfault2.test 321036336af23e778a87f148c4cc4407f88fbdab1fd72ddb661669be9020d36b
 +F ext/recover/recoverold.test 46e9d99b595fac583d4c67f74d7d89c20a435c752ef6eeb3e918b599940c88e0
 +F ext/recover/recoverpgsz.test 93e970eab05e4e89f8fd6b1bd23f9ec137ea09857e66ba0d4d27a83cd1ba4a89
 +F ext/recover/recoverrowid.test 1694a1a5526d825f71279f3d02ab02a1ee4c5265de18858bf54cb8ec54487ac8
 +F ext/recover/recoverslowidx.test f356bb9fba7ffd6fc50e045e419464f0129ac6e24decf6e919584f79c3493727
 +F ext/recover/recoversql.test f9872ff2114e13ffd8ee31e1de06919f62b9b48bc080191b5bd076d10becb60f
 +F ext/recover/sqlite3recover.c db8f2166dbbdfc09a58a85f51f8e848858858ca8b4915a2f9c8cd5fd5ca536a8
 +F ext/recover/sqlite3recover.h f698ccc94bd4da38761035415ad08c4549a408491ff9fd5f52d34d2214f64e36
 +F ext/recover/test_recover.c 61ec931e47abca6b2210f46239cafd9f3060741605e3d3c45a7c7a53f63dd957
  F ext/repair/README.md 92f5e8aae749a4dae14f02eea8e1bb42d4db2b6ce5e83dbcdd6b1446997e0c15
  F ext/repair/checkfreelist.c e21f06995ff4efdc1622dcceaea4dcba2caa83ca2f31a1607b98a8509168a996
  F ext/repair/checkindex.c 4383e4469c21e5b9ae321d0d63cec53e981af9d7a6564be6374f0eeb93dfc890
@@@ -519,20 -504,20 +519,20 @@@ F ext/wasm/common/whwasmutil.js 50d2ede
  F ext/wasm/demo-123-worker.html a0b58d9caef098a626a1a1db567076fca4245e8d60ba94557ede8684350a81ed
  F ext/wasm/demo-123.html 8c70a412ce386bd3796534257935eb1e3ea5c581e5d5aea0490b8232e570a508
  F ext/wasm/demo-123.js ebae30756585bca655b4ab2553ec9236a87c23ad24fc8652115dcedb06d28df6
- F ext/wasm/demo-jsstorage.html 409c4be4af5f207fb2877160724b91b33ea36a3cd8c204e8da1acb828ffe588e w ext/wasm/demo-kvvfs1.html
- F ext/wasm/demo-jsstorage.js 105596bd2ccd0b1deb5fde8e99b536e8242d4bb5932fac0c8403ff3a6bc547e8 w ext/wasm/demo-kvvfs1.js
- F ext/wasm/demo-worker1-promiser.html 1de7c248c7c2cfd4a5783d2aa154bce62d74c6de98ab22f5786620b3354ed15f w ext/wasm/testing-worker1-promiser.html
- F ext/wasm/demo-worker1-promiser.js f68ffbbe1c6086e18ce7961b8fc2b40dd88db174f59052e228c06b07484945ca w ext/wasm/testing-worker1-promiser.js
- F ext/wasm/demo-worker1.html 2c178c1890a2beb5a5fecb1453e796d067a4b8d3d2a04d65ca2eb1ab2c68ef5d w ext/wasm/testing2.html
- F ext/wasm/demo-worker1.js 8ba51d94c4601fa5c313d9e59b63b238f5305b5d5739ad21f4782a0161e6682e w ext/wasm/testing2.js
- F ext/wasm/dist.make b3b156061ff6a35ce59715632c9446cb58e0fc497021a93c778fed051a04fde1
- F ext/wasm/fiddle.make acdb1a402864f9b05a4c89805c5e91d88f5080652d8861f0865655b172243847
+ F ext/wasm/demo-jsstorage.html 409c4be4af5f207fb2877160724b91b33ea36a3cd8c204e8da1acb828ffe588e
+ F ext/wasm/demo-jsstorage.js 105596bd2ccd0b1deb5fde8e99b536e8242d4bb5932fac0c8403ff3a6bc547e8
+ F ext/wasm/demo-worker1-promiser.html 1de7c248c7c2cfd4a5783d2aa154bce62d74c6de98ab22f5786620b3354ed15f
+ F ext/wasm/demo-worker1-promiser.js f68ffbbe1c6086e18ce7961b8fc2b40dd88db174f59052e228c06b07484945ca
+ F ext/wasm/demo-worker1.html 2c178c1890a2beb5a5fecb1453e796d067a4b8d3d2a04d65ca2eb1ab2c68ef5d
+ F ext/wasm/demo-worker1.js 8ba51d94c4601fa5c313d9e59b63b238f5305b5d5739ad21f4782a0161e6682e
+ F ext/wasm/dist.make b687dc07db2dc9669369f126ac42c4ff6539dce2531063a0e75405c74a3cee1d
+ F ext/wasm/fiddle.make 68abe5dcfdd6fdf8dc1b715b94b96fae771b5b28bc1843997b9b1ec79407f2c9
  F ext/wasm/fiddle/emscripten.css 3d253a6fdb8983a2ac983855bfbdd4b6fa1ff267c28d69513dd6ef1f289ada3f
- F ext/wasm/fiddle/fiddle-worker.js 7ee53ca846071de5d46bb11a2a269a7990ef9cfd8abfae2a25cc948499783d78
- F ext/wasm/fiddle/fiddle.html 5daf54e8f3d7777cbb1ca4f93affe28858dbfff25841cb4ab81d694efed28ec2
+ F ext/wasm/fiddle/fiddle-worker.js 41b9796d689fabbef1ad9447496d14645eeb4101b534e54951fa5259c877c341
  F ext/wasm/fiddle/fiddle.js 974b995119ac443685d7d94d3b3c58c6a36540e9eb3fed7069d5653284071715
 -F ext/wasm/fiddle/index.html 5daf54e8f3d7777cbb1ca4f93affe28858dbfff25841cb4ab81d694efed28ec2
++F ext/wasm/fiddle/index.html 5daf54e8f3d7777cbb1ca4f93affe28858dbfff25841cb4ab81d694efed28ec2 w ext/wasm/fiddle/fiddle.html
  F ext/wasm/index-dist.html cb0da16cba0f21cda2c25724c5869102d48eb0af04446acd3cd0ca031f80ed19
- F ext/wasm/index.html 751bbf248ee3106cec92cc4e6e3f703cd5c94deff3c6b7a596154fb04ab3efac
+ F ext/wasm/index.html 6ac073d45d7602e1d8a5b493ce4204dc4a6c5594fdeeb12dec38c4e36ce473ad
  F ext/wasm/jaccwabyt/jaccwabyt.js 0d7f32817456a0f3937fcfd934afeb32154ca33580ab264dab6c285e6dbbd215
  F ext/wasm/jaccwabyt/jaccwabyt.md 9aa6951b529a8b29f578ec8f0355713c39584c92cf1708f63ba0cf917cb5b68e
  F ext/wasm/scratchpad-wasmfs-main.html 20cf6f1a8f368e70d01e8c17200e3eaa90f1c8e1029186d836d14b83845fbe06
@@@ -636,7 -621,7 +636,7 @@@ F src/random.c 546d6feb15ec69c1aafe9bb3
  F src/resolve.c efea4e5fbecfd6d0a9071b0be0d952620991673391b6ffaaf4c277b0bb674633
  F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92
  F src/select.c e5b6f930f068c9c5362fc76c704ae5cb5ef1e3f18759c2126f23b0cf04c0e263
- F src/shell.c.in d28a758ea56a8e9f38e27112e8b32f94be98068c17a5e3d352c6c2da5066a1d0
 -F src/shell.c.in 35873039518a51ce5c5a944183a82f615942ffc3923f41b8afe7d6289a28fdb6
++F src/shell.c.in c4497295b826971f35a7ec77c5fb33aea192c935d670a690cec71379b007eca4
  F src/sqlite.h.in d9c8a6243fc0a1c270d69db33758e34b810af3462f9bc5b4af113b347e07c69d
  F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
  F src/sqlite3ext.h 5336beea1868d99d2f62e628dbea55e97267dbff8193291ab175e960c5df9141
@@@ -2052,8 -2037,8 +2052,8 @@@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a9
  F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
  F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
  F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
- P f6d5ac807efcf6140016a8b8f0c74566c0bfc98ad92bd8fca03c5cc80ebf3dec 9c8df130b8137cb4705f805907d1ff754d7f4b07bf181e1d05f1798b7aa5f4f6
- R aefb033a9d457cee43177faf9cf7bf53
 -P 3b5aa50c223ac35c7d73e4629420a01408cd74d19ae5b887f91b7a657d91e026
 -R 35ce71983125759a6aec05074aeb42bb
++P 757e3f585959f4f113fee48fe3d504f037604c53a95c8d47ce5c2bccfb2af8ff 4eef562a00ae988f2426c9af51f4165c0e4cbccd601061664a0c54c19b9cc70f
++R fd8351a8bbdf0dfc78a1c53b0189bb2d
  U dan
- Z 7900a9dad5f38f0d2a40413478423567
 -Z abadf61b49ea483e6a667d1435917fe4
++Z 99bd3f3c58c53208f300189c934ad348
  # Remove this line to create a well-formed Fossil manifest.
diff --cc manifest.uuid
index 57e53b6be4c8208098b0016374c16ac462531477,a88c2839d9402083210e7214c2414e1e2d38b045..2bca4f120379911c7a2dfa01d99ce619ae4f033d
@@@ -1,1 -1,1 +1,1 @@@
- 757e3f585959f4f113fee48fe3d504f037604c53a95c8d47ce5c2bccfb2af8ff
 -4eef562a00ae988f2426c9af51f4165c0e4cbccd601061664a0c54c19b9cc70f
++bcf6b48d52c1ce656899f50bd508c0920cae8cf2ef3c0758a7633981f0f0f484
diff --cc src/shell.c.in
Simple merge