From: dan Date: Wed, 10 Aug 2022 15:29:21 +0000 (+0000) Subject: Fix handling of columns with names that are SQL keywords in the ".expert" command. X-Git-Tag: version-3.40.0~249 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=217635f70911b98eb4ba0ccd4df646989eec2617;p=thirdparty%2Fsqlite.git Fix handling of columns with names that are SQL keywords in the ".expert" command. FossilOrigin-Name: 5e1b8221c385deb04a3ff5aafb2e9fc55aecc6ffc68328674e3afe56c4273e29 --- diff --git a/ext/expert/expert1.test b/ext/expert/expert1.test index 73541122d8..dee4eb9ec0 100644 --- a/ext/expert/expert1.test +++ b/ext/expert/expert1.test @@ -391,6 +391,16 @@ do_setup_rec_test $tn.18.1 { SEARCH SomeObject USING COVERING INDEX SomeObject_idx_00000078 (x=?) } + +do_setup_rec_test $tn.19.0 { + CREATE TABLE t1("index"); +} { + SELECT * FROM t1 ORDER BY "index"; +} { + CREATE INDEX t1_idx_01a7214e ON t1('index'); + SCAN t1 USING COVERING INDEX t1_idx_01a7214e +} + } proc do_candidates_test {tn sql res} { diff --git a/ext/expert/sqlite3expert.c b/ext/expert/sqlite3expert.c index f29b8a9e0b..c01feff58c 100644 --- a/ext/expert/sqlite3expert.c +++ b/ext/expert/sqlite3expert.c @@ -820,6 +820,10 @@ static char *idxAppendText(int *pRc, char *zIn, const char *zFmt, ...){ */ static int idxIdentifierRequiresQuotes(const char *zId){ int i; + int nId = STRLEN(zId); + + if( sqlite3_keyword_check(zId, nId) ) return 1; + for(i=0; zId[i]; i++){ if( !(zId[i]=='_') && !(zId[i]>='0' && zId[i]<='9') diff --git a/manifest b/manifest index 1fec492199..dea91279e4 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Allow\sthe\sname\sof\san\sindex\sto\scollide\swith\sa\stable\sin\sa\sdifferent\sschema. -D 2022-08-09T16:13:21.868 +C Fix\shandling\sof\scolumns\swith\snames\sthat\sare\sSQL\skeywords\sin\sthe\s".expert"\scommand. +D 2022-08-10T15:29:21.997 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -51,8 +51,8 @@ F ext/async/sqlite3async.c 6f247666b495c477628dd19364d279c78ea48cd90c72d9f9b98ad F ext/async/sqlite3async.h 46b47c79357b97ad85d20d2795942c0020dc20c532114a49808287f04aa5309a F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3 F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4 -F ext/expert/expert1.test 3c642a4e7bbb14f21ddab595436fb465a4733f47a0fe5b2855e1d5ff900ef08e -F ext/expert/sqlite3expert.c 6ca30d73b9ed75bd56d6e0d7f2c962d2affaa72c505458619d0ff5d9cdfac204 +F ext/expert/expert1.test 95b00567ce0775126a1b788af2d055255014714ecfddc97913864d2f9266e583 +F ext/expert/sqlite3expert.c a912efbad597eafdb0ce934ebc11039f3190b2d479685d89184e107f65d856e1 F ext/expert/sqlite3expert.h ca81efc2679a92373a13a3e76a6138d0310e32be53d6c3bfaedabd158ea8969b F ext/expert/test_expert.c d56c194b769bdc90cf829a14c9ecbc1edca9c850b837a4d0b13be14095c32a72 F ext/fiddle/EXPORTED_FUNCTIONS.fiddle 7fb73f7150ab79d83bb45a67d257553c905c78cd3d693101699243f36c5ae6c3 @@ -1982,8 +1982,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 60947da687d525e72e62bcddcdf4c5c819818855074cc318c9ee656e83897aef -R f4e408bf2436c98ebd7456a4b6d2719e -U drh -Z 37c870234d7cfb98492f5c9537ed0794 +P f963c2523872b59b8a7a14971f703f2eb0d021501b288597a958f6596885d0de +R f1b1ab8288a538b9d05ad6481f4e9c61 +U dan +Z 1bb598380018229fe8e4687805090be1 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 6ee9ccf9af..d499f9254e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -f963c2523872b59b8a7a14971f703f2eb0d021501b288597a958f6596885d0de \ No newline at end of file +5e1b8221c385deb04a3ff5aafb2e9fc55aecc6ffc68328674e3afe56c4273e29 \ No newline at end of file