Changeset: 6732cf0cfb23 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=6732cf0cfb23
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        gdk/gdk_tracer.c
        gdk/gdk_tracer.h
        monetdb5/modules/mal/tracer.c
        monetdb5/modules/mal/tracer.h
        monetdb5/modules/mal/tracer.mal
        sql/backends/monet5/sql_upgrades.c
        sql/scripts/81_tracer.sql
        sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        
sql/test/emptydb-upgrade-chain-hge/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64
        sql/test/emptydb-upgrade-chain/Tests/upgrade.stable.out.powerpc64.int128
        sql/test/emptydb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/emptydb-upgrade/Tests/upgrade.stable.out.int128
        sql/test/emptydb/Tests/check.stable.out
        sql/test/emptydb/Tests/check.stable.out.32bit
        sql/test/emptydb/Tests/check.stable.out.int128
        sql/test/sys-schema/Tests/systemfunctions.stable.out
        sql/test/sys-schema/Tests/systemfunctions.stable.out.int128
        sql/test/testdb-upgrade-chain-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade-chain/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade-hge/Tests/upgrade.stable.out.int128
        sql/test/testdb-upgrade/Tests/upgrade.stable.out
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.32bit
        sql/test/testdb-upgrade/Tests/upgrade.stable.out.int128
Branch: default
Log Message:

No magic numbers: use strings to set logging levels/components/etc.


