From: drh Date: Mon, 24 Dec 2018 11:55:44 +0000 (+0000) Subject: Prevent the use of subroutines to implement the RHS of IN operators within X-Git-Tag: version-3.27.0~224^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=efb699fc7cbd00b5a41403e4cbc108860beb3949;p=thirdparty%2Fsqlite.git Prevent the use of subroutines to implement the RHS of IN operators within CHECK constraints. FossilOrigin-Name: 6b24d3fb94e787d25e49501714780dfb0c0c99077102056aa68445f4808cdd57 --- diff --git a/manifest b/manifest index c21a56b485..409f3baf10 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Experimental\scode\sthat\stries\sto\sput\sthe\scomputation\sof\ssubqueries\sinside\sa\nsubroutine,\sand\sreuse\sthat\ssubroutine\sif\sthe\ssame\ssubquery\sis\sevaluated\smore\nthan\sonce.\s\sCurrent\scode\sdoes\snot\swork\sfor\sCHECK\sconstraints. -D 2018-12-24T02:34:49.752 +C Prevent\sthe\suse\sof\ssubroutines\sto\simplement\sthe\sRHS\sof\sIN\soperators\swithin\nCHECK\sconstraints. +D 2018-12-24T11:55:44.935 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in d8b254f8bb81bab43c340d70d17dc3babab40fcc8a348c8255881f780a45fee6 @@ -462,7 +462,7 @@ F src/date.c ebe1dc7c8a347117bb02570f1a931c62dd78f4a2b1b516f4837d45b7d6426957 F src/dbpage.c 135eb3b5e74f9ef74bde5cec2571192c90c86984fa534c88bf4a055076fa19b7 F src/dbstat.c 3c8bd4e77f0244fd2bd7cc90acf116ad2f8e82d70e536637f35ac2bc99b726f9 F src/delete.c f7938125847e8ef485448db5fbad29acb2991381a02887dd854c1617315ab9fb -F src/expr.c 98076b0c05b8ab467990c0a1b70377b70ad48c63e96f03b9d08d16b08798a892 +F src/expr.c 84b83f3f5cbed871be9388693ca4f5a95ff3104f27cd2e5440ae9f431993f899 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 012dd7dba1a62fda6b76e633ab303b2232ee2874a685c915065227ab20ad6ae0 F src/func.c 7c288b4ce309b5a8b8473514b88e1f8e69a80134509a8c0db8e39c858e367e7f @@ -1792,10 +1792,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 2b6494b1509f0d0189f98aa34c990eee99c775ff57826e79b2c5b0a12b4c97ad -R fb44a7719019fd77dd18f789a3532b3a -T *branch * reuse-subqueries -T *sym-reuse-subqueries * -T -sym-trunk * +P 6c44838adbe5dc482bc010e91a6dd7a0f777c989f443dd600740d2c783208e0d +R 6f0a94a77ca115e013dd9613f7a15558 U drh -Z dfb417c264f2e2790a098e45799008c5 +Z 99764aebcfc0079a08b35b46938a27b1 diff --git a/manifest.uuid b/manifest.uuid index 98a3229c88..067dcad334 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6c44838adbe5dc482bc010e91a6dd7a0f777c989f443dd600740d2c783208e0d \ No newline at end of file +6b24d3fb94e787d25e49501714780dfb0c0c99077102056aa68445f4808cdd57 \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index dba01b4d8c..f438f26fc3 100644 --- a/src/expr.c +++ b/src/expr.c @@ -2685,7 +2685,7 @@ void sqlite3CodeRhsOfIN( ** If all of the above are false, then we can compute the RHS just once ** and reuse it many names. */ - if( !ExprHasProperty(pExpr, EP_VarSelect) ){ + if( !ExprHasProperty(pExpr, EP_VarSelect) && pParse->iSelfTab==0 ){ /* Reuse of the RHS is allowed */ /* If this routine has already been coded, but the previous code ** might not have been invoked yet, so invoke it now as a subroutine.