]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid unnecessary memory zeroing during expression list allocation.
authordrh <drh@noemail.net>
Wed, 31 May 2017 02:58:30 +0000 (02:58 +0000)
committerdrh <drh@noemail.net>
Wed, 31 May 2017 02:58:30 +0000 (02:58 +0000)
FossilOrigin-Name: de28e6514a42438411e2c9d833ba660108128ca86d0b90f32925fb73195f4862

manifest
manifest.uuid
src/expr.c
src/sqliteInt.h

index 33cf07656bce7a7de4758b4569fb39c15b34d8c2..734ae656bd06c091c725e45d4551abad4a67a0d7 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Size\sand\sperformance\soptimizations\sto\ssqlite3ResolveExprNames().
-D 2017-05-31T00:49:40.197
+C Avoid\sunnecessary\smemory\szeroing\sduring\sexpression\slist\sallocation.
+D 2017-05-31T02:58:30.131
 F Makefile.in 1cc758ce3374a32425e4d130c2fe7b026b20de5b8843243de75f087c0a2661fb
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 8eeb80162074004e906b53d7340a12a14c471a83743aab975947e95ce061efcc
@@ -357,7 +357,7 @@ F src/ctime.c 47d91a25ad8f199a71a5b1b7b169d6dd0d6e98c5719eca801568798743d1161c
 F src/date.c cc42a41c7422389860d40419a5e3bce5eaf6e7835c3ba2677751dc653550a5c7
 F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
 F src/delete.c bc2bfc227002ebe091e7cc321f09a48e52f86e1cd5ff9b028009db0671556749
-F src/expr.c 82ccc704a2e5aa114f2a2c67610b87963add6d65336f352bb1782a2942356bcb
+F src/expr.c 452c6f3aa656aabf3eefe96bb5f316b2c987fbc12c647964e4ed880f193ca31f
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c db65492ae549c3b548c9ef1f279ce1684f1c473b116e1c56a90878cd5dcf968d
 F src/func.c 9d52522cc8ae7f5cdadfe14594262f1618bc1f86083c4cd6da861b4cf5af6174
@@ -409,7 +409,7 @@ F src/shell.c 3f761fe604174b31aacd2ea2eacef5e6fe550111d60c0d71532cc008c68cf3f3
 F src/sqlite.h.in 8dd468837a4f6d76713e3a4cc65bea48095009038593d41040ab46c1b351197f
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 58fd0676d3111d02e62e5a35992a7d3da5d3f88753acc174f2d37b774fbbdd28
-F src/sqliteInt.h 4faf6f2542949b61fd0aa69233dd23ad3469656c24085e874dbfa2e0cc03b901
+F src/sqliteInt.h 82800fc19fbdeb35a0773c5d727da717652f4c421d191d2460219c7aab953462
 F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
 F src/status.c a9e66593dfb28a9e746cba7153f84d49c1ddc4b1
 F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
@@ -1581,7 +1581,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 e972a3860892022d57b26ec44ce0fbadc61c1ff54b7a10b7e82390db88d323a7
-R 834d3387387da9d103b939ffc6cd81e1
+P af8c0fed93c830c50641d95691bb507c31947a15529aba2a88bfaa66b3a3287a
+R 01bf3eaa562713fce9de46b8681a7f8f
 U drh
-Z d53818aaf774b30faf87723ebcc57f14
+Z 430fbbd11694ab4293403e0492d5010e
index 5df1704e991a2c95404b98a045b6222da0f846eb..eabd629b56d01ebcf2272814a576d11166ebaeb4 100644 (file)
@@ -1 +1 @@
-af8c0fed93c830c50641d95691bb507c31947a15529aba2a88bfaa66b3a3287a
\ No newline at end of file
+de28e6514a42438411e2c9d833ba660108128ca86d0b90f32925fb73195f4862
\ No newline at end of file
index 707dfe4563d23d4d7dc603c3a55a2a990a2828b0..27cebdb8349ca8c9b7b785544a3761b33c34f0f6 100644 (file)
@@ -1488,7 +1488,9 @@ ExprList *sqlite3ExprListAppend(
     pList->nAlloc *= 2;
   }
   pItem = &pList->a[pList->nExpr++];
-  memset(pItem, 0, sizeof(*pItem));
+  assert( offsetof(struct ExprList_item,zName)==sizeof(pItem->pExpr) );
+  assert( offsetof(struct ExprList_item,pExpr)==0 );
+  memset(&pItem->zName,0,sizeof(*pItem)-offsetof(struct ExprList_item,zName));
   pItem->pExpr = pExpr;
   return pList;
 
index 8ab0ddaec969d1f888d2e6aaf6366c5b15c654d2..8c52e02c8d0f9ac255c2f721ee36d0469b301095 100644 (file)
@@ -2831,10 +2831,10 @@ struct Select {
 */
 struct SelectDest {
   u8 eDest;            /* How to dispose of the results.  On of SRT_* above. */
-  char *zAffSdst;      /* Affinity used when eDest==SRT_Set */
   int iSDParm;         /* A parameter used by the eDest disposal method */
   int iSdst;           /* Base register where results are written */
   int nSdst;           /* Number of registers allocated */
+  char *zAffSdst;      /* Affinity used when eDest==SRT_Set */
   ExprList *pOrderBy;  /* Key columns for SRT_Queue and SRT_DistQueue */
 };