From: drh <> Date: Sat, 22 May 2021 11:23:20 +0000 (+0000) Subject: Do not invoke sqlite3ExprAffinity() after a syntax error that might have X-Git-Tag: version-3.36.0~73 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5e1a7ded4d423e26e7925a514cbe03303524b9a2;p=thirdparty%2Fsqlite.git Do not invoke sqlite3ExprAffinity() after a syntax error that might have left the tree in an inconsistent state. See also [e8a1515b44380cc5] and [forum:/forumpost/7e484e225c|forum post 7e484e225c]. FossilOrigin-Name: b986600520696b0c91c4ccc6aff1b698391b4bcaf8a3ea436be1967883faa2fe --- diff --git a/manifest b/manifest index 9cf98316d4..9bd0173044 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C The\sfix\sin\sthe\sprevious\scheck-in\swas\sonly\scorrect\sif\sthe\sOOM\soccurs\son\nthe\sinitial\sallocation.\s\sThis\schanges\sshould\smake\sit\scorrect\sfor\sa\sresize\nas\swell. -D 2021-05-22T11:00:03.746 +C Do\snot\sinvoke\ssqlite3ExprAffinity()\safter\sa\ssyntax\serror\sthat\smight\shave\nleft\sthe\stree\sin\san\sinconsistent\sstate.\s\sSee\salso\s[e8a1515b44380cc5]\sand\n[forum:/forumpost/7e484e225c|forum\spost\s7e484e225c]. +D 2021-05-22T11:23:20.366 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -632,7 +632,7 @@ F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a F src/walker.c 7342becedf3f8a26f9817f08436bdf8b56ad69af83705f6b9320a0ad3092c2ac F src/where.c 32f41c3c93c6785e0077e3a2cdc669c3ccfe70173787847be77f294c18fc7dc3 F src/whereInt.h 9248161dd004f625ce5d3841ca9b99fed3fc8d61522cf76340fc5217dbe1375b -F src/wherecode.c 110ed13049e0f1dc27e9dd942eb870417b36480cb7819302f5804cbcf9330b0e +F src/wherecode.c adb672751620b034cfc92b6e6595d80f1ea3ec1ffb54275378f960ba25d9aac1 F src/whereexpr.c 5a9c9f5d2dac4bcdcaae3035034b4667523f731df228e0bb1d4efc669efa9da5 F src/window.c ce5e73ab88a8527d268673906bf89cbe58c61bca8d54d38ed8c33c3220a276ee F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 @@ -1771,7 +1771,7 @@ F test/win32heap.test 10fd891266bd00af68671e702317726375e5407561d859be1aa04696f2 F test/win32lock.test fbf107c91d8f5512be5a5b87c4c42ab9fdd54972 F test/win32longpath.test 4baffc3acb2e5188a5e3a895b2b543ed09e62f7c72d713c1feebf76222fe9976 F test/win32nolock.test ac4f08811a562e45a5755e661f45ca85892bdbbc -F test/window1.test 7cb66f49d30d89ca9d28dc20f7f1d85229365651e8e6211f7da1448740866511 +F test/window1.test b7ed3bc8188b0c4036a2a19136405518939e63cf167c37ea2ceb78dd21c9a1f8 F test/window2.tcl 492c125fa550cda1dd3555768a2303b3effbeceee215293adf8871efc25f1476 F test/window2.test e466a88bd626d66edc3d352d7d7e1d5531e0079b549ba44efb029d1fbff9fd3c F test/window3.tcl acea6e86a4324a210fd608d06741010ca83ded9fde438341cb978c49928faf03 @@ -1914,7 +1914,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 4ae5e5b5ecbce580d3f7f970076e828fc6fb5fbcdc3bbe8381ab38f52870a54f -R 1cc525965a2e2a127c8f9151feacb5ac +P 57087ab2f297e4d96da5b9f3b89a26d8dd2bc4d22c2be8045b5d956d86282f39 +R 66a15b9d8fd951142648a451f7618484 U drh -Z e1fae3c7a54ed2950c8f337c19125b3f +Z e6443cef6f675f9efc24bfe89410552e diff --git a/manifest.uuid b/manifest.uuid index e8044de1cd..3feed8945f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -57087ab2f297e4d96da5b9f3b89a26d8dd2bc4d22c2be8045b5d956d86282f39 \ No newline at end of file +b986600520696b0c91c4ccc6aff1b698391b4bcaf8a3ea436be1967883faa2fe \ No newline at end of file diff --git a/src/wherecode.c b/src/wherecode.c index 4d0ba880d1..892772b1cc 100644 --- a/src/wherecode.c +++ b/src/wherecode.c @@ -773,7 +773,7 @@ static int codeAllEqualityTerms( sqlite3VdbeAddOp2(v, OP_IsNull, regBase+j, pLevel->addrBrk); VdbeCoverage(v); } - if( pParse->db->mallocFailed==0 ){ + if( pParse->db->mallocFailed==0 && pParse->nErr==0 ){ if( sqlite3CompareAffinity(pRight, zAff[j])==SQLITE_AFF_BLOB ){ zAff[j] = SQLITE_AFF_BLOB; } diff --git a/test/window1.test b/test/window1.test index f4b573d298..c1a40aebc0 100644 --- a/test/window1.test +++ b/test/window1.test @@ -2159,4 +2159,14 @@ do_catchsql_test 68.0 { SELECT rowid, a, b, sum(a)OVER() FROM t1 ORDER BY count(b); } {1 {misuse of aggregate: count()}} +# 2021-05-22 +# Forum https://sqlite.org/forum/forumpost/7e484e225c +# +reset_db +do_catchsql_test 69.0 { + CREATE TABLE t1(a,b); + CREATE INDEX t1ba ON t1(b,a); + SELECT * FROM t1 WHERE b = (SELECT b FROM t1 ORDER BY lead(b) OVER () AND SUM(a)); +} {1 {misuse of aggregate: SUM()}} + finish_test