]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid treating constant expressions like "? IN ()" or "? NOT IN ()" as integers if...
authordan <Dan Kennedy>
Tue, 17 May 2022 15:01:01 +0000 (15:01 +0000)
committerdan <Dan Kennedy>
Tue, 17 May 2022 15:01:01 +0000 (15:01 +0000)
FossilOrigin-Name: d8b249e8cdf0babe1427d0587dbdc27a52ec06a5ef3a20dfb05a0ea4adb85858

manifest
manifest.uuid
src/parse.y
test/in.test

index 0d33f28d5401e7b09b7152df249792fb5b3898c2..e73180ebad15661022301bac4db90d5894e0258c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sthe\ssqlite3_db_name()\sinterface.
-D 2022-05-17T14:59:05.338
+C Avoid\streating\sconstant\sexpressions\slike\s"?\sIN\s()"\sor\s"?\sNOT\sIN\s()"\sas\sintegers\sif\sthey\sappear\sin\sa\sGROUP\sBY\sor\sORDER\sBY\sclause.
+D 2022-05-17T15:01:01.127
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -542,7 +542,7 @@ F src/os_win.c a8ea80037e81127ca01959daa87387cc135f325c88dc745376c4f760de852a10
 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a
 F src/pager.c 42120492784fc9bcd9082b5c9b5e329b7318c357f9f3574a1bbfcf7418910356
 F src/pager.h f82e9844166e1585f5786837ddc7709966138ced17f568c16af7ccf946c2baa3
-F src/parse.y efcb41d403be7bcecd6a95e51f73f89043e768cd0650a392c9b7ee0edbf1cc67
+F src/parse.y ad9a59d0078267e5aea4cf62f244c0ce6fcec9a91edd365e929c75d3a1716563
 F src/pcache.c 084e638432c610f95aea72b8509f0845d2791293f39d1b82f0c0a7e089c3bb6b
 F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586
 F src/pcache1.c 54881292a9a5db202b2c0ac541c5e3ef9a5e8c4f1c1383adb2601d5499a60e65
@@ -1089,7 +1089,7 @@ F test/hook2.test b9ff3b8c6519fb67f33192f1afe86e7782ee4ac8
 F test/icu.test 716a6b89fbabe5cc63e0cd4c260befb08fd7b9d761f04d43669233292f0753b1
 F test/ieee754.test b0945d12be7d255f3dfa18e2511b17ca37e0edd2b803231c52d05b86c04ab26e
 F test/imposter1.test c3f1db2d3db2c24611a6596a3fc0ffc14f1466c8
-F test/in.test 15de58ee017f43d36390812e9a51217d1b2db7758f97d0df48296ef178ea560b
+F test/in.test 55503d3633c434120d8b2d5966a34f0d9a55393a589050b1366afe4b188093c7
 F test/in2.test 5d4c61d17493c832f7d2d32bef785119e87bde75
 F test/in3.test 3cbf58c87f4052cee3a58b37b6389777505aa0c0
 F test/in4.test fdd1d8134da8376985c2edba6035a2de1f6c731524d2ffa651419e8fe2cd1c5a
@@ -1954,8 +1954,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 9260f4e0fdc8066b4772999bacb5f4130ef714d4ac1967029ceacff618bc48ff
-R d21e2300c9b9f847363079df1fcdef69
-U drh
-Z 456d2006914746a322619f144cfb48fc
+P 2ad152236c408cbb1f942b221de4bf3cbaa9c35313d7eb07a63f46b6040fc981
+R 43491feb68bb986ef951c6ac394e5e71
+U dan
+Z 4bd491f85f12c206c1579a88f589c75a
 # Remove this line to create a well-formed Fossil manifest.
index e411b5aaea3fce3d457eb77010cc7e091baeb726..d58fe49873bf40a4c03cb6bed2cf78e5799f43b9 100644 (file)
@@ -1 +1 @@
-2ad152236c408cbb1f942b221de4bf3cbaa9c35313d7eb07a63f46b6040fc981
\ No newline at end of file
+d8b249e8cdf0babe1427d0587dbdc27a52ec06a5ef3a20dfb05a0ea4adb85858
\ No newline at end of file
index 565130a05cd4c188ace74b71893a95a28bd71ffa..fb3c3f38cda081aeae80bdc3a321631838b880a1 100644 (file)
@@ -1271,7 +1271,8 @@ expr(A) ::= expr(A) between_op(N) expr(X) AND expr(Y). [BETWEEN] {
       ** regardless of the value of expr1.
       */
       sqlite3ExprUnmapAndDelete(pParse, A);
-      A = sqlite3Expr(pParse->db, TK_INTEGER, N ? "1" : "0");
+      A = sqlite3Expr(pParse->db, TK_STRING, N ? "true" : "false");
+      if( A ) sqlite3ExprIdToTrueFalse(A);
     }else{
       Expr *pRHS = Y->a[0].pExpr;
       if( Y->nExpr==1 && sqlite3ExprIsConstant(pRHS) && A->op!=TK_VECTOR ){
index b0eb371cb74e495a0d8c00a4dfa0b9f5031fb904..7c4cc51878093cca57ccb02feb0fc75f58415fc3 100644 (file)
@@ -798,4 +798,13 @@ do_execsql_test in-20.1 {
   SELECT (1 IN (2 IS TRUE));
 } {1}
 
+# Forum post: https://sqlite.org/forum/forumpost/5782619992.
+#
+reset_db
+do_execsql_test in-21.1 {
+  CREATE TABLE t0(c0);
+  SELECT COUNT(*) FROM t0 ORDER BY (t0.c0 IN ());
+} {0}
+
+
 finish_test