From: dan Date: Fri, 11 Dec 2020 14:22:44 +0000 (+0000) Subject: Fix the expert extension so that it handles generated columns correctly. X-Git-Tag: version-3.35.0~188 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=69871baa1589e6dc486fbbf82a6e90b1d98419dd;p=thirdparty%2Fsqlite.git Fix the expert extension so that it handles generated columns correctly. FossilOrigin-Name: c2ae7ba6f8f4b10bd734051a0cfa8ed9675bd58c82ede4e9eadfd7cbcc03b82d --- diff --git a/ext/expert/expert1.test b/ext/expert/expert1.test index f49f1f5e5c..0e6fc82604 100644 --- a/ext/expert/expert1.test +++ b/ext/expert/expert1.test @@ -28,6 +28,7 @@ if {[info commands sqlite3_expert_new]==""} { return } + set CLI [test_binary_name sqlite3] set CMD [test_binary_name sqlite3_expert] @@ -367,6 +368,29 @@ do_setup_rec_test $tn.17.5 { SEARCH TABLE example USING INDEX example_idx_0000cb3f (B=? AND A>?) } +do_setup_rec_test $tn.18.0 { + CREATE TABLE SomeObject ( + a INTEGER PRIMARY KEY, + x TEXT GENERATED ALWAYS AS(HEX(a)) VIRTUAL + ); +} { + SELECT x FROM SomeObject; +} { + (no new indexes) + SCAN TABLE SomeObject +} +do_setup_rec_test $tn.18.1 { + CREATE TABLE SomeObject ( + a INTEGER PRIMARY KEY, + x TEXT GENERATED ALWAYS AS(HEX(a)) VIRTUAL + ); +} { + SELECT * FROM SomeObject WHERE x=?; +} { + CREATE INDEX SomeObject_idx_00000078 ON SomeObject(x); + SEARCH TABLE SomeObject USING COVERING INDEX SomeObject_idx_00000078 (x=?) +} + } proc do_candidates_test {tn sql res} { @@ -430,5 +454,5 @@ do_execsql_test 5.3 { t2 t2_idx_0001295b {100 20 5} } - finish_test + diff --git a/ext/expert/sqlite3expert.c b/ext/expert/sqlite3expert.c index 5c13423204..863c6a3409 100644 --- a/ext/expert/sqlite3expert.c +++ b/ext/expert/sqlite3expert.c @@ -687,7 +687,7 @@ static int idxGetTableInfo( char *pCsr = 0; int nPk = 0; - rc = idxPrintfPrepareStmt(db, &p1, pzErrmsg, "PRAGMA table_info=%Q", zTab); + rc = idxPrintfPrepareStmt(db, &p1, pzErrmsg, "PRAGMA table_xinfo=%Q", zTab); while( rc==SQLITE_OK && SQLITE_ROW==sqlite3_step(p1) ){ const char *zCol = (const char*)sqlite3_column_text(p1, 1); nByte += 1 + STRLEN(zCol); diff --git a/manifest b/manifest index a3131d8cd4..ff78950e97 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Remove\sa\sredundant\sbranch\sadded\sby\s[56a54258560]. -D 2020-12-10T19:54:13.413 +C Fix\sthe\sexpert\sextension\sso\sthat\sit\shandles\sgenerated\scolumns\scorrectly. +D 2020-12-11T14:22:44.596 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -50,8 +50,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 dba6e752cc701621771f925f3872b183fa688f7b4a9f4822631fc02bdbffc45a -F ext/expert/sqlite3expert.c 216e250acc54b8aaa9ff5c1e1b2256788abc3994dd1d757626102718122e6a91 +F ext/expert/expert1.test 63d778d964e55ef2d1a723043d91c59e7dc6ef1649d91c78c0bef00f9c6f1427 +F ext/expert/sqlite3expert.c de51b187c629a4c4264d5de0b77862641e11426f7a963a92abf2d4077085fc8c F ext/expert/sqlite3expert.h ca81efc2679a92373a13a3e76a6138d0310e32be53d6c3bfaedabd158ea8969b F ext/expert/test_expert.c d56c194b769bdc90cf829a14c9ecbc1edca9c850b837a4d0b13be14095c32a72 F ext/fts1/README.txt 20ac73b006a70bcfd80069bdaf59214b6cf1db5e @@ -1889,7 +1889,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 56a54258560fab715b83967634b2bd4c04be43cded112b46e85da9f99ee02f7c -R c82b011ba062cfde3acc0789a727fd1f +P b4d6f6d728738710249ad74236c31a1872fdff7dadabd4c4a67d05826eb5df9e +R fb55f5147e16371ec8e31fd2331cfcf7 U dan -Z 9746b01cc9973ffd448104549b3bbdff +Z 166ee843647c304936c75f8093a2d2ca diff --git a/manifest.uuid b/manifest.uuid index 8a864002ee..3fc850b622 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b4d6f6d728738710249ad74236c31a1872fdff7dadabd4c4a67d05826eb5df9e \ No newline at end of file +c2ae7ba6f8f4b10bd734051a0cfa8ed9675bd58c82ede4e9eadfd7cbcc03b82d \ No newline at end of file