From: dan Date: Tue, 21 Jan 2020 16:23:17 +0000 (+0000) Subject: Fix a problem with using views in SQLITE_OMIT_VIRTUAL_TABLE builds. Also some test... X-Git-Tag: version-3.31.0~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8c812f98a31e90793afa2a7f706de3e186f9b600;p=thirdparty%2Fsqlite.git Fix a problem with using views in SQLITE_OMIT_VIRTUAL_TABLE builds. Also some test case fixes required for the same builds. FossilOrigin-Name: 934ee8bdb481a5cbd3d9c5f53028073129d3bca4fee14fe4a49bbf9c0c9d74f7 --- diff --git a/manifest b/manifest index 276abf0534..e4998aff52 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\scase\sin\sfts3auto.test\sthat\sfails\sfor\sSQLITE_DISABLE_FTS4_DEFERRED\sbuilds. -D 2020-01-21T15:01:14.246 +C Fix\sa\sproblem\swith\susing\sviews\sin\sSQLITE_OMIT_VIRTUAL_TABLE\sbuilds.\sAlso\ssome\stest\scase\sfixes\srequired\sfor\sthe\ssame\sbuilds. +D 2020-01-21T16:23:17.784 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -531,7 +531,7 @@ F src/printf.c 9be6945837c839ba57837b4bc3af349eba630920fa5532aa518816defe42a7d4 F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384 F src/resolve.c f0781c9e180028b279bc4ff079ad54f4727223d470c8d2343643fcaf79b67740 F src/rowset.c d977b011993aaea002cab3e0bb2ce50cf346000dff94e944d547b989f4b1fe93 -F src/select.c 5924f8df8f07fa045e90e41022fb18539a2dd6a9198d11889e9905103652c656 +F src/select.c 3f7aecf64b08b018b89e4fe16ea621cc9a0e3f3801e9e5638cfe1a6035fa1581 F src/shell.c.in c2e20c43a44fb5588a6c27ce60589538fbf4794fd7686f5b2598eca22eaae1fa F src/sqlite.h.in 75d0304247a2154122d6d06f12219c1e29291d72304f0eeef4c1ec6b1409b443 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 @@ -1088,7 +1088,7 @@ F test/ioerr4.test f130fe9e71008577b342b8874d52984bd04ede2c F test/ioerr5.test 2edfa4fb0f896f733071303b42224df8bedd9da4 F test/ioerr6.test a395a6ab144b26a9e3e21059a1ab6a7149cca65b F test/istrue.test 75327829744e65cc8700e69340b8e6c192e10e39dfae7ccb0e970d3c4f49090a -F test/join.test 0e8d3f4092897c717abcaf64e2e7b298e1cb143e2436010c57cfed5596bf6d30 +F test/join.test bca044589e94bb466e4c1e91fb6fecdc3f3326ca6b3f590f555f1958156eb321 F test/join2.test 659bc6193f5c3fe20fa444dd2c91713db8c33e376b098b860644e175e87b8dbc F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0 F test/join4.test 1a352e4e267114444c29266ce79e941af5885916 @@ -1278,7 +1278,7 @@ F test/rowvalue7.test c1cbdbf407029db01f87764097c6ac02a1c5a37efd2776eff32a9cdfdf F test/rowvalue8.test 5900eddad9e2c3c2e26f1a95f74aafc1232ee5e0 F test/rowvalue9.test d8dd2c6ecac432dadaa79e41dc2434f007be1b6b F test/rowvaluefault.test 7cd9ccc6c2fbdd881672984087aad0491bb75504 -F test/rowvaluevtab.test d166df5b666662de1ebf40d6f3849f8a76b34e17183a6cc7f81b420c462ce447 +F test/rowvaluevtab.test cd9747bb3f308086944c07968f547ad6b05022e698d80b9ffbdfe09ce0b8da6f F test/rtree.test 0c8d9dd458d6824e59683c19ab2ffa9ef946f798 F test/run-wordcount.sh 891e89c4c2d16e629cd45951d4ed899ad12afc09 F test/savepoint.test 1f8a6b1aea9a0d05837adc463d4bf47bd9d0f1c842f1c2a9caccd639baf34bf9 @@ -1593,7 +1593,7 @@ F test/triggerC.test 29f5a28d0fe39e6e2c01f6e1f53f08c0955170ae10a63ad023e33cb0a16 F test/triggerD.test 8e7f3921a92a5797d472732108109e44575fa650 F test/triggerE.test ede2e4bce4ba802337bd69d39447fa04a938e06d84a8bfc53c76850fc36ed86d F test/triggerF.test 5d76f0a8c428ff87a4d5ed52da06f6096a2c787a1e21b846111dfac4123de3ad -F test/triggerG.test d5caeef6144ede2426dd13211fd72248241ff2ebc68e12a4c0bf30f5faa21499 +F test/triggerG.test 2b816093c91ba73c733cfa8aedcc210ad819d72a98b1da30768a3c56505233e9 F test/trustschema1.test 4e970aef0bfe0cee139703cc7209d0e0f07725d999b180ba50770f49edef1494 F test/tt3_checkpoint.c 9e75cf7c1c364f52e1c47fd0f14c4340a9db0fe1 F test/tt3_index.c 39eec10a35f57672225be4d182862152896dee4a @@ -1857,7 +1857,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 c7e29458a73bbe73a1429477d0c01d5a7b870ab75d3cb08a703be21714e439b7 -R e1c2ef9a222166839d451e8e8b569689 +P d241055ead935f0e461a67f483788bcd59f7e8d65ade54b9c7c7c4fec9414102 +R f76ed78deea8ecda656692c47e3b99f8 U dan -Z e0020253221c64d53f32a20e335969a5 +Z f02cf9c138fa976fbef3a11edcb33089 diff --git a/manifest.uuid b/manifest.uuid index fe5d67694e..6cae8ce5f9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d241055ead935f0e461a67f483788bcd59f7e8d65ade54b9c7c7c4fec9414102 \ No newline at end of file +934ee8bdb481a5cbd3d9c5f53028073129d3bca4fee14fe4a49bbf9c0c9d74f7 \ No newline at end of file diff --git a/src/select.c b/src/select.c index b9e5b0b434..595b6eb6b2 100644 --- a/src/select.c +++ b/src/select.c @@ -4970,7 +4970,7 @@ static int selectExpander(Walker *pWalker, Select *p){ if( !IsVirtual(pTab) && cannotBeFunction(pParse, pFrom) ){ return WRC_Abort; } -#if !defined(SQLITE_OMIT_VIEW) && !defined(SQLITE_OMIT_VIRTUALTABLE) +#if !defined(SQLITE_OMIT_VIEW) || !defined(SQLITE_OMIT_VIRTUALTABLE) if( IsVirtual(pTab) || pTab->pSelect ){ i16 nCol; u8 eCodeOrig = pWalker->eCode; @@ -4980,6 +4980,7 @@ static int selectExpander(Walker *pWalker, Select *p){ sqlite3ErrorMsg(pParse, "access to view \"%s\" prohibited", pTab->zName); } +#ifndef SQLITE_OMIT_VIRTUALTABLE if( IsVirtual(pTab) && pFrom->fg.fromDDL && ALWAYS(pTab->pVTable!=0) @@ -4988,6 +4989,7 @@ static int selectExpander(Walker *pWalker, Select *p){ sqlite3ErrorMsg(pParse, "unsafe use of virtual table \"%s\"", pTab->zName); } +#endif pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0); nCol = pTab->nCol; pTab->nCol = -1; diff --git a/test/join.test b/test/join.test index 391e0681ce..75f311b86b 100644 --- a/test/join.test +++ b/test/join.test @@ -991,6 +991,7 @@ do_execsql_test join-22.10 { # 2019-12-22 ticket 7929c1efb2d67e98 # reset_db +ifcapable vtab { do_execsql_test join-23.10 { CREATE TABLE t0(c0); INSERT INTO t0(c0) VALUES(123); @@ -1000,6 +1001,7 @@ do_execsql_test join-23.10 { ON vt0.name LIKE 'c0' WHERE v0.c0 == 0; } {123 0 c0} +} #------------------------------------------------------------------------- reset_db diff --git a/test/rowvaluevtab.test b/test/rowvaluevtab.test index aa834657b8..d3e0ac7b8a 100644 --- a/test/rowvaluevtab.test +++ b/test/rowvaluevtab.test @@ -15,6 +15,11 @@ set testdir [file dirname $argv0] source $testdir/tester.tcl set ::testprefix rowvaluevtab +ifcapable !vtab { + finish_test + return +} + register_echo_module db do_execsql_test 1.0 { diff --git a/test/triggerG.test b/test/triggerG.test index f5965e1707..8cf20b5ec9 100644 --- a/test/triggerG.test +++ b/test/triggerG.test @@ -75,4 +75,20 @@ do_catchsql_test 310 { INSERT INTO t4 VALUES(1); } {1 {hex literal too big: 0x2147483648e0e0099}} +#------------------------------------------------------------------------- +# +do_execsql_test 400 { + CREATE VIEW v0(a) AS SELECT 1234; + CREATE TRIGGER t0001 INSTEAD OF DELETE ON v0 BEGIN + SELECT old.a; + END; +} +do_execsql_test 405 { + SELECT a FROM v0; +} {1234} +do_execsql_test 410 { + DELETE FROM v0; +} + + finish_test