1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00

Prevent the use of subroutines to implement the RHS of IN operators within

CHECK constraints.

FossilOrigin-Name: 6b24d3fb94e787d25e49501714780dfb0c0c99077102056aa68445f4808cdd57
This commit is contained in:
drh
2018-12-24 11:55:44 +00:00
parent 2c04131ca7
commit efb699fc7c
3 changed files with 8 additions and 11 deletions

View File

@@ -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

View File

@@ -1 +1 @@
6c44838adbe5dc482bc010e91a6dd7a0f777c989f443dd600740d2c783208e0d
6b24d3fb94e787d25e49501714780dfb0c0c99077102056aa68445f4808cdd57

View File

@@ -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.