]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Deploy the sqlite3Strlen30NN() function (argument guaranteed to be non-NULL) for
authordrh <drh@noemail.net>
Wed, 31 Oct 2018 20:52:00 +0000 (20:52 +0000)
committerdrh <drh@noemail.net>
Wed, 31 Oct 2018 20:52:00 +0000 (20:52 +0000)
a small performance improvement.

FossilOrigin-Name: 4a6ad5190b62020d97a7de02c801544f20b7b98145ceff14af1f2834d3057f9c

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

index aff8479dd83135329d3211099e67dba5147d36d6..44aaa0f627a9b50425476811015240def1b2c662 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\ssupport\sfor\sthe\sSQLITE_PREPARE_NORMALIZED\sflag\sand\sthe\nsqlite3_normalized_sql()\swhen\scompiling\swith\sSQLITE_ENABLE_NORMALIZE.\nAlso\sremove\sunnecessary\swhitespace\sfrom\sMakefiles.
-D 2018-10-31T19:01:13.743
+C Deploy\sthe\ssqlite3Strlen30NN()\sfunction\s(argument\sguaranteed\sto\sbe\snon-NULL)\sfor\na\ssmall\sperformance\simprovement.
+D 2018-10-31T20:52:00.233
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in edbb6e20bb1decf65f6c64c9e61004a69bdf8afb39cdce5337c916b03dfcd1e3
@@ -456,7 +456,7 @@ F src/date.c ebe1dc7c8a347117bb02570f1a931c62dd78f4a2b1b516f4837d45b7d6426957
 F src/dbpage.c 4aa7f26198934dbd002e69418220eae3dbc71b010bbac32bd78faf86b52ce6c3
 F src/dbstat.c e042b0e7833fdacf2d5ea92c6b536962fea6aeed8b7287ca87ddfa3412bd9564
 F src/delete.c 107e28d3ef8bd72fd11953374ca9107cd74e8b09c3ded076a6048742d26ce7d2
-F src/expr.c 16dee9504d0c6a09de8aa188fb0989ec3fd48b9704abd4fc80539065f2b52adc
+F src/expr.c 9aacc0b72348ba90010b672dcbbbe2fa56e1182043bc917a3a147b2bc57a5497
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c 972a4ba14296bef2303a0abbad1e3d82bc3c61f9e6ce4e8e9528bdee68748812
 F src/func.c 7c288b4ce309b5a8b8473514b88e1f8e69a80134509a8c0db8e39c858e367e7f
@@ -465,7 +465,7 @@ F src/hash.c 931ec82d7e070654a8facb42549bbb3a25720171d73ba94c3d3160580d01ef1f
 F src/hash.h ab34c5c54a9e9de2e790b24349ba5aab3dbb4fd4
 F src/hwtime.h 747c1bbe9df21a92e9c50f3bbec1de841dc5e5da
 F src/in-operator.md 10cd8f4bcd225a32518407c2fb2484089112fd71
-F src/insert.c 0a214201afec77880a31a59c33d86b473a160fc5cc31981eab2041ae03d8bf2f
+F src/insert.c 6b81aae27b196925d8ff78824f4bbd435d6a40cd38dc324685e21735bb402109
 F src/legacy.c 134ab3e3fae00a0f67a5187981d6935b24b337bcf0f4b3e5c9fa5763da95bf4e
 F src/loadext.c 448eab53ecdb566a1259ee2d45ebff9c0bc4a2cf393774488775c33e4fbe89bf
 F src/main.c 6275ece0699a957c4709a7ebe29476f132adbe459d18a6b497e234e4669abf91
@@ -509,7 +509,7 @@ F src/shell.c.in f5a89e43e1b3255fcc274f5185595f547199757e0c59e3ea938af9676e9557d
 F src/sqlite.h.in 4f95d6f484ce247fa7cbb7382641d40919cfe9c3bf8091bc462638c7bac4efea
 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8
 F src/sqlite3ext.h 960f1b86c3610fa23cb6a267572a97dcf286e77aa0dd3b9b23292ffaa1ea8683
-F src/sqliteInt.h 06d329f15c8ab0f8592cf56d9b3ec6a1d10de7bd1d93fe7a672cbb10257da89c
+F src/sqliteInt.h 66ec6304f4eeae77483e13399bb389c60b37764250ac415cd0bac068a8336866
 F src/sqliteLimit.h 1513bfb7b20378aa0041e7022d04acb73525de35b80b252f1b83fedb4de6a76b
 F src/status.c 46e7aec11f79dad50965a5ca5fa9de009f7d6bde08be2156f1538a0a296d4d0e
 F src/table.c b46ad567748f24a326d9de40e5b9659f96ffff34
