]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add assert() statements to sqlite3ExprDelete() that prove various symmetry
authordrh <drh@noemail.net>
Sat, 28 Jul 2018 01:30:43 +0000 (01:30 +0000)
committerdrh <drh@noemail.net>
Sat, 28 Jul 2018 01:30:43 +0000 (01:30 +0000)
properties of the Expr object that might be exploited to make the Expr object
smaller and faster.

FossilOrigin-Name: 81f25d5c84e4d2d0cd3c6a7c105c7c93d310218feeea4e023dbc32e7e96b2a52

manifest
manifest.uuid
src/expr.c

index 1eeed1854bbc545b6d600a8fd735d843892e2948..1504cd8098415c2095cd9500ead568ec93594c0f 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Improvements\sto\sthe\sparser\sto\sincrease\scoverage.\s\sFix\sthe\sparser\sso\sthat\nat\sleast\sone\sexpresssion\sis\srequired\safter\sPARTITION\sBY\sand\swithin\sthe\nlist\sof\sexpressions\son\sVALUES().
-D 2018-07-27T23:33:16.472
+C Add\sassert()\sstatements\sto\ssqlite3ExprDelete()\sthat\sprove\svarious\ssymmetry\nproperties\sof\sthe\sExpr\sobject\sthat\smight\sbe\sexploited\sto\smake\sthe\sExpr\sobject\nsmaller\sand\sfaster.
+D 2018-07-28T01:30:43.176
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 0a3a6c81e6fcb969ff9106e882f0a08547014ba463cb6beca4c4efaecc924ee6
@@ -450,7 +450,7 @@ F src/date.c ebe1dc7c8a347117bb02570f1a931c62dd78f4a2b1b516f4837d45b7d6426957
 F src/dbpage.c 4aa7f26198934dbd002e69418220eae3dbc71b010bbac32bd78faf86b52ce6c3
 F src/dbstat.c edabb82611143727511a45ca0859b8cd037851ebe756ae3db289859dd18b6f91
 F src/delete.c 4c8c7604277a2041647f96b78f4b9a47858e9217e4fb333d35e7b5ab32c5b57f
-F src/expr.c 907d7de6cac23e55e32f22133a4fa8ca1558d7fe7c9a37e01feebb1106416fe7
+F src/expr.c eeb14df211a01166a107dee3af221bff2145391cead4189bfed7e21839decbfa
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c f59253c0be4b1e9dfcb073b6d6d6ab83090ae50c08b5c113b76013c4b157cd6a
 F src/func.c 7c288b4ce309b5a8b8473514b88e1f8e69a80134509a8c0db8e39c858e367e7f
@@ -1753,7 +1753,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 7efdba2bbc8547ee9292a1bbd1e61d38b40d7aabc0860ceba188bdec539f5114
-R 471a9deda4100ce593be82a25e7c7930
+P 02204f8b246c868846f39bd44f2e3bc0fab0275aa09ef3a0e5a8e3d58f484ca8
+R 310262b835cd592d636879692e903d61
+T *branch * expr-simplify
+T *sym-expr-simplify *
+T -sym-trunk *
 U drh
-Z 49ba2c803564fb9ad5a228c53691471f
+Z 2ccd694ba875056547f326b1b678ff15
index fbf370f762e19f95161456ae355f95c64547ec74..6a15e4ee8ec5f2ac6ec5f0ba1da0f9e7123fc8b2 100644 (file)
@@ -1 +1 @@
-02204f8b246c868846f39bd44f2e3bc0fab0275aa09ef3a0e5a8e3d58f484ca8
\ No newline at end of file
+81f25d5c84e4d2d0cd3c6a7c105c7c93d310218feeea4e023dbc32e7e96b2a52
\ No newline at end of file
index 986b4f9aa9db7cedd93a7a20cc30257f98b69a30..ccfd632517a8f0fefb36654d535c83a62e2fe3f8 100644 (file)
@@ -1060,6 +1060,17 @@ static SQLITE_NOINLINE void sqlite3ExprDeleteNN(sqlite3 *db, Expr *p){
     assert( p->pRight==0 );
     assert( p->x.pSelect==0 );
   }
+  if( !ExprHasProperty(p, EP_TokenOnly) ){
+    assert( p->op!=TK_FUNCTION || p->pLeft==0 );
+    assert( p->pRight==0 || p->x.pSelect==0 );
+  }
+  if( !ExprHasProperty(p, (EP_TokenOnly|EP_Reduced)) ){
+    assert( p->pWin==0 || p->pLeft==0 );
+    assert( p->pWin==0 || p->pTab==0 );
+    assert( p->pWin==0 || p->op==TK_FUNCTION );
+    assert( p->pWin==0 || !ExprHasProperty(p, EP_xIsSelect) );
+    assert( p->pTab==0 || (p->pRight==0 && p->x.pSelect==0) );
+  }
 #endif
   if( !ExprHasProperty(p, (EP_TokenOnly|EP_Leaf)) ){
     /* The Expr.x union is never used at the same time as Expr.pRight */