From 2e52a9c611d6db4b1436bb42886ceebe3d5de7ec Mon Sep 17 00:00:00 2001 From: drh Date: Sat, 4 Apr 2020 00:15:54 +0000 Subject: [PATCH] In the push-down optimization, do not substitute columns that have previously been identified as being constant by the propagate-constants optimization. Fix for ticket [51166be0159fd2ce] FossilOrigin-Name: 70c44811d12f540d4ec1c29dedbe999cf79b82e326a8712ae2fa0725d6bd8a65 --- manifest | 18 +++++++++--------- manifest.uuid | 2 +- src/select.c | 5 ++++- test/fuzzdata8.db | Bin 1474560 -> 1475584 bytes test/select4.test | 19 +++++++++++++++++++ 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/manifest b/manifest index 9b2980c15c..54d94e225e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Avoid\sfactoring\sout\sconstant\sexpressions\son\sthe\sLHS\sof\san\sIN(...)\soperator,\sas\sthe\sIN(...)\soperation\smay\saffect\sthe\saffinity\sof\sthese\svalues. -D 2020-04-03T19:37:14.358 +C In\sthe\spush-down\soptimization,\sdo\snot\ssubstitute\scolumns\sthat\shave\spreviously\nbeen\sidentified\sas\sbeing\sconstant\sby\sthe\spropagate-constants\soptimization.\nFix\sfor\sticket\s[51166be0159fd2ce] +D 2020-04-04T00:15:54.371 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 5c3b3b18e096353ee2794a8f8a6227c301a57ea771814c158546265d9ef2087e F src/rowset.c ba9515a922af32abe1f7d39406b9d35730ed65efab9443dc5702693b60854c92 -F src/select.c fd38aa7f87ad0fc93577df6ef1d6cf2b9e5f6186b93c04271f5248c6c4be088c +F src/select.c 7aa91ab374d83a3b8ef02859fd61de57bc23aaeefa125b6e2d2c502662f2ea42 F src/shell.c.in 759bb4a283651955ff2ddb104541b1805b1fff915017083bdd39975cd4e223aa F src/sqlite.h.in cc7d0949ac32bb68ed97acdb3e7ae91cd413a24d32d6ff049ef8308d620a4367 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 @@ -1024,7 +1024,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db 0166b56fd7a6b9636a1d60ef0a060f86ddaecf99400a666bb6e5bbd7199ad1f2 -F test/fuzzdata8.db 1299a262ccd07fa6318e37ae54941eae794009c92384f68ee72a7675916a9f56 +F test/fuzzdata8.db c165dcba8a97c9dfeb05a6da13579de4d7a7c307ceb6c84fb95d9b4b6ec5c9f9 F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 @@ -1304,7 +1304,7 @@ F test/securedel2.test 2d54c28e46eb1fd6902089958b20b1b056c6f1c5 F test/select1.test 009a6d8eacd9684d046302b8d13b50846a87e39d6f08e92178aa13e95ea29a2d F test/select2.test 352480e0e9c66eda9c3044e412abdf5be0215b56 F test/select3.test ddd1bc6d0c8dece136321c11bd26d0d8ad17f2b27c72935fdd6574d8cb99d1d4 -F test/select4.test 5389d9895968d1196c457d59b3ee6515d771d328 +F test/select4.test e8a2502e3623f3058871030599a48abb35789d2244d5b380ecf3696873fdd4a4 F test/select5.test df9ec0d218cedceb4fe7b63262025b547b50a55e59148c6f40b60ca25f1d4546 F test/select6.test 319d45e414cdd321bf17cfacedaf19e3935ad64dac357c53f1492338c6e9b801 F test/select7.test f659f231489349e8c5734e610803d7654207318f @@ -1860,7 +1860,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 42b02454b146ca1b04c0a5321465326435fc5b995f5498d3b1cf69c558a20f95 -R 7526b019c921c26e2b222f7eff0de045 -U dan -Z 6eebcd629249d45bb8abb78c780a22dc +P 98d56b4a34fddcbaecd953a045ae0270b4d78c1edf34cc73522fb4e12743af80 +R 409eb77bf9c2d267632bbd85b92cb09e +U drh +Z 5664bca40d462c783ef705fd18f0fbf7 diff --git a/manifest.uuid b/manifest.uuid index d12842d6bb..76b05e7f2a 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -98d56b4a34fddcbaecd953a045ae0270b4d78c1edf34cc73522fb4e12743af80 \ No newline at end of file +70c44811d12f540d4ec1c29dedbe999cf79b82e326a8712ae2fa0725d6bd8a65 \ No newline at end of file diff --git a/src/select.c b/src/select.c index 59ba706fcd..ce85c91d0b 100644 --- a/src/select.c +++ b/src/select.c @@ -3476,7 +3476,10 @@ static Expr *substExpr( ){ pExpr->iRightJoinTable = pSubst->iNewTable; } - if( pExpr->op==TK_COLUMN && pExpr->iTable==pSubst->iTable ){ + if( pExpr->op==TK_COLUMN + && pExpr->iTable==pSubst->iTable + && !ExprHasProperty(pExpr, EP_FixedCol) + ){ if( pExpr->iColumn<0 ){ pExpr->op = TK_NULL; }else{ diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 202803061e7fc6143dd202c54c0cabcf1d520341..377c6410395b9ad85c665faac902900415b0e8fc 100644 GIT binary patch delta 22191 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 bvLM6>;G+*0hAfw5mW8MH|3|f78RGu~DK@`S diff --git a/test/select4.test b/test/select4.test index 51a1b1c4c5..6dbfd4d0a1 100644 --- a/test/select4.test +++ b/test/select4.test @@ -1005,6 +1005,25 @@ do_catchsql_test select4-17.3 { ORDER BY +x; } {1 {LIMIT clause should come after UNION not before}} +# 2020-04-03 ticket 51166be0159fd2ce from Yong Heng. +# Adverse interaction between the constant propagation and push-down +# optimizations. +# +reset_db +do_execsql_test select4-18.1 { + CREATE VIEW v0(v0) AS WITH v0 AS(SELECT 0 v0) SELECT(SELECT min(v0) OVER()) FROM v0 GROUP BY v0; + SELECT *FROM v0 v1 JOIN v0 USING(v0) WHERE datetime(v0) = (v0.v0)AND v0 = 10; +} {} +do_execsql_test select4-18.2 { + CREATE VIEW t1(aa) AS + WITH t2(bb) AS (SELECT 123) + SELECT (SELECT min(bb) OVER()) FROM t2 GROUP BY bb; + SELECT * FROM t1; +} {123} +do_execsql_test select4-18.3 { + SELECT * FROM t1 AS z1 JOIN t1 AS z2 USING(aa) + WHERE abs(z1.aa)=z2.aa AND z1.aa=123; +} {123} finish_test -- 2.47.2