]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Enhance PRAGMA function_list to show internal functions if the direct use
authordrh <drh@noemail.net>
Sat, 4 Jan 2020 19:58:28 +0000 (19:58 +0000)
committerdrh <drh@noemail.net>
Sat, 4 Jan 2020 19:58:28 +0000 (19:58 +0000)
of internal functions is enabled via the SQLITE_TESTCTRL_INTERNAL_FUNCTIONS
test control.

FossilOrigin-Name: 7a8d7ca726666f4384925f959df0d58f7622229e06f1b5e643a3caccd539bb6e

manifest
manifest.uuid
src/pragma.c

index b9177bbb7ad2101b066f638d256be9c5747a5c75..fc1ba87890fef5e8b4ce2ade6dcf275020f44516 100644 (file)
--- 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
index 1ec699ac35ba8d3f86359f229d63eb463ca36520..e5671db0ee05abfabc49c70e63255a01f3dc2a30 100644 (file)
@@ -1 +1 @@
-b878c30f03e895bbc5c4c99c0f727d49093bb78bdc275593cf4852148579ae69
\ No newline at end of file
+7a8d7ca726666f4384925f959df0d58f7622229e06f1b5e643a3caccd539bb6e
\ No newline at end of file
index 470cbdbdea60013f0d498b97d706a46147ba95ac..2c127ed5a72390e2377897e036f617c458716f32 100644 (file)
@@ -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; i<SQLITE_FUNC_HASH_SZ; i++){
       for(p=sqlite3BuiltinFunctions.a[i]; p; p=p->u.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;