From 8bf4126c84341c5674fce578146992a36e5c26a8 Mon Sep 17 00:00:00 2001 From: drh Date: Wed, 30 Jan 2019 19:50:07 +0000 Subject: [PATCH] Change the error message slightly for when two or more indexes have the same rootpage. FossilOrigin-Name: 916c52dad414b224695d455a42af36f85dff216504c2aa67d1d2c5818cdca8d6 --- manifest | 18 +++++++++--------- manifest.uuid | 2 +- src/build.c | 2 +- test/corruptL.test | 4 ++-- test/fuzzdata8.db | Bin 868352 -> 880640 bytes 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/manifest b/manifest index 615a0d8823..5bd2ce1330 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C When\sparsing\sthe\sschema,\scheck\sfor\sduplicate\sindex\sroot\spage\snumbers\sbefore\sadding\sthe\sindex\sto\sthe\sschema\shash\stable. -D 2019-01-30T19:12:13.341 +C Change\sthe\serror\smessage\sslightly\sfor\swhen\stwo\sor\smore\sindexes\shave\sthe\nsame\srootpage. +D 2019-01-30T19:50:07.547 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 178d8eb6840771149cee40b322d1b3be30d330198c522c903c1b66fb5a1bfca4 @@ -458,7 +458,7 @@ F src/btmutex.c 8acc2f464ee76324bf13310df5692a262b801808984c1b79defb2503bbafadb6 F src/btree.c 79464668601b6d278954cf822ef484893e1434f85addda2bd9a323796b91b328 F src/btree.h febb2e817be499570b7a2e32a9bbb4b607a9234f6b84bb9ae84916d4806e96f2 F src/btreeInt.h cd82f0f08886078bf99b29e1a7045960b1ca5d9d5829c38607e1299c508eaf00 -F src/build.c f2805f5da53aa10c52323f5a7d976aade405dd70e52166ae4e7f35708577893e +F src/build.c fe6e3753c4cfc76f9c621a24ef5f6fd62aac5aa6c843710b542509f493274eca F src/callback.c 25dda5e1c2334a367b94a64077b1d06b2553369f616261ca6783c48bcb6bda73 F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/ctime.c 109e58d00f62e8e71ee1eb5944ac18b90171c928ab2e082e058056e1137cc20b @@ -757,7 +757,7 @@ F test/corruptH.test 79801d97ec5c2f9f3c87739aa1ec2eb786f96454 F test/corruptI.test a17bbf54fdde78d43cf3cc34b0057719fd4a173a3d824285b67dc5257c064c7b F test/corruptJ.test 4d5ccc4bf959464229a836d60142831ef76a5aa4 F test/corruptK.test 5ef338c560ca4dfb7360828da16f1829be4deba3b378cafdc7a1cdaf027eb5c4 -F test/corruptL.test 82855aa907c3f899c123e8388f0450df8fccb5016539c7b5e64695772e7595bb +F test/corruptL.test 0f64242b83db6d0bd5b6e38c205bf7c2a3bc6c9f80351f49c4dee1639aca60d8 F test/cost.test 51f4fcaae6e78ad5a57096831259ed6c760e2ac6876836e91c00030fad385b34 F test/count.test cb2e0f934c6eb33670044520748d2ecccd46259c F test/countofview.test e3d4cd6900e4e4f074968ab24b8b87d3671cd624961bef40fd3a6b8f574343cf @@ -992,7 +992,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db 3fc78e65dfe0be9df9e262075d5a335f18f627da47dfc691d1a7b822f34d4b99 -F test/fuzzdata8.db df6e7a32697f3e7be801fa90e02fe6ae9c1dbe7ce8a8a626af0febab35a54e96 +F test/fuzzdata8.db fe1b2ae0e7976f225ae9dd637eb67726154caf0da39ac329fc4a35d9991aef3b F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 @@ -1804,7 +1804,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 197edb235b785c68fda7be788efbc61137d9452886599415a927b959ade93c65 -R 614f1871a981a455ef4904657472e2dd -U dan -Z 10bfb2b527ca61a24c5f5b6dad4cafcc +P 6b360bc0b9ad18ccda9d58d43a8388d19999432bfdf294abcf5beb44ef990cb4 +R cb0273b303eb213fe70157df7871c9bb +U drh +Z 4c2226fa0a72348ad16843e693e2eabf diff --git a/manifest.uuid b/manifest.uuid index 17085cfd03..eac7b74d7c 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6b360bc0b9ad18ccda9d58d43a8388d19999432bfdf294abcf5beb44ef990cb4 \ No newline at end of file +916c52dad414b224695d455a42af36f85dff216504c2aa67d1d2c5818cdca8d6 \ No newline at end of file diff --git a/src/build.c b/src/build.c index ca8db87dd5..3c4b9db62b 100644 --- a/src/build.c +++ b/src/build.c @@ -3490,7 +3490,7 @@ void sqlite3CreateIndex( if( pTblName!=0 ){ pIndex->tnum = db->init.newTnum; if( sqlite3IndexHasDuplicateRootPage(pIndex) ){ - sqlite3ErrorMsg(pParse, "invalid root page"); + sqlite3ErrorMsg(pParse, "invalid rootpage"); pParse->rc = SQLITE_CORRUPT_BKPT; goto exit_create_index; } diff --git a/test/corruptL.test b/test/corruptL.test index 26ea3203f1..7b84058caa 100644 --- a/test/corruptL.test +++ b/test/corruptL.test @@ -627,7 +627,7 @@ do_catchsql_test 6.1 { INSERT INTO t1(b) VALUES(1); INSERT INTO t1(b) VALUES(2); COMMIT; -} {1 {malformed database schema (t1b) - invalid root page}} +} {1 {malformed database schema (t1b) - invalid rootpage}} #------------------------------------------------------------------------- reset_db @@ -720,6 +720,6 @@ do_test 7.0 { do_catchsql_test 7.1 { SELECT * FROM sqlite_master; -} {1 {malformed database schema (t1x1) - invalid root page}} +} {1 {malformed database schema (t1x1) - invalid rootpage}} finish_test diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 3579b464f16680d466fd2ddc849743202b6d9536..49dfb8ec71d4746365fd1d658d9faa69da0ec73f 100644 GIT binary patch delta 13058 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 N0nR&TK5MP-_kR89W=;PfmrEqN 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