diffs (truncated from 1316 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -10918,13 +10918,13 @@ stdout of test 'MAL-signatures` in direc
 [ "logging",   "compinfo",     "pattern logging.compinfo() (id:bat[:int], 
component:bat[:str], log_level:bat[:str]) ", "TRACERcomp_info;",     "Returns 
in the form of a SQL result-set all the components along with their ID\nand the 
their current logging level being set" ]
 [ "logging",   "flush",        "command logging.flush():void ",        
"TRACERflush_buffer;",  "Flush the buffer"      ]
 [ "logging",   "resetadapter", "command logging.resetadapter():void ", 
"TRACERreset_adapter;", "Resets the adapter back to the default"        ]
-[ "logging",   "resetcomplevel",       "command 
logging.resetcomplevel(comp:int):void ",       "TRACERreset_component_level;", 
"Resets the log level for a specific component back to the default"     ]
+[ "logging",   "resetcomplevel",       "command 
logging.resetcomplevel(comp:str):void ",       "TRACERreset_component_level;", 
"Resets the log level for a specific component back to the default"     ]
 [ "logging",   "resetflushlevel",      "command logging.resetflushlevel():void 
",      "TRACERreset_flush_level;",     "Resets the flush level back to the 
default"    ]
-[ "logging",   "resetlayerlevel",      "command 
logging.resetlayerlevel(layer:int):void ",     "TRACERreset_layer_level;",     
"Resets the log level for a specific layer back to the default" ]
-[ "logging",   "setadapter",   "command logging.setadapter(adapter:int):void 
",        "TRACERset_adapter;",   "Sets the adapter"      ]
-[ "logging",   "setcomplevel", "command logging.setcomplevel(comp:int, 
lvl:int):void ",        "TRACERset_component_level;",   "Sets the log level for 
a specific component"   ]
-[ "logging",   "setflushlevel",        "command 
logging.setflushlevel(lvl:int):void ", "TRACERset_flush_level;",       "Sets 
the flush level"  ]
-[ "logging",   "setlayerlevel",        "command 
logging.setlayerlevel(layer:int, lvl:int):void ",      
"TRACERset_layer_level;",       "Sets the log level for a specific layer"       
]
+[ "logging",   "resetlayerlevel",      "command 
logging.resetlayerlevel(layer:str):void ",     "TRACERreset_layer_level;",     
"Resets the log level for a specific layer back to the default" ]
+[ "logging",   "setadapter",   "command logging.setadapter(adapter:str):void 
",        "TRACERset_adapter;",   "Sets the adapter"      ]
+[ "logging",   "setcomplevel", "command logging.setcomplevel(comp:str, 
lvl:str):void ",        "TRACERset_component_level;",   "Sets the log level for 
a specific component"   ]
+[ "logging",   "setflushlevel",        "command 
logging.setflushlevel(lvl:str):void ", "TRACERset_flush_level;",       "Sets 
the flush level"  ]
+[ "logging",   "setlayerlevel",        "command 
logging.setlayerlevel(layer:str, lvl:str):void ",      
"TRACERset_layer_level;",       "Sets the log level for a specific layer"       
]
 [ "mal",       "manifold",     "pattern mal.manifold(mod:str, fcn:str, 
a:any...):bat[:any] ",  "MANIFOLDevaluate;",    ""      ]
 [ "mal",       "multiplex",    "pattern mal.multiplex(mod:str, fcn:str, 
a:any...):any... ",    "MANIFOLDremapMultiplex;",      ""      ]
 [ "manual",    "functions",    "pattern manual.functions() (mod:bat[:str], 
fcn:bat[:str], sig:bat[:str], adr:bat[:str], com:bat[:str]) ",      
"MANUALcreateOverview;",        "Produces a table with all MAL functions known" 
]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -15338,13 +15338,13 @@ stdout of test 'MAL-signatures` in direc
 [ "logging",   "compinfo",     "pattern logging.compinfo() (id:bat[:int], 
component:bat[:str], log_level:bat[:str]) ", "TRACERcomp_info;",     "Returns 
in the form of a SQL result-set all the components along with their ID\nand the 
their current logging level being set" ]
 [ "logging",   "flush",        "command logging.flush():void ",        
"TRACERflush_buffer;",  "Flush the buffer"      ]
 [ "logging",   "resetadapter", "command logging.resetadapter():void ", 
"TRACERreset_adapter;", "Resets the adapter back to the default"        ]
-[ "logging",   "resetcomplevel",       "command 
logging.resetcomplevel(comp:int):void ",       "TRACERreset_component_level;", 
"Resets the log level for a specific component back to the default"     ]
+[ "logging",   "resetcomplevel",       "command 
logging.resetcomplevel(comp:str):void ",       "TRACERreset_component_level;", 
"Resets the log level for a specific component back to the default"     ]
 [ "logging",   "resetflushlevel",      "command logging.resetflushlevel():void 
",      "TRACERreset_flush_level;",     "Resets the flush level back to the 
default"    ]
-[ "logging",   "resetlayerlevel",      "command 
logging.resetlayerlevel(layer:int):void ",     "TRACERreset_layer_level;",     
"Resets the log level for a specific layer back to the default" ]
-[ "logging",   "setadapter",   "command logging.setadapter(adapter:int):void 
",        "TRACERset_adapter;",   "Sets the adapter"      ]
-[ "logging",   "setcomplevel", "command logging.setcomplevel(comp:int, 
lvl:int):void ",        "TRACERset_component_level;",   "Sets the log level for 
a specific component"   ]
-[ "logging",   "setflushlevel",        "command 
logging.setflushlevel(lvl:int):void ", "TRACERset_flush_level;",       "Sets 
the flush level"  ]
-[ "logging",   "setlayerlevel",        "command 
logging.setlayerlevel(layer:int, lvl:int):void ",      
"TRACERset_layer_level;",       "Sets the log level for a specific layer"       
]
+[ "logging",   "resetlayerlevel",      "command 
logging.resetlayerlevel(layer:str):void ",     "TRACERreset_layer_level;",     
"Resets the log level for a specific layer back to the default" ]
+[ "logging",   "setadapter",   "command logging.setadapter(adapter:str):void 
",        "TRACERset_adapter;",   "Sets the adapter"      ]
+[ "logging",   "setcomplevel", "command logging.setcomplevel(comp:str, 
lvl:str):void ",        "TRACERset_component_level;",   "Sets the log level for 
a specific component"   ]
+[ "logging",   "setflushlevel",        "command 
logging.setflushlevel(lvl:str):void ", "TRACERset_flush_level;",       "Sets 
the flush level"  ]
+[ "logging",   "setlayerlevel",        "command 
logging.setlayerlevel(layer:str, lvl:str):void ",      
"TRACERset_layer_level;",       "Sets the log level for a specific layer"       
]
 [ "mal",       "manifold",     "pattern mal.manifold(mod:str, fcn:str, 
a:any...):bat[:any] ",  "MANIFOLDevaluate;",    ""      ]
 [ "mal",       "multiplex",    "pattern mal.multiplex(mod:str, fcn:str, 
a:any...):any... ",    "MANIFOLDremapMultiplex;",      ""      ]
 [ "manual",    "functions",    "pattern manual.functions() (mod:bat[:str], 
fcn:bat[:str], sig:bat[:str], adr:bat[:str], com:bat[:str]) ",      
"MANUALcreateOverview;",        "Produces a table with all MAL functions known" 
]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -307,13 +307,13 @@ char *GDKtracer_get_timestamp(const char
 gdk_return GDKtracer_log(LOG_LEVEL level, const char *fmt, ...) 
__attribute__((format(printf, 2, 3)));
 void GDKtracer_reinit_basic(int sig);
 gdk_return GDKtracer_reset_adapter(void);
-gdk_return GDKtracer_reset_component_level(int comp);
+gdk_return GDKtracer_reset_component_level(const char *comp);
 gdk_return GDKtracer_reset_flush_level(void);
-gdk_return GDKtracer_reset_layer_level(int layer);
-gdk_return GDKtracer_set_adapter(int adapter);
-gdk_return GDKtracer_set_component_level(int comp, int lvl);
-gdk_return GDKtracer_set_flush_level(int lvl);
-gdk_return GDKtracer_set_layer_level(int layer, int lvl);
+gdk_return GDKtracer_reset_layer_level(const char *layer);
+gdk_return GDKtracer_set_adapter(const char *adapter);
+gdk_return GDKtracer_set_component_level(const char *comp, const char *lvl);
+gdk_return GDKtracer_set_flush_level(const char *lvl);
+gdk_return GDKtracer_set_layer_level(const char *layer, const char *lvl);
 gdk_return GDKtracer_stop(void);
 size_t GDKuniqueid(size_t offset);
 gdk_return GDKupgradevarheap(BAT *b, var_t v, bool copyall, bool mayshare) 
__attribute__((__warn_unused_result__));
@@ -1920,13 +1920,13 @@ str TKNZRtakeOid(Client cntxt, MalBlkPtr
 str TRACERcomp_info(Client cntxt, MalBlkPtr mb, MalStkPtr stk, InstrPtr pci);
 str TRACERflush_buffer(void *ret);
 str TRACERreset_adapter(void *ret);
-str TRACERreset_component_level(void *ret, int *comp_id);
+str TRACERreset_component_level(void *ret, str *comp_id);
 str TRACERreset_flush_level(void *ret);
-str TRACERreset_layer_level(void *ret, int *layer_id);
-str TRACERset_adapter(void *ret, int *adapter_id);
-str TRACERset_component_level(void *ret, int *comp_id, int *lvl_id);
-str TRACERset_flush_level(void *ret, int *lvl_id);
-str TRACERset_layer_level(void *ret, int *layer_id, int *lvl_id);
+str TRACERreset_layer_level(void *ret, str *layer_id);
+str TRACERset_adapter(void *ret, str *adapter_id);
+str TRACERset_component_level(void *ret, str *comp_id, str *lvl_id);
+str TRACERset_flush_level(void *ret, str *lvl_id);
+str TRACERset_layer_level(void *ret, str *layer_id, str *lvl_id);
 int TRACEtable(Client cntxt, BAT **r);
 str TRNglobal_abort(bit *ret);
 str TRNglobal_commit(bit *ret);
diff --git a/gdk/gdk_tracer.c b/gdk/gdk_tracer.c
--- a/gdk/gdk_tracer.c
+++ b/gdk/gdk_tracer.c
@@ -29,6 +29,14 @@ LOG_LEVEL LVL_PER_COMPONENT[] = {
        FOREACH_COMP(GENERATE_LOG_LEVEL)
 };
 
+const char *ADAPTER_STR[] = {
+       FOREACH_ADPTR(GENERATE_STRING)
+};
+
+const char *LAYER_STR[] = {
+       FOREACH_LAYER(GENERATE_STRING)
+};
+
 const char *COMPONENT_STR[] = {
        FOREACH_COMP(GENERATE_STRING)
 };
@@ -66,58 +74,6 @@ static gdk_return
 }
 
 
-static bool
-_GDKtracer_adapter_exists(int adapter)
-{
-       if (adapter == ADAPTERS_COUNT)
-               return false;
-
-       if (adapter >= 0 && adapter < ADAPTERS_COUNT)
-               return true;
-
-       return false;
-}
-
-
-static bool
-_GDKtracer_level_exists(int lvl)
-{
-       if (lvl == LOG_LEVELS_COUNT)
-               return false;
-
-       if (lvl >= 0 && lvl < LOG_LEVELS_COUNT)
-               return true;
-
-       return false;
-}
-
-
-static bool
-_GDKtracer_layer_exists(int layer)
-{
-       if (layer == LAYERS_COUNT)
-               return false;
-
-       if (layer >= 0 && layer < LAYERS_COUNT)
-               return true;
-
-       return false;
-}
-
-
-static bool
-_GDKtracer_component_exists(int comp)
-{
-       if (comp == COMPONENTS_COUNT)
-               return false;
-
-       if (comp >= 0 && comp < COMPONENTS_COUNT)
-               return true;
-
-       return false;
-}
-
-
 // Candidate for 'gnu_printf' format attribute 
[-Werror=suggest-attribute=format]
 static int _GDKtracer_fill_tracer(gdk_tracer *sel_tracer, const char *fmt, 
va_list va)
        __attribute__((format(printf, 2, 0)));
@@ -180,6 +136,68 @@ static gdk_return
        return GDK_SUCCEED;
 }
 
+static inline ADAPTER
+find_adapter(const char *adptr)
+{
+       if (adptr == NULL)
+               return ADAPTERS_COUNT;
+
+       for (int i = 0; i < (int) ADAPTERS_COUNT; i++) {
+               if (strcasecmp(ADAPTER_STR[i], adptr) == 0) {
+                       return (ADAPTER) i;
+               }
+       }
+       return ADAPTERS_COUNT;
+}
+
+static inline LOG_LEVEL
+find_level(const char *lvl)
+{
+       if (lvl == NULL)
+               return LOG_LEVELS_COUNT;
+
+       for (int i = 0; i < (int) LOG_LEVELS_COUNT; i++) {
+               if (strcasecmp(LEVEL_STR[i], lvl) == 0) {
+                       return (LOG_LEVEL) i;
+               }
+       }
+       return LOG_LEVELS_COUNT;
+}
+
+static inline LAYER
+find_layer(const char *layer)
+{
+       if (layer == NULL)
+               return LAYERS_COUNT;
+       for (int i = 0; i < (int) LAYERS_COUNT; i++) {
+               if (strcasecmp(LAYER_STR[i], layer) == 0) {
+                       return (LAYER) i;
+               }
+       }
+       return LAYERS_COUNT;
+}
+
+static inline COMPONENT
+find_component(const char *comp)
+{
+       /* special case for the (currently) three components that end in _ */
+       if (comp == NULL || *comp == 0 || comp[strlen(comp) - 1] == '_')
+               return COMPONENTS_COUNT;
+       if (strcasecmp(comp, "io") == 0)
+               comp = "io_";
+       else if (strcasecmp(comp, "bat") == 0)
+               comp = "bat_";
+       else if (strcasecmp(comp, "check") == 0)
+               comp = "check_";
+
+       for (int i = 0; i < (int) COMPONENTS_COUNT; i++) {
+               if (strcasecmp(COMPONENT_STR[i], comp) == 0) {
+                       return (COMPONENT) i;
+               }
+       }
+       return COMPONENTS_COUNT;
+}
+
 
 
 /**
@@ -235,77 +253,82 @@ GDKtracer_stop(void)
        return GDKtracer_flush_buffer();
 }
 
-
 gdk_return
-GDKtracer_set_component_level(int comp, int lvl)
+GDKtracer_set_component_level(const char *comp, const char *lvl)
 {
-       LOG_LEVEL level = (LOG_LEVEL) lvl;
+       LOG_LEVEL level = find_level(lvl);
+       COMPONENT component = find_component(comp);
 
-       if (LVL_PER_COMPONENT[comp] == level)
-               return GDK_SUCCEED;
-
-       if (!_GDKtracer_component_exists(comp))
+       if (level == LOG_LEVELS_COUNT) {
+               GDKerror("%s: unknown level\n", __func__);
                return GDK_FAIL;
-
-       if (!_GDKtracer_level_exists(lvl))
+       }
+       if (component == COMPONENTS_COUNT) {
+               GDKerror("%s: unknown component\n", __func__);
                return GDK_FAIL;
+       }
 
-       LVL_PER_COMPONENT[comp] = level;
+       LVL_PER_COMPONENT[component] = level;
 
        return GDK_SUCCEED;
 }
 
 
 gdk_return
-GDKtracer_reset_component_level(int comp)
+GDKtracer_reset_component_level(const char *comp)
 {
-       if (LVL_PER_COMPONENT[comp] == DEFAULT_LOG_LEVEL)
-               return GDK_SUCCEED;
+       COMPONENT component = find_component(comp);
 
-       if (!_GDKtracer_component_exists(comp))
+       if (component == COMPONENTS_COUNT) {
+               GDKerror("%s: unknown component\n", __func__);
                return GDK_FAIL;
-
-       LVL_PER_COMPONENT[comp] = DEFAULT_LOG_LEVEL;
+       }
+       LVL_PER_COMPONENT[component] = DEFAULT_LOG_LEVEL;
        return GDK_SUCCEED;
 }
 
 
 gdk_return
-GDKtracer_set_layer_level(int layer, int lvl)
+GDKtracer_set_layer_level(const char *layer, const char *lvl)
 {
-       if (!_GDKtracer_layer_exists(layer))
+       LAYER lyr = find_layer(layer);
+       LOG_LEVEL level = find_level(lvl);
+       if (level == LOG_LEVELS_COUNT) {
+               GDKerror("%s: unknown level\n", __func__);
                return GDK_FAIL;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to