From 8e34e4061b534130bc7495c102120371c8738d95 Mon Sep 17 00:00:00 2001 From: drh Date: Tue, 11 Jun 2019 10:43:56 +0000 Subject: [PATCH] Add the new sqlite3ExprUnmapAndDelete() function and use it in place of separate calls to sqlite3RenameExprUnmap() and sqlite3ExprDelete(). FossilOrigin-Name: 36ea13e0a851a749c9ef292377ecd82dbd4797d38df907b362487fa234c98ca5 --- manifest | 18 +++++++++--------- manifest.uuid | 2 +- src/expr.c | 25 +++++++++++++++---------- src/parse.y | 2 +- src/sqliteInt.h | 1 + test/fuzzdata8.db | Bin 1230848 -> 1232896 bytes 6 files changed, 27 insertions(+), 21 deletions(-) diff --git a/manifest b/manifest index 776eebe5bd..0ab2546e0e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C The\sALTER\sTABLE\scommand\sshould\snot\sattempt\sto\srename\sobjects\sthat\sare\s\ncontained\swithin\san\sexpression\stree\sthat\shas\sbeen\soptimized\sout\sbecause\nit\sis\sthe\sother\sbranch\sof\san\s"AND\sfalse"\sexpression.\nTicket\s[533010b8cacebe82] -D 2019-06-11T02:43:22.189 +C Add\sthe\snew\ssqlite3ExprUnmapAndDelete()\sfunction\sand\suse\sit\sin\splace\sof\nseparate\scalls\sto\ssqlite3RenameExprUnmap()\sand\ssqlite3ExprDelete(). +D 2019-06-11T10:43:56.870 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 19100ef384cbe1f985b2bf692bfe5100127365d81becb61122bed48667e0ad0d +F src/expr.c f6b10414b5bd88f2966a407caee09a8f1703f3c80e1a67a5b0945e9dea3ef409 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 0e14d4bef8eac2d87bbd517e492d9084c65008d117823f8922c5e7b2b599bd33 F src/func.c 905c0424900979fade3731b4a271592059425c988cb7d5b245032253712dd7c8 @@ -511,7 +511,7 @@ F src/os_win.c 85d9e532d0444ab6c16d7431490c2e279e282aa0917b0e988996b1ae0de5c5a0 F src/os_win.h 7b073010f1451abe501be30d12f6bc599824944a F src/pager.c 422fd8cfa59fb9173eff36a95878904a0eeb0dcc62ba49350acc8b1e51c4dc7b F src/pager.h 217921e81eb5fe455caa5cda96061959706bcdd29ddb57166198645ef7822ac3 -F src/parse.y 9e13554d106885123293b0f9dc8b3fb7d4a36f109ba24bc5984bbc6405b1c665 +F src/parse.y 026e3e6fff32432166a4eae0bdb78ad09a53c84eb49acb44dc32e49b4c0b8a48 F src/pcache.c 696a01f1a6370c1b50a09c15972bc3bee3333f8fcd1f2da8e9a76b1b062c59ee F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586 F src/pcache1.c be64b2f3908a7f97c56c963676eb12f0d6254c95b28cdc1d73a186eff213219d @@ -527,7 +527,7 @@ F src/shell.c.in 9648bc2035a4dc2a380c863535893dc1d9f8a62bab57b6f2943e530aa62d04a F src/sqlite.h.in e80973893802ec7980a602a449c93527f9265f1295ad156c83cbb48f9b58ce4e F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 F src/sqlite3ext.h 9ecc93b8493bd20c0c07d52e2ac0ed8bab9b549c7f7955b59869597b650dd8b5 -F src/sqliteInt.h 73d93952552a7a5fdb29ae19ef9919041364070615ba04c2d673126185f523bf +F src/sqliteInt.h 3f4d665dff31c852e9b724b0ec27f84af0d8c500eb0391d713faccdd86a3d379 F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b F src/status.c 46e7aec11f79dad50965a5ca5fa9de009f7d6bde08be2156f1538a0a296d4d0e F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34 @@ -1006,7 +1006,7 @@ F test/fuzzdata4.db b502c7d5498261715812dd8b3c2005bad08b3a26e6489414bd13926cd3e4 F test/fuzzdata5.db e35f64af17ec48926481cfaf3b3855e436bd40d1cfe2d59a9474cb4b748a52a5 F test/fuzzdata6.db 92a80e4afc172c24f662a10a612d188fb272de4a9bd19e017927c95f737de6d7 F test/fuzzdata7.db babb1c560fef766171972c119c1bc3b7be20b134e2f46ae0c52390cd3059b6f4 -F test/fuzzdata8.db 2f2ebc7632affed8f0bb6c52447db5a73eb37f41afa4d745f7ac9013722feead +F test/fuzzdata8.db b305f58033b043856d7d58c43bc0e8eb8fc2c102071a77d6b4c7f4efa667702d F test/fuzzer1.test 3d4c4b7e547aba5e5511a2991e3e3d07166cfbb8 F test/fuzzer2.test a85ef814ce071293bce1ad8dffa217cbbaad4c14 F test/fuzzerfault.test 8792cd77fd5bce765b05d0c8e01b9edcf8af8536 @@ -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 e82f235e7201a420149847cda630ac6f2fce5e3a4577b0ea4793f430d3dc1611 -R 68739974257ae8553d5364ff46bec812 +P 04bd5cb73287f926f1ecf578998fa6ce1379474e86918c692eae5778d0817cef +R 6b6d800c72acd17bee33792b16c98170 U drh -Z d223dd9a1c633bbd46be540c239afe43 +Z 2841a4dab216457624e44ac4f8437ccd diff --git a/manifest.uuid b/manifest.uuid index 6b6897bdd9..e7d33d1bfe 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -04bd5cb73287f926f1ecf578998fa6ce1379474e86918c692eae5778d0817cef \ No newline at end of file +36ea13e0a851a749c9ef292377ecd82dbd4797d38df907b362487fa234c98ca5 \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 057cbd6b7b..4e8251bd89 100644 --- a/src/expr.c +++ b/src/expr.c @@ -895,12 +895,8 @@ Expr *sqlite3ExprAnd(Parse *pParse, Expr *pLeft, Expr *pRight){ }else if( pRight==0 ){ return pLeft; }else if( ExprAlwaysFalse(pLeft) || ExprAlwaysFalse(pRight) ){ - if( IN_RENAME_OBJECT ){ - sqlite3RenameExprUnmap(pParse, pLeft); - sqlite3RenameExprUnmap(pParse, pRight); - } - sqlite3ExprDelete(db, pLeft); - sqlite3ExprDelete(db, pRight); + sqlite3ExprUnmapAndDelete(pParse, pLeft); + sqlite3ExprUnmapAndDelete(pParse, pRight); return sqlite3ExprAlloc(db, TK_INTEGER, &sqlite3IntTokens[0], 0); }else{ return sqlite3PExpr(pParse, TK_AND, pLeft, pRight); @@ -1060,6 +1056,18 @@ void sqlite3ExprDelete(sqlite3 *db, Expr *p){ if( p ) sqlite3ExprDeleteNN(db, p); } +/* Invoke sqlite3RenameExprUnmap() and sqlite3ExprDelete() on the +** expression. +*/ +void sqlite3ExprUnmapAndDelete(Parse *pParse, Expr *p){ + if( p ){ + if( IN_RENAME_OBJECT ){ + sqlite3RenameExprUnmap(pParse, p); + } + sqlite3ExprDeleteNN(pParse->db, p); + } +} + /* ** Return the number of bytes allocated for the expression structure ** passed as the first argument. This is always one of EXPR_FULLSIZE, @@ -1642,10 +1650,7 @@ ExprList *sqlite3ExprListAppendVector( } vector_append_error: - if( IN_RENAME_OBJECT ){ - sqlite3RenameExprUnmap(pParse, pExpr); - } - sqlite3ExprDelete(db, pExpr); + sqlite3ExprUnmapAndDelete(pParse, pExpr); sqlite3IdListDelete(db, pColumns); return pList; } diff --git a/src/parse.y b/src/parse.y index f02f2074c7..fc5bff16dc 100644 --- a/src/parse.y +++ b/src/parse.y @@ -1173,7 +1173,7 @@ expr(A) ::= expr(A) between_op(N) expr(X) AND expr(Y). [BETWEEN] { ** simplify to constants 0 (false) and 1 (true), respectively, ** regardless of the value of expr1. */ - sqlite3ExprDelete(pParse->db, A); + sqlite3ExprUnmapAndDelete(pParse, A); A = sqlite3ExprAlloc(pParse->db, TK_INTEGER,&sqlite3IntTokens[N],1); }else if( Y->nExpr==1 ){ /* Expressions of the form: diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 5422007958..5c711f952a 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -3871,6 +3871,7 @@ Expr *sqlite3ExprSimplifiedAndOr(Expr*); Expr *sqlite3ExprFunction(Parse*,ExprList*, Token*, int); void sqlite3ExprAssignVarNumber(Parse*, Expr*, u32); void sqlite3ExprDelete(sqlite3*, Expr*); +void sqlite3ExprUnmapAndDelete(Parse*, Expr*); ExprList *sqlite3ExprListAppend(Parse*,ExprList*,Expr*); ExprList *sqlite3ExprListAppendVector(Parse*,ExprList*,IdList*,Expr*); void sqlite3ExprListSetSortOrder(ExprList*,int); diff --git a/test/fuzzdata8.db b/test/fuzzdata8.db index 3d23ff335473cfefc161c3b63692dd1344f07e5d..8da49a1df72f6f313190d9f7b2e365df851f393b 100644 GIT binary patch delta 21079 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 delta 20620 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 Ee~~+2lK=n! -- 2.47.2