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