From: drh Date: Mon, 2 Sep 2019 22:13:06 +0000 (+0000) Subject: Fix a bug introduced earlier today by check-in [88833a9c2849c959]. X-Git-Tag: version-3.30.0~70 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4fc836546e035fc18a4bf66c3bb895dc5af10fa0;p=thirdparty%2Fsqlite.git Fix a bug introduced earlier today by check-in [88833a9c2849c959]. Ticket [29f635e0af71234b] FossilOrigin-Name: 6e7b4527d32cc1be0294614b9d7363d4b59cf654a954b86515b3f6888975ce73 --- diff --git a/manifest b/manifest index f5fececbb6..8a800c1dc3 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\spotential\scrash\sin\sfts5\scaused\sby\susing\san\sauxiliary\sfunction\son\sa\s"special"\squery\slike\s'*id'\sor\s'*reads'. -D 2019-09-02T14:46:12.332 +C Fix\sa\sbug\sintroduced\searlier\stoday\sby\scheck-in\s[88833a9c2849c959].\nTicket\s[29f635e0af71234b] +D 2019-09-02T22:13:06.403 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -476,7 +476,7 @@ F src/date.c e1d8ac7102f3f283e63e13867acb0efa33861cf34f0faf4cdbaf9fa7a1eb7041 F src/dbpage.c 135eb3b5e74f9ef74bde5cec2571192c90c86984fa534c88bf4a055076fa19b7 F src/dbstat.c c12833de69cb655751487d2c5a59607e36be1c58ba1f4bd536609909ad47b319 F src/delete.c d08c9e01a2664afd12edcfa3a9c6578517e8ff8735f35509582693adbe0edeaf -F src/expr.c 718634de1cb95ffbeaa1c08416a2bcd250b5586552a3360c667a56c77dd8ade3 +F src/expr.c 10d90c4676047a75276446779d18fb3f7d3a1f9debc8b322e3772d2bd51f52ff F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 6b79f4c2447691aa9ac86e2a6a774b65f3b3dd053d4220a4893051a0de20f82e F src/func.c 4ee36219698d50d672a28eca4adb0fd6b92e607a1883d318315e0d2fd5044467 @@ -1026,7 +1026,7 @@ F test/hook2.test b9ff3b8c6519fb67f33192f1afe86e7782ee4ac8 F test/icu.test 41aa8847745a879b897a7febea0f8f9efc8e67fe8bf680589b6e07c7b0a1569a F test/ieee754.test 806fc0ce7f305f57e3331eaceeddcfec9339e607 F test/imposter1.test c3f1db2d3db2c24611a6596a3fc0ffc14f1466c8 -F test/in.test 47b0666a90e3a60798e202f0abf98b43e595ba2a6352b0ffdf1fbd0cae3ab0a4 +F test/in.test 3e9bd58597a444123a40a9ac94cae0fec8897e17e9f519b02fc370bcf5ba5175 F test/in2.test 5d4c61d17493c832f7d2d32bef785119e87bde75 F test/in3.test 3cbf58c87f4052cee3a58b37b6389777505aa0c0 F test/in4.test 0f77b0ff371549e6a119d0356be10bdba72258162e9701e83527a560482f5e98 @@ -1839,7 +1839,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 88833a9c2849c959a37a80e0e4d2b211ce3c83a48319724c89b172b060c876b4 -R ecf23e7895e522aa6db47033eb1fe1d8 -U dan -Z 9a0d4ac9ca62f38c69e05c62c21dab75 +P 9490683ae883561fa347cbe54ebdd61188d849b4852d904b508250ba5d0807ef +R 931628c07078d6a1ec560a2e18a3f53f +U drh +Z 31499ded87036041191e77b0df0459dc diff --git a/manifest.uuid b/manifest.uuid index d58c001b4c..d9a9e049c6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9490683ae883561fa347cbe54ebdd61188d849b4852d904b508250ba5d0807ef \ No newline at end of file +6e7b4527d32cc1be0294614b9d7363d4b59cf654a954b86515b3f6888975ce73 \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index ac3d1c8e21..949758b10e 100644 --- a/src/expr.c +++ b/src/expr.c @@ -3132,9 +3132,12 @@ static void sqlite3ExprCodeIN( } bLhsReal = sqlite3ExprAffinity(pExpr->pLeft)==SQLITE_AFF_REAL; for(ii=0; iinExpr; ii++){ - r2 = sqlite3ExprCodeTemp(pParse, pList->a[ii].pExpr, ®ToFree); if( bLhsReal ){ + r2 = regToFree = sqlite3GetTempReg(pParse); + sqlite3ExprCode(pParse, pList->a[ii].pExpr, r2); sqlite3VdbeAddOp4(v, OP_Affinity, r2, 1, 0, "E", P4_STATIC); + }else{ + r2 = sqlite3ExprCodeTemp(pParse, pList->a[ii].pExpr, ®ToFree); } if( regCkNull && sqlite3ExprCanBeNull(pList->a[ii].pExpr) ){ sqlite3VdbeAddOp3(v, OP_BitAnd, regCkNull, r2, regCkNull); diff --git a/test/in.test b/test/in.test index bd1209fb67..4595d5fd19 100644 --- a/test/in.test +++ b/test/in.test @@ -763,6 +763,8 @@ do_execsql_test in-18.1 { # For the IN_INDEX_NOOP optimization, apply REAL affinity to the LHS # values prior to comparison if the RHS has REAL affinity. # +# Also ticket https://sqlite.org/src/info/29f635e0af71234b +# do_execsql_test in-19.1 { DROP TABLE IF EXISTS t0; CREATE TABLE t0(c0 REAL UNIQUE); @@ -775,5 +777,12 @@ do_execsql_test in-19.2 { do_execsql_test in-19.3 { SELECT c0 IN ('2070934912552030444',2,3) FROM t0; } {1} +do_execsql_test in-19.4 { + DROP TABLE t0; + CREATE TABLE t0(c0 TEXT, c1 REAL, c2, PRIMARY KEY(c2, c0, c1)); + CREATE INDEX i0 ON t0(c1 IN (c0)); + INSERT INTO t0(c0, c2) VALUES (0, NULL) ON CONFLICT(c2, c1, c0) DO NOTHING; + PRAGMA integrity_check; +} {ok} finish_test