]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure the affinity of the RHS of an IN operator does not affect the
authordrh <drh@noemail.net>
Tue, 11 Jun 2019 18:07:53 +0000 (18:07 +0000)
committerdrh <drh@noemail.net>
Tue, 11 Jun 2019 18:07:53 +0000 (18:07 +0000)
outcome even if the RHS expression contains a COLLATE clause.
Ticket [57353f8243c637c0]

FossilOrigin-Name: 0f748fe58bbbb7ce3f30303da25ec811b2bbce249549aa9c7927979ac5b38013

manifest
manifest.uuid
src/expr.c
test/in.test

index e2c9abd8a952f2be66ba893d57b6fa7d597890f7..0ba7dea5f190dd5a46cf8c91ee6617093fe3a6e5 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Mark\san\sunreachable\sbranch\swith\san\sALWAYS\smacro.
-D 2019-06-11T16:43:58.413
+C Make\ssure\sthe\saffinity\sof\sthe\sRHS\sof\san\sIN\soperator\sdoes\snot\saffect\sthe\noutcome\seven\sif\sthe\sRHS\sexpression\scontains\sa\sCOLLATE\sclause.\nTicket\s[57353f8243c637c0]
+D 2019-06-11T18:07:53.447
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -474,7 +474,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 f6b10414b5bd88f2966a407caee09a8f1703f3c80e1a67a5b0945e9dea3ef409
+F src/expr.c 2e0fb76763e2af1e9cf641e68706f0d8969401d93fa864762f7f075c49b447ce
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c 0e14d4bef8eac2d87bbd517e492d9084c65008d117823f8922c5e7b2b599bd33
 F src/func.c 905c0424900979fade3731b4a271592059425c988cb7d5b245032253712dd7c8
@@ -1020,7 +1020,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 4b985774a64f143f486418cec53379bed3aeb0503179353cc7c7ce15fb464349
+F test/in.test 63e642e97bc22c8fd970752fb4f0b3992a957003ea87524fe69e5a700500c500
 F test/in2.test 5d4c61d17493c832f7d2d32bef785119e87bde75
 F test/in3.test 3cbf58c87f4052cee3a58b37b6389777505aa0c0
 F test/in4.test d2b38cba404bc4320f4fe1b595b3d163f212c068
@@ -1830,7 +1830,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 e96641f0be7d4454215459b0a95cf1c46ba0133e46d0bae22269741c8f4e5b44
-R 7d7dff82d0b7963bbc938a7ab08b7358
+P d4755aca4b435eed62b54af84013f7f176d3fa5b7b1c243555d59de5749fcde5
+R 3812a38c433825e4f80a93981d20e5e0
 U drh
-Z b7b0b5e48d9017530c5e5509ff9ff70f
+Z 5ba0d1eb2891e71e20f27e0a9eeff5ee
index 776dac85c7caab68fc15ff175cb84e76c033cdfa..1caa6796804d70be57e38abd7909864d438a07a0 100644 (file)
@@ -1 +1 @@
-d4755aca4b435eed62b54af84013f7f176d3fa5b7b1c243555d59de5749fcde5
\ No newline at end of file
+0f748fe58bbbb7ce3f30303da25ec811b2bbce249549aa9c7927979ac5b38013
\ No newline at end of file
index 4e8251bd893fccbf2bd2ba5933ff4e39d47694b3..f69b2a62179916331541a90436f33b28793db3a5 100644 (file)
@@ -44,8 +44,8 @@ char sqlite3TableColumnAffinity(Table *pTab, int iCol){
 */
 char sqlite3ExprAffinity(Expr *pExpr){
   int op;
-  pExpr = sqlite3ExprSkipCollate(pExpr);
   if( pExpr->flags & EP_Generic ) return 0;
+  pExpr = sqlite3ExprSkipCollate(pExpr);
   op = pExpr->op;
   if( op==TK_SELECT ){
     assert( pExpr->flags&EP_xIsSelect );
index 075095c6b37a5472ce2c431b82aeee855aab6d99..c247f2e0700926f20822967abcaee982721b1d0c 100644 (file)
@@ -734,6 +734,20 @@ do_execsql_test in-16.2 {
   ORDER BY a DESC, b;
 } {}
 
-
+# 2019-06-11
+# https://www.sqlite.org/src/info/57353f8243c637c0
+#
+do_execsql_test in-17.1 {
+  SELECT 1 IN ('1');
+} 0
+do_execsql_test in-17.2 {
+  SELECT 1 IN ('1' COLLATE nocase);
+} 0
+do_execsql_test in-17.3 {
+  SELECT 1 IN (CAST('1' AS text));
+} 0
+do_execsql_test in-17.4 {
+  SELECT 1 IN (CAST('1' AS text) COLLATE nocase);
+} 0
 
 finish_test