]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do not allow bound parameters in the ON CONFLICT clause of an UPSERT.
authordrh <>
Thu, 17 Aug 2023 17:48:20 +0000 (17:48 +0000)
committerdrh <>
Thu, 17 Aug 2023 17:48:20 +0000 (17:48 +0000)
dbsqlfuzz 9983e2c77634a8ccf33b5c91fa9982599de5f9e9

FossilOrigin-Name: 3c06709335eb4b98e3a684e3ebbae69eeb6a21b452bce29159c82bb632d6a042

manifest
manifest.uuid
src/upsert.c
test/upsert1.test

index a71ea83cccb0211dd04e7ff7e1ecac680a1604b1..48f6ee7dba3933ae8f6bac899643f8ea1ec2f19a 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\serror\sin\sdocumentation\scomments\sin\sfts5.h.
-D 2023-08-17T16:59:35.149
+C Do\snot\sallow\sbound\sparameters\sin\sthe\sON\sCONFLICT\sclause\sof\san\sUPSERT.\ndbsqlfuzz\s9983e2c77634a8ccf33b5c91fa9982599de5f9e9
+D 2023-08-17T17:48:20.472
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -750,7 +750,7 @@ F src/tokenize.c 23d9f4539880b40226254ad9072f4ecf12eb1902e62aea47aac29928afafcfd
 F src/treeview.c 1d52fbc4e97161e65858d36e3424ea6e3fc045dd8a679c82b4b9593dc30de3bd
 F src/trigger.c ad6ab9452715fa9a8075442e15196022275b414b9141b566af8cdb7a1605f2b0
 F src/update.c 6904814dd62a7a93bbb86d9f1419c7f134a9119582645854ab02b36b676d9f92
-F src/upsert.c 5303dc6c518fa7d4b280ec65170f465c7a70b7ac2b22491598f6d0b4875b3145
+F src/upsert.c fa125a8d3410ce9a97b02cb50f7ae68a2476c405c76aa692d3acf6b8586e9242
 F src/utf.c ee39565f0843775cc2c81135751ddd93eceb91a673ea2c57f61c76f288b041a0
 F src/util.c 24f4458bb7a57b0e1b2858484fd62ea83fe63dcb0bce21a96bf9fe31fd402038
 F src/vacuum.c 604fcdaebe76f3497c855afcbf91b8fa5046b32de3045bab89cc008d68e40104
@@ -1819,7 +1819,7 @@ F test/upfrom2.test 66f3ebf721b3cebd922faee5c386bf244f816d416b57c000753ff51af623
 F test/upfrom3.test 6130f24ebf97f5ea865e5d2a14a2d543fe5428a62e87cc60f62d875e45c1f5f0
 F test/upfrom4.test 78f742a6577c91a7a55c64edb8811004e7c6aa99b8d57b2320f70a918c357807
 F test/upfromfault.test 3a10075a0043f0c4fad6614b2c371f88a8ba5a4acab68b907438413865d6a8d6
-F test/upsert1.test b0ae2f58680c5205b4bc1cdeed3c3d444057c506f6c44494fa3eac60731d68a2
+F test/upsert1.test a512e2f884d3a36159fce2e45108c236f78ae38e35bda55f4050db580ceb25d3
 F test/upsert2.test 720e94d09f7362a282bc69b3c6b83d51daeaaf0440eb4920a08b86518b8c7496
 F test/upsert3.test 88d7d590a1948a9cb6eac1b54b0642f67a9f35a1fc0f19b200e97d5d39e3179c
 F test/upsert4.test 25d2a1da92f149331ae0c51ca6e3eee78189577585eab92de149900d62994fa5
@@ -2092,8 +2092,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 39ea11be3b35c5ecde9bc0fe66af673b8f440dc523422887d05a29feef036b01
-R abab5dc6334bf1a1bead623b5134e5ba
-U dan
-Z 9416e12f401c5487e4229907a7abf2dc
+P 24d96bd65d8ccdd50a6f4fe217d196728a2f8658d128f9352c287f64e034104a
+R 72669b014bf41c72224f93b52bdb3a8f
+U drh
+Z 40e3bdaa3753eb1f16c29d787d46c397
 # Remove this line to create a well-formed Fossil manifest.
index 2f944fee9db17e82cdc3cbfa8b8166167b840f18..27c598553bd5bd97ac796d44c07069d410437bf3 100644 (file)
@@ -1 +1 @@
-24d96bd65d8ccdd50a6f4fe217d196728a2f8658d128f9352c287f64e034104a
\ No newline at end of file
+3c06709335eb4b98e3a684e3ebbae69eeb6a21b452bce29159c82bb632d6a042
\ No newline at end of file
index 85994020cf17a6ea15f21ea59dc8d3cb61bafe13..be0d0550df2448cb1ab5387bd85c4b66a32ca3d3 100644 (file)
@@ -178,7 +178,7 @@ int sqlite3UpsertAnalyzeTarget(
           pExpr = &sCol[0];
         }
         for(jj=0; jj<nn; jj++){
-          if( sqlite3ExprCompare(pParse,pTarget->a[jj].pExpr,pExpr,iCursor)<2 ){
+          if( sqlite3ExprCompare(0,pTarget->a[jj].pExpr,pExpr,iCursor)<2 ){
             break;  /* Column ii of the index matches column jj of target */
           }
         }
index a321d6171d918a68621276ce45b2d8aa2b705524..78183113309cd35be33ffd606869b6bba95a78bd 100644 (file)
@@ -255,4 +255,17 @@ do_execsql_test upsert1-1100 {
   SELECT * FROM t1;
 } {1 22}
 
+# 2023-08-17 dbsqlfuzz 9983e2c77634a8ccf33b5c91fa9982599de5f9e9
+# Bound parameters in the ON CONFLICT clause of an UPSERT.
+#
+reset_db
+do_execsql_test upsert1-1200 {
+  CREATE TABLE t1(a INT, b INT);
+  CREATE UNIQUE INDEX t1x ON t1(b+3);
+}
+sqlite3_db_config db ENABLE_QPSG 1
+do_catchsql_test upsert1-1210 {
+  INSERT INTO t1(a,b) VALUES(1,2) ON CONFLICT(b+?1) DO NOTHING;
+} {1 {ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint}}
+
 finish_test