From: drh Date: Wed, 31 Oct 2018 20:52:00 +0000 (+0000) Subject: Deploy the sqlite3Strlen30NN() function (argument guaranteed to be non-NULL) for X-Git-Tag: version-3.26.0~61 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7301e774025bc765e12a0f1a450d4aaddc3ea53f;p=thirdparty%2Fsqlite.git Deploy the sqlite3Strlen30NN() function (argument guaranteed to be non-NULL) for a small performance improvement. FossilOrigin-Name: 4a6ad5190b62020d97a7de02c801544f20b7b98145ceff14af1f2834d3057f9c --- diff --git a/manifest b/manifest index aff8479dd8..44aaa0f627 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index e5e2eef953..9745c64eb7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -790ea39a6585ea9f4dad9e132e1fb0447ac1558f728196580d2c3edee84823f7 \ No newline at end of file +4a6ad5190b62020d97a7de02c801544f20b7b98145ceff14af1f2834d3057f9c \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index 9c0ce1f87d..d4eb9de62d 100644 --- a/src/expr.c +++ b/src/expr.c @@ -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); } diff --git a/src/insert.c b/src/insert.c index d110ab7634..7a9413901f 100644 --- a/src/insert.c +++ b/src/insert.c @@ -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); diff --git a/src/sqliteInt.h b/src/sqliteInt.h index 0d6761f475..20db52de3f 100644 --- a/src/sqliteInt.h +++ b/src/sqliteInt.h @@ -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 diff --git a/src/vdbemem.c b/src/vdbemem.c index d204dc8d27..db8feddfb2 100644 --- a/src/vdbemem.c +++ b/src/vdbemem.c @@ -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);