@@ -581,7 +581,7 @@ F src/vdbeInt.h 8a52b8db3d20f9755a965d864b8653052c7ef1ccadceb2e057047cd421f6336e
 F src/vdbeapi.c ecccfce6f614c33a95952efeec969d163e8349eac314ee2b7b163eda921b5eb0
 F src/vdbeaux.c f547901b1aa9e2d81c63f06893f633648e434180666a827aacb547d7d6c8a601
 F src/vdbeblob.c f5c70f973ea3a9e915d1693278a5f890dc78594300cf4d54e64f2b0917c94191
-F src/vdbemem.c 81329ab760e4ec0162119d9cd10193e0303c45c5935bb20c7ae9139d44dd6641
+F src/vdbemem.c 7b3305bc4a5139f4536ac9b5f61da0f915e49d2e3fdfa87dfdfa9d7aba8bc1e9
 F src/vdbesort.c 90aad5a92608f2dd771c96749beabdb562c9d881131a860a7a5bccf66dc3be7f
 F src/vdbetrace.c 79d6dbbc479267b255a7de8080eee6e729928a0ef93ed9b0bfa5618875b48392
 F src/vtab.c 70188a745dc4e57d26e942681ff4b2912b7c8249ad5de3f60f0677b4337bcfaa
@@ -1775,8 +1775,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 7107f0dacf4467430d1ca157cb848dde984e48e529e7d67a88b7594b0f8159c9 592b66e8058dd03a056a036e2606247c9efdb06d15eebe9bcc455f7f55e30ae6
-R cde92f10c728686f3e1d0cbe9b72375d
-T +closed 592b66e8058dd03a056a036e2606247c9efdb06d15eebe9bcc455f7f55e30ae6
+P 790ea39a6585ea9f4dad9e132e1fb0447ac1558f728196580d2c3edee84823f7
+R 00bde0ce75d3576126e58b90ac89e87d
 U drh
-Z e374a7f0cb3e5d0d55cc2236a88de3b1
+Z 061c0fa7d83efe49b7a91e38c074fa3b
index e5e2eef953983007271f368a14b0dcd53c543b66..9745c64eb749ffb08060010569f788effde31ae9 100644 (file)
@@ -1 +1 @@
-790ea39a6585ea9f4dad9e132e1fb0447ac1558f728196580d2c3edee84823f7
\ No newline at end of file
+4a6ad5190b62020d97a7de02c801544f20b7b98145ceff14af1f2834d3057f9c
\ No newline at end of file
index 9c0ce1f87d5b06159316ade0651eaaa434c52fd8..d4eb9de62d71777b7a9d2ea795abcd38a43aa857 100644 (file)
@@ -1167,7 +1167,7 @@ static int dupedExprStructSize(Expr *p, int flags){
 static int dupedExprNodeSize(Expr *p, int flags){
   int nByte = dupedExprStructSize(p, flags) & 0xfff;
   if( !ExprHasProperty(p, EP_IntValue) && p->u.zToken ){
-    nByte += sqlite3Strlen30(p->u.zToken)+1;
+    nByte += sqlite3Strlen30NN(p->u.zToken)+1;
   }
   return ROUND8(nByte);
 }
index d110ab7634a17b7c081f71a064df9f41bec6d86a..7a9413901fc32e18fefd13538387b5d5672961fd 100644 (file)
@@ -146,7 +146,8 @@ void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
     }while( i>=0 && zColAff[i]==SQLITE_AFF_BLOB );
     pTab->zColAff = zColAff;
   }
-  i = sqlite3Strlen30(zColAff);
+  assert( zColAff!=0 );
+  i = sqlite3Strlen30NN(zColAff);
   if( i ){
     if( iReg ){
       sqlite3VdbeAddOp4(v, OP_Affinity, iReg, i, 0, zColAff, i);
index 0d6761f475540f152ff9eb09e78ecaf18bb71ced..20db52de3f4c9ef722f92885021d0612220696c3 100644 (file)
@@ -3665,6 +3665,7 @@ int sqlite3IsIdChar(u8);
 */
 int sqlite3StrICmp(const char*,const char*);
 int sqlite3Strlen30(const char*);
+#define sqlite3Strlen30NN(C) (strlen(C)&0x3fffffff)
 char *sqlite3ColumnType(Column*,char*);
 #define sqlite3StrNICmp sqlite3_strnicmp
 
index d204dc8d27fd2ae8050f9155f91ee837b2ed0284..db8feddfb273cd890e722dfb2104888c5a7e2a10 100644 (file)
@@ -377,7 +377,8 @@ int sqlite3VdbeMemStringify(Mem *pMem, u8 enc, u8 bForce){
     assert( fg & MEM_Real );
     sqlite3_snprintf(nByte, pMem->z, "%!.15g", pMem->u.r);
   }
-  pMem->n = sqlite3Strlen30(pMem->z);
+  assert( pMem->z!=0 );
+  pMem->n = sqlite3Strlen30NN(pMem->z);
   pMem->enc = SQLITE_UTF8;
   pMem->flags |= MEM_Str|MEM_Term;
   if( bForce ) pMem->flags &= ~(MEM_Int|MEM_Real);