From: drh Date: Sat, 4 Jan 2020 19:58:28 +0000 (+0000) Subject: Enhance PRAGMA function_list to show internal functions if the direct use X-Git-Tag: version-3.31.0~45^2~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=337ca519e1c106bbcfa3b7b91c0fe68673e3cc42;p=thirdparty%2Fsqlite.git Enhance PRAGMA function_list to show internal functions if the direct use of internal functions is enabled via the SQLITE_TESTCTRL_INTERNAL_FUNCTIONS test control. FossilOrigin-Name: 7a8d7ca726666f4384925f959df0d58f7622229e06f1b5e643a3caccd539bb6e --- diff --git a/manifest b/manifest index b9177bbb7a..fc1ba87890 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Merge\sall\sfixes\sand\senhancements\sfrom\strunk. -D 2020-01-04T19:19:54.288 +C Enhance\sPRAGMA\sfunction_list\sto\sshow\sinternal\sfunctions\sif\sthe\sdirect\suse\nof\sinternal\sfunctions\sis\senabled\svia\sthe\sSQLITE_TESTCTRL_INTERNAL_FUNCTIONS\ntest\scontrol. +D 2020-01-04T19:58:28.209 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -521,7 +521,7 @@ F src/parse.y c8d2de64db469fd56e0fa24da46cd8ec8523eb98626567d2708df371b47fdc3f F src/pcache.c 385ff064bca69789d199a98e2169445dc16e4291fa807babd61d4890c3b34177 F src/pcache.h 4f87acd914cef5016fae3030343540d75f5b85a1877eed1a2a19b9f284248586 F src/pcache1.c 6596e10baf3d8f84cc1585d226cf1ab26564a5f5caf85a15757a281ff977d51a -F src/pragma.c 4f5df0df55a3fd5adadc28744bee3de1d10a313b1ae0f8470ca4b2dc93cc5cbf +F src/pragma.c 6e13c9a885c0f2effaa6a1155b707d3d3e39bc572c3b003ce4caa9c2e9010ca3 F src/pragma.h 5bbfafd74cf085762b64e4e2b00242917951b30468e380bddd8be6c21789aec2 F src/prepare.c 6049beb71385f017af6fc320d2c75a4e50b75e280c54232442b785fbb83df057 F src/printf.c 9be6945837c839ba57837b4bc3af349eba630920fa5532aa518816defe42a7d4 @@ -1853,7 +1853,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 26ef709a47294c512a70aecd37d29caecec2af261977d9fb2c4d78d09b12f77a 5b246b47aeadc25dbec0956e2d6edcd49fbe874a01734fdf15b770507648222d -R 23b6db5bd743b43a08b2a78aa5bfe764 +P b878c30f03e895bbc5c4c99c0f727d49093bb78bdc275593cf4852148579ae69 +R 2a316337c77b32f3140387723d41365c U drh -Z df93cd8dd048f13be0eda50d95f72385 +Z 5d85e17177ca37ac3e27744033bcda94 diff --git a/manifest.uuid b/manifest.uuid index 1ec699ac35..e5671db0ee 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b878c30f03e895bbc5c4c99c0f727d49093bb78bdc275593cf4852148579ae69 \ No newline at end of file +7a8d7ca726666f4384925f959df0d58f7622229e06f1b5e643a3caccd539bb6e \ No newline at end of file diff --git a/src/pragma.c b/src/pragma.c index 470cbdbdea..2c127ed5a7 100644 --- a/src/pragma.c +++ b/src/pragma.c @@ -299,7 +299,12 @@ static const PragmaName *pragmaLocate(const char *zName){ ** Create zero or more entries in the output for the SQL functions ** defined by FuncDef p. */ -static void pragmaFunclistLine(Vdbe *v, FuncDef *p, int isBuiltin){ +static void pragmaFunclistLine( + Vdbe *v, /* The prepared statement being created */ + FuncDef *p, /* A particular function definition */ + int isBuiltin, /* True if this is a built-in function */ + int showInternFuncs /* True if showing internal functions */ +){ for(; p; p=p->pNext){ const char *zType; const char *zEnc; @@ -307,10 +312,16 @@ static void pragmaFunclistLine(Vdbe *v, FuncDef *p, int isBuiltin){ SQLITE_DETERMINISTIC | SQLITE_DIRECTONLY | SQLITE_SUBTYPE | - SQLITE_INNOCUOUS + SQLITE_INNOCUOUS | + SQLITE_FUNC_INTERNAL ; - + if( p->xSFunc==0 ) continue; + if( (p->funcFlags & SQLITE_FUNC_INTERNAL)!=0 + && showInternFuncs==0 + ){ + continue; + } if( p->xValue!=0 ){ zType = "w"; }else if( p->xFinalize!=0 ){ @@ -1299,16 +1310,16 @@ void sqlite3Pragma( int i; HashElem *j; FuncDef *p; + int showInternFunc = (db->mDbFlags & DBFLAG_InternalFunc)!=0; pParse->nMem = 6; for(i=0; iu.pHash ){ - if( p->funcFlags & SQLITE_FUNC_INTERNAL ) continue; - pragmaFunclistLine(v, p, 1); + pragmaFunclistLine(v, p, 1, showInternFunc); } } for(j=sqliteHashFirst(&db->aFunc); j; j=sqliteHashNext(j)){ p = (FuncDef*)sqliteHashData(j); - pragmaFunclistLine(v, p, 0); + pragmaFunclistLine(v, p, 0, showInternFunc); } } break;